我想在使用 OpenCV 和 tesseract 时检测图像中的文本。我的步骤是:
- 为了检测文本,我使用了 cv::text 的场景文本检测算法。这实际上在困难的情况下也很有效
- 识别文本分别从主图像中提取包含文本的图像区域
- 我将每个子图像传递给 Tesseract
然而,tesseract 几乎找不到文本,如果它找到了文本,那就是错误的。 示例:(图片来自 https://github.com/opencv/opencv_contrib/blob/master/modules/text/samples/scenetext01.jpg)
绿色:OpenCV 检测到的文本(良好)。
黄色 tesseract 基于绿色矩形识别的文本(差)
提取的文本是“DOUBLEI”。 “I”是右侧黑色边框的结果。
如您所见,tesseract 也应该很容易检测到其他词,例如“PROHIBITED”。我试图增加提取的包含文本的子图像的大小并使用阈值,但我无法改善我的结果。
在各种教程中,我看到 tesseract 在更困难的条件下工作,所以它应该实际工作。
当直接对同一图像使用“tesseract.exe”时,根本没有检测到文本:
最佳答案
尝试添加一点白色背景。我记得 tesseract 对于到达图像边界的文本有很大的问题。在每边添加 10px 的白色,看看是否有帮助。
关于c++ - 如何改进 Tesseract 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42550532/