【问题标题】:Improve tesseract results (pytesseract)改善 tesseract 结果 (pytesseract)
【发布时间】:2018-04-18 04:55:00
【问题描述】:

我一直在从 TMS-like 服务器下载图块,其中显示了一些带有地理数据的“谷歌图块”。这些数据是法国的乡镇,根据地图的图例设置了一些特定的颜色。

我编写了一个算法,主要使用 PIL 来处理图块(作为图片),然后再将它们呈现给 tesseract(使用 pytesseract)。最后,知道了瓦片的位置(然后知道哪些乡镇可能在该区域内),我使用fuzzywuzzy process.extractBests 来尝试识别找到了哪个乡镇。

到目前为止,一些没有处理任何来自 tesseract 的结果的图片对我来说似乎还不错(虽然它并不完美,但你可以清楚地阅读法语名称“Sainte Honorine de Ducy”)

我应该准确地说,在这种情况下,原始图块大约为 1500x3000 像素(我已经扩展了图块的大小)。

我还修改了 pytesseract 以传递文档中提到的“集市”关键字以及包含该地区乡镇的自定义“用户词”。也就是说,我只能在tesseract 1 documentation 中找到“集市”参考,没有比最新文档中的链接更好的了。事实上,我似乎记得某处有一篇文章说它是文档中的一个错误......不管它的价值是什么,它似乎并没有改变这里的结果。

你有什么建议吗?尤其是,您认为图片的质量是否足以期待可靠的结果?

我对使用这些特殊字体自己训练 tesseract 几乎一无所知。考虑到这一点(而且我不管理数据源,我什至不知道使用什么字体......),我希望你可能有比采取这种(巨大)飞跃更好的建议......

PS:我知道我可能不应该在没有任何代码的情况下发布这个问题,但我更需要在这里获得全球指导......无论如何我都会发布任何所需的代码!

【问题讨论】:

    标签: tesseract python-tesseract


    【解决方案1】:

    我认为问题在于文本与图像大小相比太小了。

    您应该应用更多的图像转换来找到文本所在的更精确区域,尝试使用 morphological transformations 和文本区域的 find the contours。也可以看看this教程,它是用OpenCV的。

    我尝试使用 GIMP 裁剪图像,然后将其调整为更大一点:

    pytesseract 的结果是:

    Saiptnmnorine-de-Ducy
    

    这是可以接受的,通过使用fuzzywuzzy 进行一些其他处理,您可以获得正确的名称。

    【讨论】:

    • 谢谢,我今晚试试。尽管您认为可以接受的结果可能取决于该地区...(由于法国的历史,我们可能有(非常)紧密命名的乡镇作为邻居。我曾经住在两个名为“Cerny-les-Bucy”的村庄附近和'Bucy-les-Cerny':这对于fuzzywuzzy来说仍然很棘手,我现在不得不设置一个非常高的分界线......)
    • 您能确认一下图片的大小/格式+ tesseract 的版本吗?重新采样图片后的事件,我只得到了令人失望的结果('SaipneJ-tonorineodeoucy''Saipæ+fionoñne-de0ucy''Saipmflorinedemcy''&ipæHonoñne—de0ucy',取决于图片的大小和语言设置:默认为 fra)。
    • 图片为 500x93。我有 Tesseract 3.05.00。你试过--psm 7(单个文本行)或--psm 8(单个单词)吗?
    • 呃,没关系...似乎我调整它的大小有点太大了:一旦我降低了调整大小的比例,tesseract 处理得更好。不过有点出乎意料,对于其他一些乡镇,我在相同级别的缩放下得到了完美的结果……我会尝试用各种图片告诉你。
    • 抱歉,这可能需要一些时间:这些数据包括气象数据(即下雨数据,目前整个法国都是晴天......)
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2015-03-07
    • 2019-12-07
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多