首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IronOCR / Tesseract OCR识别单数

IronOCR / Tesseract OCR识别单数
EN

Stack Overflow用户
提问于 2022-03-06 23:06:05
回答 1查看 1.4K关注 0票数 1

我想使用IronOCR从屏幕截图中识别出个位数。

问题是,我的.Read()结果总是以空"“结束。

这是我的密码

代码语言:javascript
复制
        var bmpScreenshot = new Bitmap(105,
        25,
        PixelFormat.Format32bppRgb);

        var gfxScreenshot = Graphics.FromImage(bmpScreenshot);

        gfxScreenshot.CopyFromScreen(992,
        400,
        0,
        0,
        new Size(105, 25),
        CopyPixelOperation.SourceCopy);

        var ocrInput = new IronOcr.OcrInput(bmpScreenshot);
        ocrInput.EnhanceResolution();
        ocrInput.Contrast();
        ocrInput.Invert();

        var Ocr = new IronOcr.IronTesseract();
        Ocr.Configuration.WhiteListCharacters = "0123456789";

        var Result = Ocr.Read(ocrInput).Text;

用于识别的示例屏幕截图

如果我想识别两个或更多的数字,它可以正常工作(大多数情况下)。

知道该怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-14 07:32:11

免责声明:我为铁软件工作。

如果您总是期望单个字符,请尝试将TesseractPageSegmentationMode设置为SingleChar,它将图像视为单个字符。

代码语言:javascript
复制
Ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleChar;

否则,我们的工程师将测试您的示例,并在下面的图像滤波器中看到了一个成功的结果。

代码示例:

代码语言:javascript
复制
var Ocr = new IronTesseract();
Ocr.Language = OcrLanguage.Financial;
using (var Input = new OcrInput(@"F:\input.png"))
{
    Input.DeNoise();
    Input.Invert();
    //Input.DeepCleanBackgroundNoise();
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}

请注意,DeepCleanBackgroundNoise()是非常CPU密集的,因为它执行沉重的背景噪声去除。只用于极端的文档背景噪音。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71374905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档