Tesseract OCR配置和图像处理

时间:2017-12-27 18:20:32

标签: c# image-processing tesseract

我一直在阅读各种帖子和来自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 logiciel& Profil :

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

编辑:有了一些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);

我一直在寻找如何提供此类配置的示例,但我只发现了简短的,未详细说明的文字解释。

1 个答案:

答案 0 :(得分:2)

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

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