OCR应用前的图像清洁

时间:2013-10-28 16:08:46

标签: python image-processing ocr

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

  1. 带图标,图片和文字的文件 - 准确率为5-10%
  2. 仅包含文字的文件(图像和图标已删除) - 准确率为50-60%
  3. 带拉伸的文件(这是最好的部分) - 拉伸文件 在上面的2)中,x或y轴上的精度提高了10-20%
  4. 显然,Pytesser不关心字体尺寸或图像拉伸。虽然有很多关于图像处理和OCR的理论需要阅读,但是在应用PyTesser或其他库之前是否有任何标准的图像清理程序(除了擦除图标和图像),而不管语言是什么?

    ...........

    哇,这篇文章现在已经很老了。在过去的几天里,我再次开始研究OCR。这次我扔掉了PyTesser并使用了Tesseract引擎和ImageMagik。直截了当地说,这就是我发现的:

    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忽略它们。此外,图像中的文本布局和格式也有很大的不同。它只适用于带有文本的图像。希望这有帮助。

3 个答案:

答案 0 :(得分:5)

不确定您的意图是否用于商业用途,但如果您在一堆类似的图像上执行OCR,这会产生奇迹。

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

ORIGINAL ORIGINAL

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

After Pre-Processing with given arguments.

答案 1 :(得分:4)

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


(初步答案,仅供记录)

我没有使用PyTesser,但我已经使用tesseract(版本:3.02.02)进行了一些实验。

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

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

Otsu's threshold illustration

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

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

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

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

答案 2 :(得分:3)

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

Link to Video

Link to Presentation

如果您决定使用ImageMagick预处理源图像。 Here是一个问题,指出你有很好的python绑定。

旁注。 Tesseract非常重要。你需要训练它,否则它不会像它能够那么好/准确。