我一直在阅读各种帖子和来自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(...)
的详细信息是否有帮助),这是我得到的输出:
8300QÉMQI09'0'9I
PIOII':
这似乎与Bacc. génie logiciel
& Profil :
。
话虽这么说,我对图像转换知之甚少,所以示例或提示会有很大帮助,但我完全愿意在必要时深入研究链接的东西/文档。我该如何处理这样的图像?
编辑:有了一些manips(由@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);
我一直在寻找如何提供此类配置的示例,但我只发现了简短的,未详细说明的文字解释。
答案 0 :(得分:2)
你可以在很大程度上通过自己提取角色来帮助Tesseract,这在这里非常简单:仅保留白色像素(以及其他颜色的形式)。
顺便说一句,角色是如此可预测,你可以自己做识别(通过简单的像素比较),没有Tesseract的帮助。