【问题标题】:Restrict Preprocessing of Tesseract限制 Tesseract 的预处理
【发布时间】:2014-01-22 22:24:35
【问题描述】:

我是 tesseract 库的新手,我在 Ubuntu 12.04 上设置了它。

我正在使用这个data set 来被识别。当我使用this code 将这些图像原样(没有任何预处理)提供给 tesseract 时,我得到了大约 70-75%。准确性。

我希望准确率达到 90+%,所以我做了一些预处理步骤来增强图像

预处理步骤

  1. 应用底帽算子与半径为 12 的圆的结构化元素
  2. 图像补全,背景为白色,文字为黑色
  3. 增强结果图像的对比度
  4. 腐蚀图像。

在这些步骤之后,我得到非常清晰的图像可以是seen here。但是现在当我使用相同的代码将这些图像提供给 tessearct 时,准确率会降低到 限制 tesseract 进行该预处理。如果不是,那么为什么现在图像非常清晰时它会给我带来不好的结果?如果我问了一些基本问题,请原谅我。

【问题讨论】:

    标签: c++ opencv ocr tesseract


    【解决方案1】:

    关于您的问题,为什么 tesseract 在使用二进制图像而不是灰度图像作为 tesseract 的输入时会提供更好的结果:

    Tesseract 将使用各种方法对灰度图像进行内部二值化(还没有弄清楚到底使用了哪种二值化方法,有时是局部自适应阈值,有时在互联网上提到全局 OTSU 阈值) .当然,tesseract 对二进制图像执行字符识别,并且 tesseract 的预处理在特定问题上仍然可能失败(例如,没有得到好的布局分析)。因此,如果您自己进行预处理部分并将 tesseract 作为输入图像仅提供带有文本的二进制图像并禁用 tesseract 中的所有布局分析,那么您可以获得比让 tesseract 为您做所有事情更好的结果。由于它是一个开源的免费实用程序,它有一些已知的缺点,必须接受。

    如果你使用 tesseract 作为命令行工具,这个线程对于参数非常有用。 tesseract command line page segmantation

    如果你在开发自己的 C++ 代码时使用 tesseract 的源代码,则必须使用正确的参数初始化 tesseract。参数在 tesseract API 端进行了描述。 tesseract API

    【讨论】:

      【解决方案2】:

      好吧,我在预处理后将grayscale(8bpp) 图像提供给tesseract,所以在得到灰度图像后tesseract 正在尝试binarize,即将其转换为黑白,这给了我不好的结果,我还是不知道为什么。

      但在那之后,我尝试先将我的比例图像转换为黑白或 1bpp 图像,然后将该图像提供给 tesseract,我得到了相对更好的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-12
        • 2019-10-16
        • 2014-03-30
        • 2015-06-14
        • 1970-01-01
        • 2017-07-17
        • 1970-01-01
        相关资源
        最近更新 更多