如何为OCR软件提供最佳成功机会?
我正在使用Tesseract OCR(通过pytesser)和PIL(Python图像库)来自动测试应用程序。如何为OCR软件提供最佳成功机会?
我检查显示的文字是好的,通过制作截图并获取文本感谢tesseract。
我在开始时遇到了一些问题,由于PIL的双三次插值,我增加了屏幕截图的大小,所以似乎效果更好。
不幸的是,我仍然有一些错误,比如'0'和'O'之间的混淆。我可以想象,未来我会有其他类似的问题。
我想知道是否有一些技术来准备图像,以帮助OCR。任何想法都欢迎。
预先感谢
无耻的插头与免责声明:my company包正方体用于.NET
正方体是一个不错的OCR引擎。它可能会错过很多东西,很容易被非文字混淆。你可以做的最好的事情是确保它只有文本。接下来最好的事情是给它一些理智的二值化(自适应或动态阈值到达那里)或灰度,并让它尝试进行二值化。
我同意这一点。它被对话框边缘弄糊涂并转换为'I'。当它获取纯文字图像时,它会变得很好。二值化也是一个好主意。谢谢。 – luc 2009-08-27 07:01:07
对于0和O之间进行区分,一个简单的解决方案是选择两个区分的字体(例如:0在其中间破折号或点)。你的应用程序可以接受吗?
另一种解决方案是在对文本进行逐字符分析之后应用基于字典的步骤 - 将识别的文本提供给某种形式的拼写检查器或验证器以区分难字符。
例如,一个圆形符号后跟其他数字最可能是零,而相同的符号后跟字母最有可能是大写字母o。这是一个微不足道的例子,但它显示了如何创建更可靠的OCR系统所需的上下文。
不幸的是,我没有控制字体。你能否再详细解释一下基于词典的步骤? – luc 2009-08-26 15:49:28
即使在最好的条件下,OCR变种也会潜入你的身边。您最好的选择是设计您的测试以了解它们。
- 火车正方体认识到你的字体
- 制作图像的额外清洁和周围的字符足够的空间
- 利润:)
下面是一些真实的例子。
- 第一张图片是原始图像(croped功率计的数字)
- 第二图像稍微清理图像在GIMP,大约50%的OCR准确性正方体
- 第三图像完全清除后图像 - 100%OCR没有任何培训的认可!
如果这个问题仍然是相关的:这必须是正方体? OCR引擎(例如ABBYY)非常适合低质量的输入图像,并自动为您执行图像预处理。有一个用于OCR的REST API,它使用位于http://www.wisetrend.com/wisetrend_ocr_cloud.shtml的ABBYY引擎 - 它有免费试用版,因此您可以自己尝试一些图片 – 2010-11-09 17:03:54