Tesseract OCR配置和图像处理

问题描述 投票:0回答:1

我一直在阅读一些帖子和来自Tesseract .Net包装器的各种图像“类型”的错误输出,但我无法找到解决我的错误输出。

这是我要解析的图片:Image to parse

如您所见,有不同的字体,大小,前景和背景。我尝试对其进行灰度级渲染并按不同的数量进行升级,但没有任何内容可以正确解析整个图像。

TesseractEngine ocr = new TesseractEngine(Path.Combine(Environment.CurrentDirectory, "tessdata"), "fra", EngineMode.Default);
ocr.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZÉÈ0123456789:'");
Page pg = ocr.Process(image.ToGrayscale().ScaleByPercent(200));
MessageBox.Show(pg.GetText());

使用此代码(让我知道ToGrayScale()ScaleByPercent(...)的细节是否有帮助),这是我得到的输出:

8300QÉMQI09'0'9I

PIOII':

这似乎对应于Bacc. génie logicielProfil :

话虽如此,我对图像转换知之甚少,所以示例或提示会有很大帮助,但我完全愿意在必要时深入研究链接的东西/文档。我该如何处理这样的图像?


编辑:有一些manips(由@Yves Daoust建议)我设法达到了这一点:

NewResults

然而,输出(右侧)还不是很完美。我一直在努力为Tesseract提供配置,以便它只接受某个列表中的单词。这是我的尝试:

var initVars = new Dictionary<string, object>() {
            { "load_system_dawg", false },
            { "user_words_suffix", "fra.user-words" },
            { "language_model_penalty_non_freq_dict_word", 1 },
            { "language_model_penalty_non_dict_word", 1 }
        };
TesseractEngine ocr = new TesseractEngine(Path.Combine(Environment.CurrentDirectory, "tessdata"), "fra", EngineMode.Default, 
            Enumerable.Empty<string>(), initVars, false);

我一直在寻找如何提供这种配置的例子,但我只发现了简短,无详细的文本解释。

c# image-processing tesseract
1个回答
2
投票

你可以通过自己提取角色来在很大程度上帮助Tesseract,这在这里非常简单:只保留白色像素(以及其他颜色的形式)。


顺便说一句,角色是如此可预测,你可以自己做识别(通过简单的像素比较),没有Tesseract的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.