【问题标题】:Image cleaning before OCR applicationOCR 应用前的图像清理
【发布时间】:2013-11-07 12:21:33
【问题描述】:

过去几个小时我一直在试验 PyTesser,它是一个非常好的工具。关于 PyTesser 的准确性,我注意到以下几点:

  1. 带有图标、图像和文本的文件 - 5-10% 准确度
  2. 仅包含文本的文件(已删除图像和图标) - 50-60% 准确度
  3. 文件拉伸(这是最好的部分) - 拉伸文件 在 2) 以上 x 或 y 轴上将精度提高了 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 引擎无疑是市场上最好的开源 OCR 引擎。这里不需要事先进行图像清理。需要注意的是,它不适用于具有大量嵌入图像的文件,我无法找到一种方法来训练 Tesseract 忽略它们。图像中的文本布局和格式也有很大的不同。它适用于只有文本的图像。希望这会有所帮助。

【问题讨论】:

  • 一般来说,对于任何 OCR 系统,要识别的图像应该是: 1) 几何校正; 2)去噪; 3) 光线和对比度校正; 4) 分辨率修正
  • 打败我。一般来说,当我看到这些问题时,我会问“你面临什么样的问题?”我可以将数百种去噪算法应用于任意图像,但是否让它们自适应,以及我们面临的噪声类型是更大的问题。与高斯噪声等有用的情况相反,对具有脉冲/椒盐噪声的图片应用模糊过滤器弊大于利。
  • 几年前我使用 PyTesser 我注意到了同样的事情。很高兴看到不是我。关于您的问题,它肯定取决于库和包。如您所见,尽管如此,不同的软件包可能会或可能不会做这些事情,您需要进行实验并做出这些发现。一般来说,在执行此类任务之前进行清洁会非常有帮助。不幸的是,这部分是鸡/蛋问题。如果您可以完美清洁,那么您就不需要 OCR,因为您必须已经知道所有东西在哪里。即便如此,一般清洁还是有帮助的。
  • 就像 Dogbert 所说的,没有什么能比得上“图像清理的标准程序”。世界上没有算法能猜出你想要摆脱什么以及想要增强什么。

标签: python image-processing ocr


【解决方案1】:

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

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

原创

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

【讨论】:

    【解决方案2】:

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


    (初步回答,仅作记录)

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

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

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

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

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

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

    有人好心发布api docs for tesseract,因此可以验证之前关于处理管道的陈述:ProcessPage -> GetThresholdedImage -> ThresholdToPix -> OtsuThresholdRectToPix

    【讨论】:

      【解决方案3】:

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

      Link to Video

      Link to Presentation

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

      附带说明。 Tesseract 非常重要。你需要训练它,否则它不会像它所能达到的那样好/准确。

      【讨论】:

        猜你喜欢
        • 2020-02-26
        • 2013-11-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-28
        • 2015-07-26
        • 2020-11-15
        • 2015-09-07
        • 1970-01-01
        相关资源
        最近更新 更多