14

在过去的几个小时里,我一直在试验 PyTesser,它是一个非常好的工具。我注意到有关 PyTesser 准确性的几件事:

  1. 带有图标、图像和文本的文件 - 5-10% 准确率
  2. 仅包含文本的文件(已删除图像和图标)- 50-60% 准确率
  3. 带有拉伸的文件(这是最好的部分)- 在 x 或 y 轴上拉伸上面 2)中的文件将精度提高了 10-20%

因此,显然 Pytesser 不关心字体尺寸或图像拉伸。尽管有很多关于图像处理和 OCR 的理论需要阅读,但在应用 PyTesser 或其他库之前是否需要完成任何标准的图像清理程序(除了擦除图标和图像),而与语言无关?

............

哇,这个帖子现在很老了。最近几天,我再次开始了对 OCR 的研究。这次我放弃了 PyTesser 并使用了带有 ImageMagik 的 Tesseract 引擎。直奔主题,这就是我发现的:

1) You can increase the resolution with ImageMagic(There are a bunch of simple shell commands you can use)
2) After increasing the resolution, the accuracy went up by 80-90%.

因此,Tesseract Engine 无疑是市场上最好的开源 OCR 引擎。这里不需要事先进行图像清理。需要注意的是,它不适用于具有大量嵌入图像的文件,我无法找到一种方法来训练 Tesseract 忽略它们。图像中的文本布局和格式也有很大的不同。它适用于只有文本的图像。希望这有帮助。

4

3 回答 3

5

不确定您的意图是否用于商业用途,但这很奇怪您是否在一堆类似的图像上执行 OCR。

http://www.fmwconcepts.com/imagemagick/textcleaner/index.php

原来的 原来的

使用给定参数进行预处理后。

使用给定参数进行预处理后。

于 2014-01-23T17:56:45.907 回答
4

事实证明,tesseractwiki 有一篇文章以我能想象的最佳方式回答了这个问题:


(初步回答,仅供参考)

我没用过PyTesser,但我用tesseract(版本:)做了一些实验3.02.02

如果您在彩色图像上调用 tesseract,则它首先应用全局Otsu 的方法对其进行二值化,然后在二进制(黑白)图像上运行实际的字符识别。

图片来自:http ://scikit-image.org/docs/dev/auto_examples/plot_local_otsu.html

大津的门槛图

可以看出,“全球大津”可能并不总是产生理想的结果。

为了更好地理解 tesseract “看到”的内容,请将 Otsu 的方法应用于您的图像,然后查看生成的图像。

总之:提高识别率最直接的方法是自己对图像进行二值化(很可能您会通过反复试验找到好的阈值),然后将这些二值化图像传递给tesseract.

有人好心为 tesseract 发布了 api 文档,因此可以验证以前关于处理管道的语句:ProcessPage -> GetThresholdedImage -> ThresholdToPix -> OtsuThresholdRectToPix

于 2014-01-23T18:36:19.700 回答
3

我知道这不是一个完美的答案。但我想与您分享一个我在 PyCon 2013 上看到的可能适用的视频。它有点缺乏实现细节,但可能只是对您如何解决/改进您的问题的一些指导/启发。

链接到视频

链接到演示文稿

如果您决定使用 ImageMagick 对源图像进行一点预处理。是一个问题,它为你指出了很好的 python 绑定。

在旁注中。Tesseract 非常重要。你需要训练它,否则它不会像它所能达到的那样好/准确。

于 2014-01-20T20:47:16.993 回答