【发布时间】: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