2

我正在使用Tesseract OCR(通过pytesser)和 PIL(Python 图像库)对应用程序进行自动化测试。

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

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

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

我想知道是否有一些技术可以准备图像以帮助 OCR。欢迎任何想法。

提前致谢

4

4 回答 4

1

无耻的插件和免责声明: 我的公司打包 Tesseract 以在 .NET 中使用

Tesseract 是一个不错的 OCR 引擎。它可能会遗漏很多内容,并且很容易被非文本混淆。您可以为它做的最好的事情是确保它只获取文本。下一个最好的事情是给它一些合理的二值化(到达那里的自适应或动态阈值)或灰度,并让它尝试进行二值化。

于 2009-08-26T18:56:15.660 回答
1
  1. 训练 tesseract 识别你的字体
  2. 使图像更加干净,字符周围有足够的可用空间
  3. 利润 :)

这里有几个真实世界的例子。

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

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

于 2013-11-05T12:17:16.937 回答
0

为了区分 0 和 O,一个简单的解决方案是选择一种可以区分两者的字体(例如:0 中间有一个破折号或圆点)。这在您的应用程序中可以接受吗?

另一种解决方案是在对文本进行逐个字符分析之后应用基于字典的步骤——将识别的文本输入某种形式的拼写检查器或验证器中,以区分难读的字符。

例如,一个圆形符号后跟其他数字最有可能是零,而相同的符号后跟字母最有可能是大写字母 o。这是一个微不足道的例子,但它显示了上下文对于构建更可靠的 OCR 系统的必要性。

于 2009-08-26T15:36:09.887 回答
0

即使在最佳条件下,OCR 变体也会偷偷摸摸。您最好的选择是设计您的测试以了解它们。

于 2009-08-26T15:44:59.243 回答