我有这张图片:
我想使用Python将其转换为字符串,我以为这不是很难。然后我找到了Tesseract和一个用于Python脚本的Tesseract封装程序。
我开始读取图像,一直很顺利,直到我尝试读取这张图片。我是否需要训练它来识别那种特定的字体?你们有什么关于那种特定字体的想法吗?或者我是否可以使用Python中更好的OCR引擎完成这项工作。
编辑:也许我可以在数字周围制作某种向量,然后以较大的尺寸重新绘制它们?Tesseract OCR越大的图片读起来越好(毫不意外)。
我有这张图片:
我想使用Python将其转换为字符串,我以为这不是很难。然后我找到了Tesseract和一个用于Python脚本的Tesseract封装程序。
我开始读取图像,一直很顺利,直到我尝试读取这张图片。我是否需要训练它来识别那种特定的字体?你们有什么关于那种特定字体的想法吗?或者我是否可以使用Python中更好的OCR引擎完成这项工作。
编辑:也许我可以在数字周围制作某种向量,然后以较大的尺寸重新绘制它们?Tesseract OCR越大的图片读起来越好(毫不意外)。
只需为这10个数字和一个“.”训练引擎即可。确保在OCR之前将图像改为灰度。
训练很困难,这并不是真正需要的。无论使用哪种脚本,O和0以及l和1之间的区别都会很难辨认。如果上下文允许,仅在数字之间选择可以极大地简化OCR的问题。
我对tesseract感兴趣的原因是要处理大量来自旧政府报告的数字。在这种情况下,字符集将类似于“0123456789”。根据eric_taj于2007-03-21在tesseract的旧(sourceforge)新闻组中的评论,您可以修改classify / intproto.cpp中的Template-> IndexFor和Templates-> ClassIdFor,以遮盖不允许的字符。我稍微修改了这种方法,以便在运行时通过环境变量读取允许的字符集,从而可以动态调整允许的集合。
那看起来像是Eurostile字体。是的,您将需要针对源图像中使用的每种不同字体进行训练。
对于通用的OCR来说,识别小屏幕字体可能会很困难,因为它是针对从纸张上扫描的大型平滑字体进行优化的。
您可以尝试使用特殊的截图OCR,例如Textract SDK。它将收集所有本地字体,并通过简单地逐个字符匹配来提供100%准确的识别。