【问题标题】:Howto improve OCR results如何改善 OCR 结果
【发布时间】:2015-09-29 11:38:32
【问题描述】:

我尝试改进 OpenSource OCR 软件的结果。我正在使用 tessaract,因为我发现它仍然比 gocr 产生更好的结果,但是如果输入质量不好,它会出现很大的问题。因此,我尝试使用在互联网上找到的各种工具对图像进行预处理:

  • 拆纸
  • Fred 的 ImageMagick 脚本:TextCLEANER
  • 手动使用 GIMP

但是我无法用这个糟糕的测试文档获得好的结果:(真的只是为了测试,我不需要这个文件的内容) http://9gag.com/gag/aBrG8w2/employee-handbook

这个在线服务与这个测试文档一起工作得非常好: http://www.onlineocr.net/

我想知道是否可以使用智能预处理来获得与 tesseract 类似的结果。与商业引擎相比,开源 OCR 引擎真的那么糟糕吗?甚至 google 也使用 tesseract 扫描文档,所以我期待更多...

【问题讨论】:

    标签: open-source ocr tesseract


    【解决方案1】:

    Tesseract 的识别精度略低于最好的商业软件(Abbyy FineReader)的精度,但由于其性质,它更灵活。 这种灵活性有时需要一些预处理,因为 Tesseract 不可能管理每种情况。 实际上被谷歌使用,因为谷歌是它的主要赞助商!

    您可以做的第一件事是尝试扩展文本以使字符至少有 20 像素宽或更多。由于 Tesseract 使用字符边框的主要部分作为特征,因此与其他算法相比,它需要具有更大的字符大小。

    您可以尝试的另一件事,总是参考您提到的测试文档,是使用自适应阈值方法对图像进行二值化(在这里您可以找到有关 https://dsp.stackexchange.com/a/2504 的一些信息),因为照明的一些变化是展示。 Tesseract 在内部对图像进行二值化处理,但可能会出现这种情况(它与Improving the quality of the output with Tesseract 此处的示例类似,您还可以在其中找到一些其他有用的信息)

    【讨论】:

    • 提高分辨率会改善结果。我玩了自适应阈值,它解决了不均匀的照明,但在白色区域有问题。我从 Fred 的 ImageMagick Scripts 中找到了 2colorthresh 以提供更好的结果。我当前的命令如下所示: convert aBrG8w2_700b.jpg -resize 1600 -contrast -contrast -contrast +dither -colors 2 -colorspace gray -contrast-stretch 10% test.png && tesseract test.png test && cat test.txt 好多了,但仍然不能真正使用。有没有人有更好的方法?
    • 区域的问题在于,在使用自适应阈值处理时,通常意味着将图像分成小块,而不是单独对每个块进行二值化。因此,在某些块(例如您正在谈论的白色区域)中,前景(文本)和背景都不会出现,在这种情况下,二值化会失败。我不知道您使用的算法有多灵活,但可以从每个块的阈值中减去一个常数,这样即使没有文本,阈值也会低于白色背景。
    • 无论如何,即使您使用的阈值算法不灵活,删除那些伪影应该不是什么大问题。一种方法可能是查看每个 blob 的几何属性。
    • 我有兴趣了解为什么 Tesseract 比任何商业 OCR 都更好的具体点
    • 我不知道真相,这只是一个简单的想法,源于它正在持续进化并且背后有谷歌,我认为有大量数据可供使用 :)无论如何,一个具体的问题是成本。关于性能(我现在正在阅读一些比较)Abbyy FineReader 似乎更精确,而 Tesseract 似乎更灵活(例如,在这个测试中识别图像标题,而 Abbyy 无法做到这一点labnol.org/software/google-ocr-software-review/7208)。也许“更好”不是正确的词,如果我编辑我的答案,你同意吗?
    猜你喜欢
    • 2019-01-28
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2014-10-30
    • 2015-01-14
    相关资源
    最近更新 更多