【问题标题】:How to improve tessaract ocr accuracy? [duplicate]如何提高tesseract ocr准确率? [复制]
【发布时间】:2018-07-03 21:54:59
【问题描述】:

我有一个包含扫描文档的 PDF,我应该在其中阅读其中的某些部分。我已经用 Google Cloud OCR 完成了它,但我只是注意到它可能不够用,因为我将超过每月配额(1k 个请求/月),所以我改用 Tessaract。

该项目是在 Windows 和 Java 中完成的,但目前我正在使用 linux 进行一些测试。

我没有上传我的原始图像,也没有上传它们,因为我不确定它是否包含敏感信息,而是来自互联网的一些非常相似的图像。

我已经读到,我可以帮助改进 Tessaract,以便在对原始图像进行一些先前的工作时获得更好的质量(使用 TextCleaner?)。我想知道如何在 windows/java 环境中做这种事情,最重要的是,如何成功消除桌子上的深色背景,如果可能的话,消除桌子的水平线和垂直线无济于事在 OCR 期间完全没有。

【问题讨论】:

  • 你能改进 OCR 吗?
  • 我不是。我尝试训练 Tessaract,还尝试了一些名为 ocropy 的库,但没有成功。我使用 google ocr 获得了最好的结果,但并不符合我的预期

标签: java image-processing ocr tesseract


【解决方案1】:

是的,你是对的,你可以清理图像以获得更好的识别,见https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality

【讨论】:

  • 我以前读过它,并尝试使用 ImageMagick textcleaner 来提高我的图像质量(去歪斜和去除背景),但我根本没有成功。这些工具也适用于 linux 或 pyhton,我正在寻找适用于 windows 环境中的 java 的东西。
【解决方案2】:

您可以使用 ImageMagick 来锐化图像(高分辨率)。 Tessaract 在高分辨率图像上效果更好。如果您使用的是 python(我认为您不使用),pillow(PIL 或 Python Imaging Library)可以很好地提高图像质量。

【讨论】:

    【解决方案3】:

    我的文本清理脚本对这张图片没有多大帮助。它不会删除深色背景,特别是因为它有纹理。对于其他图像将具有几乎恒定颜色的大区域,它可以使背景变白。但它只能在类 Unix 系统上运行,而不能在 java 上运行。因此,对于 Windows,您需要使用 Windows 10 内置 Unix 或安装 Cygwin。

    这是http://www.fmwconcepts.com/imagemagick/textcleaner/index.php的一个例子

    输入:

    textcleaner -g -e stretch -f 25 -o 10 -s 1 twinkle.jpg twinkle_g_stretch_f25_o10_s1.jpg
    

    【讨论】:

      【解决方案4】:

      文本识别取决于多种因素来产生高质量的输出。 OCR 输出高度依赖于输入图像的质量。这就是为什么每个 OCR 引擎都提供有关输入图像质量及其大小的指南的原因。这些指南有助于 OCR 引擎生成准确的结果。

      图像预处理在这里发挥作用,以提高输入图像的质量,以便 OCR 引擎为您提供准确的输出。

      我写了一篇关于python图像处理的详细文章。请点击以下链接了解更多说明。

      https://medium.com/cashify-engineering/improve-accuracy-of-ocr-using-image-preprocessing-8df29ec3a033

      【讨论】:

      • 虽然这可能会回答问题,但it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
      猜你喜欢
      • 2021-06-30
      • 2017-04-03
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多