我在用 超立方 OCR (通过 皮特塞尔)和 PIL(Python 图像库),用于应用程序的自动化测试。

我通过制作屏幕截图并通过 tesseract 获取文本来检查显示的文本是否正常。

一开始我遇到了一些问题,但由于 PIL 的双三次插值,我增加了屏幕截图的大小,所以它似乎工作得更好。

不幸的是,我仍然有一些错误,比如混淆了“0”和“O”。我可以想象将来我还会遇到其他类似的问题。

我想知道是否有一些准备图像的技术来帮助 OCR。任何想法都受到欢迎。

提前致谢

有帮助吗?

解决方案

无耻的插头与免责声明:我公司包正方体在.NET中使用

超正方体是一个行OCR引擎。它可能会错过很多东西,很容易得到非文本混淆。你可以为它做的最好的事情是确保它只是变得文本。下一个最好的办法是给它东西三立二值化(自适应或动态阈值到那里)或灰度,让它尝试做二值化。

其他提示

  1. 训练 tesseract 识别你的字体
  2. 使图像更加干净,并且在字符周围有足够的可用空间
  3. 利润 :)

以下是一些现实世界的例子。

  • 第一张图像是原始图像(裁剪后的功率计数字)
  • 第二张图像是在 GIMP 中稍微清理过的图像,在 tesseract 中 OCR 准确率约为 50%
  • 第三张图像是完全干净的图像 - 100% OCR 识别,无需任何培训!

enter image description here enter image description here enter image description here

即使最好的条件OCR变种会偷袭你下。你最好的选择将是设计你的测试,以了解他们的。

有关0和O之间进行区分,一个简单的解决方案是选择区分字体两者(例如:0在其中间破折号或点)。请问,在您的应用程序是可以接受的?

另一种解决方案是应用文本的字符逐字符分析之后基于字典的步骤 - 将所识别的文本到某种形式的拼写检查或验证器的困难的字符之间进行区分。

例如,圆形符号随后其它数目是最有可能是零,而在同一符号,随后是字母最有可能是大写的O。这是一个简单的例子,但它表明上下文如何需要使更可靠的OCR系统。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top