为了使用OCR库tesseract获得更好的结果,我会做一些预处理,但是没有正确的想法,哪些步骤可以帮助我。
我尝试使用因子15调整图像大小并应用适应的阈值(请参见图像),但这会产生“波浪”字符,使用tesseract OCR库无法检测到这些字符。在底部,您可以通过Dropbox找到我的图像链接。原始图像尺寸为115x18像素,字符高度为10像素。
我想从后台提取字符。哪些步骤可以带来更好的结果?我应该使用另一个OCR库而不是tesseract用于OCR部分吗?使用tesseract进行文本检测时,您一般会有哪些经验?或者您可以选择其他图书馆或商业图书馆吗?
更新19.6.15:
OTSU阈值可提供更好的结果作为自适应阈值。将在接下来的几天内提供有关其他答案的最新消息!
2015年7月1日更新 有另一个示例图像,其中应使用tesseract识别序列号。由于字体很小,识别结果不是很好。有什么想法可以提供帮助吗?
答案 0 :(得分:2)
Otsu阈值在这里给我更好的结果。结合距离变换和另一个阈值,我甚至可以通过tesseract
获得几乎可识别的东西。
这是我得到的结果:
6ANFK9PC)100'0-GT
答案 1 :(得分:0)
您可以尝试查找所有轮廓并删除小面积的轮廓 处理" wevy"字符可能更复杂。我现在唯一的想法是使用距离变换和阈值处理(使用二进制阈值)结果(找到好的阈值可能不简单 - 我会尝试使用maxValue * 0.25的归一化距离变换)。
答案 2 :(得分:0)
你可能想尝试在第二张图像上进行少量的侵蚀和扩张,这可能会使角色中的某些波浪均匀,这两种侵蚀/膨胀的混合物也会消除周围的小白点噪声,这总是有助于OCR。
查看this OpenCV文档,它将为您提供一些示例代码以帮助您入门并解释它是如何工作的。
希望这有帮助。
答案 3 :(得分:0)
为什么不只是“锐化”(这将删除白色边框并使白线变薄)然后简单地反转黑白?