【问题标题】:Tesseract OCR configurations and image manipulationsTesseract OCR 配置和图像处理
【发布时间】:2017-12-27 18:20:32
【问题描述】:

我一直在阅读大量关于来自 Tesseract .Net 包装器的错误输出的帖子和资料,其中包含各种图像“类型”,但我无法找到解决我的错误输出的方法。

这是我要解析的图片:

如您所见,有不同的字体、大小、前景和背景。我尝试对它进行灰度化并按不同的量放大它,但没有什么能接近正确解析整个图像。

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(...) 的详细信息是否有帮助),这是我得到的输出:

8300 QÉMQ I09'0'9I

PIOII':

这似乎对应于Bacc. génie logiciel & Profil :

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


编辑:通过一些操作(@Yves Daoust 建议)我已经设法达到了这一点:

但是输出(右侧)还不是很完美。我一直在努力为 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);

我一直在寻找有关如何提供此类配置的示例,但我只找到了简短的、不详细的文字说明。

【问题讨论】:

  • 是的,我已经开始了那里提到的一些东西(很可能稍后会编辑 OP 以提供有关各种测试的更多信息)。我读过“这是将图像转换为黑白。Tesseract 在内部执行此操作,但结果可能不是最理想的,尤其是在页面背景暗度不均匀的情况下。”对于二值化并认为它是自动完成的,不是吗?

标签: c# image-processing tesseract


【解决方案1】:

您可以通过自己提取字符在很大程度上帮助 Tesseract,这在此处非常简单:仅保留白色像素(对于表单的其他部分保留其他颜色)。


顺便说一句,这些字符非常可预测,您可以自己进行识别(通过简单的像素比较),无需 Tesseract 的帮助。

【讨论】:

  • 哇,一个简单但合乎逻辑的答案!我会试试看,看看效果如何。我认为逐像素是一种超级慢的方法,但也许我也会试一试(性能实际上很重要,但并不重要)
  • @Mat:要从 C# 访问像素,请确保使用 LockBits/UnlockBits 机制,而不是 GetPixel/SetPixel。性能差异很大。
  • 到目前为止,我已经设法提取了单一颜色,但使用该方法的结果准确率约为 50-60%。我将尝试添加更多内容并稍后编辑 OP。
  • @Mat:生成的图像在字符周围是否干净?
  • @Mat:您应该使用该特定字体训练 Tesseract。正如我已经说过的,你也可以不用 Tesseract。角色很感人,但你知道它们的大小,所以拆分应该不是问题。
猜你喜欢
  • 2019-01-12
  • 2014-03-30
  • 2017-07-17
  • 2019-10-16
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 2017-09-21
相关资源
最近更新 更多