OCR:如何提高准确性 - 现有的图像处理库可以去除非文本“家具”、形状等以避免混淆OCR?

3
我想要移除屏幕截图中包围文本的矩形等元素,以便进行光学字符识别并准确提取文本。
背景:
我这样做是为了从旧应用程序中提取数据以供其他应用程序使用。由于相关文件采用封闭的专有二进制格式,因此这是获取数据的唯一方式。
我将使用AutoItScript驱动应用程序显示其UI中的数据,然后对此进行屏幕截图,并将其馈送给tesseract。
我已经在自动化UI方面取得了一些成功,并且已经能够使用tesseract从位图中获取纯ASCII文本。
有几篇AutoItScripr论坛文章讨论了它与tesseract / OCR的使用,但没有针对我的问题。
需要做什么:
有一些细长的、1像素宽的矩形紧密地包围着一些文本,当输入到Tesseract时,例如对于矩形的竖直线,它会将其视为I。
你有什么想法可以去除这些矩形或最佳实践吗?
我想知道是否有一种通用的基于命令行的工具集来覆盖矩形,例如在.png文件中。然后我可以将.png通过此工具处理,再将其传递给Tesseract。
我使用的Tesseract版本/设置的详细信息如下:
请前往此处:http://code.google.com/p/tesseract-ocr/downloads/list - 要使Tesseract能够运行并将您的位图文本识别为ASCII文本,请使用tesseract-2.00.eng.tar.gz(撰写时的当前版本为:“Tesseract的英语语言数据(2.00及更高版本)2007年7月989 KB 84845”)。
我已经查看了Stack Overflow上相关的问题。

在这些问题中,我的问题没有完全得到回答或者正在销售商业解决方案。我不想在这个阶段考虑商业解决方案。

1个回答

1

这可能不会有一个免费的现成解决方案,但编写自己的程序应该不太难,因为可以合理地假设在字体的字母表中矩形永远不会是一个有效字符,因此可以安全地将其删除。同时,所有矩形边框都恰好宽度为一个像素,这也是一个帮助。

因此,搜索具有以下特征的连续水平线:通过恰好两个垂直线与相同长度的另一条平行线连接。重复搜索,直到找到图像中的所有矩形,然后使用 Graphics.DrawRectangle Pens.Transparent 将它们全部渲染为透明。在完成搜索之前不要使矩形透明,否则可能在找到它们之前擦除重叠矩形的部分。这只是一个入门建议,我没有实现或调试过这个算法。


+1 这看起来像是 C# 代码。很好。但是,除了购买 Visual Studio,是否有免费的开箱即用的编译替代方案呢?这个问题被接受是因为“搜索一个与另一条相同长度的平行线通过恰好两条垂直线连接的连续水平线”的技术看起来是一种有用的解决问题的方法。 - therobyouknow
1
是的,我在考虑C#。你知道VS Express是免费的,对吧?http://www.microsoft.com/express/ - Ed Guiness
在评论中点赞+1,感谢@Ed Guiness - 最新的免费版VS可从此处获取:https://visualstudio.microsoft.com/vs/community/ - therobyouknow

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