Python Tesseract无法识别此字体。

10

我有这张图片:

alt text

我想使用Python将其转换为字符串,我以为这不是很难。然后我找到了Tesseract和一个用于Python脚本的Tesseract封装程序。

我开始读取图像,一直很顺利,直到我尝试读取这张图片。我是否需要训练它来识别那种特定的字体?你们有什么关于那种特定字体的想法吗?或者我是否可以使用Python中更好的OCR引擎完成这项工作。

编辑:也许我可以在数字周围制作某种向量,然后以较大的尺寸重新绘制它们?Tesseract OCR越大的图片读起来越好(毫不意外)。

5个回答

11

只需为这10个数字和一个“.”训练引擎即可。确保在OCR之前将图像改为灰度。


5

训练很困难,这并不是真正需要的。无论使用哪种脚本,O和0以及l和1之间的区别都会很难辨认。如果上下文允许,仅在数字之间选择可以极大地简化OCR的问题。

我对tesseract感兴趣的原因是要处理大量来自旧政府报告的数字。在这种情况下,字符集将类似于“0123456789”。根据eric_taj于2007-03-21在tesseract的旧(sourceforge)新闻组中的评论,您可以修改classify / intproto.cpp中的Template-> IndexFor和Templates-> ClassIdFor,以遮盖不允许的字符。我稍微修改了这种方法,以便在运行时通过环境变量读取允许的字符集,从而可以动态调整允许的集合。


1
最近Tesseract OCR讨论组上关于这个话题的讨论很多。你需要使用一个只有数字的“语言”。很多人以前就是这样训练引擎的。看起来你正在试图破解验证码数据保护方案... 唉,唉。

3
不是针对我个人,更多是为了客户,但这就是基本内容。虽然我认为信息本应该是自由的..但那是另一个争论话题了。 - codygman
1
我同意信息应该是免费的,但是我认为你正在做的事情可能会危及个人数据的隐私,我认为这些应该得到保护(虽然随着 SSL 被破解,这种保护也不会持续太久)。 - sventechie

0

那看起来像是Eurostile字体。是的,您将需要针对源图像中使用的每种不同字体进行训练。


0

对于通用的OCR来说,识别小屏幕字体可能会很困难,因为它是针对从纸张上扫描的大型平滑字体进行优化的。

您可以尝试使用特殊的截图OCR,例如Textract SDK。它将收集所有本地字体,并通过简单地逐个字符匹配来提供100%准确的识别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接