OCR应用程序之前的图像清理

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

  • 文件与图标,图像和文本 - 5-10%的准确性
  • 仅包含文本的文件(已删除图像和图标) - 精确度为50-60%
  • 拉伸文件(这是最好的部分) - 在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引擎毫无疑问是市场上最好的开源OCR引擎。 此处不需要事先清洁图像。 需要注意的是,它不适用于包含大量嵌入图像的文件,我也无法找到一种方法来训练Tesseract忽略它们。 此外,图片中的文字布局和格式也有很大不同。 它与仅有文本的图像效果很好。 希望这有助于。


    不确定您的意图是否用于商业用途,但这可以解决您是否对一些类似图像执行OCR。

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

    原版的 原版的

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

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


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

  • 关于“提高[OCR]输出质量”的图解指南。

  • 问题“图像处理改善tesseract OCR准确性”也可能是有趣的。


  • (最初的答案,只是为了记录)

    我没有使用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


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

    链接到视频

    链接到演示文稿

    如果你决定使用ImageMagick预处理你的源图像一点点。 这是问题,它指向你很好的Python绑定。

    在旁注中。 Tesseract非常重要。 你需要训练它,否则它不会像它能够成为一样好/准确。

    链接地址: http://www.djcxy.com/p/96733.html

    上一篇: Image cleaning before OCR application

    下一篇: How to get a random number between a float range?