【问题标题】:How to give best chance of success to an OCR software?如何为 OCR 软件提供最大的成功机会?
【发布时间】:2013-11-05 20:17:16
【问题描述】:

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

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

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

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

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

提前致谢

【问题讨论】:

  • 如果这个问题仍然相关:这必须是 Tesseract 吗?有一些 OCR 引擎(例如 ABBYY)非常适合低质量的输入图像,并自动为您进行图像预处理。 wisetrend.com/wisetrend_ocr_cloud.shtml 有一个用于 OCR 的 REST API,它使用 ABBYY 引擎 - 它提供免费试用版,因此您可以自己尝试一些图像

标签: testing ocr tesseract


【解决方案1】:

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

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

【讨论】:

  • 我同意这一点。它被对话框边缘混淆并转换为“I”。当它只获取文本图像时,它做得很好。二值化也是一个好主意。谢谢。
【解决方案2】:
  1. 训练 tesseract 以识别您的字体
  2. 使图像更加干净,字符周围有足够的可用空间
  3. 利润:)

这里有几个真实的例子。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 不幸的是,我无法控制字体。您能否再解释一下您所说的基于字典的步骤是什么意思?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2018-05-09
      • 2017-06-24
      • 1970-01-01
      相关资源
      最近更新 更多