Python Tesseract无法识别此字体

10 投票
5 回答
9081 浏览
提问于 2025-04-15 16:10

我有一张这样的图片:

alt text

我想用Python把它读成一个字符串,我本以为这不会太难。我发现了tesseract,然后又找到了一个可以在Python脚本中使用tesseract的工具。

所以我开始读取图片,效果一直很好,直到我尝试读取这一张。请问我需要为这种特定的字体进行训练吗?有没有人知道这是什么字体?或者有没有更好的OCR引擎可以和Python一起用来完成这个任务?

补充:也许我可以在数字周围做一个矢量,然后把它们重新绘制成更大的尺寸?因为更大的图片似乎能让tesseract OCR读得更好(这也不奇怪,哈哈)。

5 个回答

1

最近在tesseract OCR讨论组上,这个话题讨论得非常热烈。你需要使用一种只有数字的“语言”。很多人之前都是这样训练这个引擎的。看起来你是在试图破解一个验证码的保护机制……啧啧。

5

训练模型是很难的,而且在这里其实并不是最需要的。区分字母“O”和数字“0”,还有字母“l”和数字“1”,无论用什么脚本,这都是一件很麻烦的事。如果能限制光学字符识别(OCR)只识别数字,那问题就简单多了,前提是上下文允许这样做。

我对tesseract的兴趣主要是处理大量的数字,这些数字来自旧的政府报告。在这种情况下,字符集大概就是'0123456789'。根据2007年3月21日eric_taj在旧的(sourceforge)tesseract新闻组中的一条评论,你可以修改Templates->IndexFor和Templates->ClassIdFor这两个地方,在classify/intproto.cpp文件中屏蔽掉不允许的字符。我稍微调整了一下这个方法,让它在运行时通过环境变量读取允许的字符集,这样我就可以随时调整允许的字符了。

11

只需要把引擎训练成可以识别10个数字和一个小数点就可以了。还有,记得在进行文字识别之前,把你的图片转换成灰度图。

撰写回答