Tesseract OCR 使用什么阈值(二值化)算法?
What thresholding (binarization) algorithm is used in Tesseract OCR?
我正在开展一个项目,需要对具有丰富背景的图像进行准确的 OCR 结果。所以我正在比较两个 OCR 的结果(其中一个是 Tesseract)来做出我的选择。关键是结果受到预处理步骤的强烈影响,尤其是图像二值化。我提取了另一个 OCR 的二值化图像并将其传递给 Tesseract,从而将 Tesseract 的结果提高了 30-40%。
我有两个问题,你的回答对我很有帮助:
- tesseract 使用什么二值化算法,是否可配置?
- 有没有办法提取 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,我得到了更好的结果
祝你好运
我正在开展一个项目,需要对具有丰富背景的图像进行准确的 OCR 结果。所以我正在比较两个 OCR 的结果(其中一个是 Tesseract)来做出我的选择。关键是结果受到预处理步骤的强烈影响,尤其是图像二值化。我提取了另一个 OCR 的二值化图像并将其传递给 Tesseract,从而将 Tesseract 的结果提高了 30-40%。
我有两个问题,你的回答对我很有帮助:
- tesseract 使用什么二值化算法,是否可配置?
- 有没有办法提取 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,我得到了更好的结果 祝你好运