【问题标题】:What thresholding (binarization) algorithm is used in Tesseract OCR?Tesseract OCR 中使用什么阈值(二值化)算法?
【发布时间】:2015-03-31 23:36:03
【问题描述】:

我正在开展一个项目,该项目需要为具有丰富背景的图像提供准确的 OCR 结果。所以我正在比较两个 OCR(其中一个是 Tesseract)的结果来做出我的选择。关键是结果受到预处理步骤的强烈影响,尤其是图像二值化。我提取了另一个 OCR 的二值化图像并将其传递给 Tesseract,从而将 Tesseract 的结果提高了 30-40%。

我有两个问题,你的回答对我很有帮助:

  1. tesseract 使用什么二值化算法,是否可配置?
  2. 有没有办法提取 Tesseract OCR 的二值化图像,以便我可以用它测试其他 OCR?

提前致谢:)

【问题讨论】:

    标签: ocr tesseract adaptive-threshold


    【解决方案1】:

    我想我已经找到了问题的答案:

    1- 使用的二值化算法是 Otsu 阈值。你可以在第 179 行看到它here

    2- 要得到二值化图像,可以调用tesseract api中的方法:

    PIX* thresholded = api->GetThresholdedImage(); //thresholded must be freed
    

    【讨论】:

    • 以上链接已损坏,here 有望成为更永久的链接。 (顺便说一句,如果有人能解决这个问题,这个答案的编辑队列似乎已经满了)
    【解决方案2】:

    Otsu 阈值处理是一种全局过滤器。您可以使用一些本地过滤器来获得更好的结果。 您可以查看 Sauvalo 的二值化方法,参见 here或 Nick 的 here 。这两种算法都是Niblack的改进。 我用它来二值化我的图像以进行 OCR,我得到了更好的结果 祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多