Tesseract OCR 使用什么阈值(二值化)算法?

What thresholding (binarization) algorithm is used in Tesseract OCR?

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

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

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

提前致谢:)

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

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

2- 得到二值化图像,可以调用tesseractapi中的一个方法:

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

Otsu 阈值化是一个全局过滤器。您可以使用一些本地过滤器来获得更好的结果。 您可以查找 Sauvalo 的二值化,请参阅 hereor Nick's here 。这两种算法都是Niblack的改进。 我用它来二值化我的图像以获得 OCR,我得到了更好的结果 祝你好运