Tesseract-ocr 在满足以下条件的字符图像上效果最佳:
输入图像的分辨率应至少为 300 dpi
输入图像应该是黑白的
输入图像中的噪声应最小(即文本应与背景清晰区分)
文本行应该是直的
图像应以要检测的文本为中心
(有关更多详细信息,请参阅 tesseract-ocr wiki)
对于给定的输入图像,tesseract 将尝试对图像进行预处理和清理以满足这些标准,但为了最大限度地提高检测精度,最好自己进行预处理。
根据您提供的输入图像,主要问题是背景噪声太多。为了从图像中的文本中去除背景噪声,我发现应用具有阈值的描边宽度变换 (SWT) 算法来去除噪声可以得到有希望的结果。libCCV 库中提供了具有许多可配置参数的 SWT 快速实现。它清理图像的效果取决于许多因素,包括图像大小、笔划宽度的均匀性以及算法的其他输入参数。此处提供了可配置参数的列表。
然后,将 SWT 的输出传递给 tesseract 以获取图像中字符的文本值。
如果传递给 tesseract 的图像仍然包含一些噪声,它可能会返回一些错误检测,例如标点符号字符。鉴于您正在处理的图像可能只包含字母和数字 az AZ 0-9,您可以简单地将正则表达式应用于输出以消除任何最终的错误检测。