3

我想删除在屏幕截图图像中包含文本的矩形等,以便我可以执行光学字符识别以从屏幕截图中获取准确的文本。

背景:

我这样做是为了从遗留应用程序中提取数据以用于其他应用程序。这是获取此数据的唯一方法,因为相关文件是封闭的、专有的、二进制格式。

我将使用 AutoItScript 驱动应用程序在其 UI 中显示数据,然后我将截屏并将其提供给 tesseract。

我已经在自动化 UI 方面取得了一些成功,并且已经能够使用 tesseract 从位图中获取纯 ascii 文本。

有几篇 AutoItScripr 论坛文章讨论了它与 tesseract/OCR 的使用,但不是专门针对我的问题。 http://www.autoitscript.com/forum/index.php?s=6c32c3ece12756e635a619cdf175eff9&showforum=2

我需要做什么

有一些细长的 1 像素宽的矩形紧密地包围了一些文本,当输入到 tesseract 时,它会像我一样看到它们,例如矩形的垂直线。

关于如何删除矩形或最佳实践的任何想法?

我在问是否有基于通用命令行的工具集来覆盖矩形,例如,在 .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 上查看过的相关问题

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

4

1 回答 1

1

可能不会有一个免费的现成解决方案,但是自己编写代码应该不会太难,因为可以安全地假设矩形永远不会是字体字母表中的有效字符,因此可以安全地删除. 它还有助于您的所有矩形边框正好是一个像素宽。

So search for a contiguous horizontal line that is joined to another, parallel line of the same length by exactly two vertical lines. Repeat the search until you find all the rectangles in the image then render them all transparent with Graphics.DrawRectangle and Pens.Transparent. Don't render a rectangle transparent until you've finished searching else you risk wiping out parts of overlapped rectangles before you've found them. This is just a starter suggestion, I haven't implemented or debugged this algorithm.

于 2010-04-27T14:33:22.953 回答