Tesseract OCR识别字符间距过大的图像准确率低该如何解决?
Tesseract识别宽间距字符问题解决方案
问题说明
- 场景:使用Tesseract OCR提取图像中非词典有效词的字符序列,待识别图像存在字符间距过大的问题
- 参考识别样图:

- 测试效果:
- 默认配置识别输出:
5 O M E T E—E X fT - 调整页面分割参数后的最优结果:使用
--psm 8参数识别得到"SOME TEXT.,仍不符合预期
- 默认配置识别输出:
- 核心疑问:是否有内置配置可让Tesseract适配宽间距字符场景,还是必须训练自定义模型才能解决问题
可行方案
不需要第一时间训练自定义模型,优先按以下顺序调整即可解决绝大多数均匀宽间距识别问题:
- 先做图像前置预处理
逐列扫描图像像素,批量删除无有效字符像素的冗余空白列,把分散的宽间距字符压缩到常规文本间距后再送入Tesseract识别,这个方法对均匀宽间距场景的提升效果远高于直接调整OCR参数。 - 调整Tesseract内置参数
- 调大字符同属判定阈值:修改配置项
tosp_min_sane_kn_sp,该参数控制Tesseract判定两个字符属于同一文本块的最大间距,默认值适配常规印刷体间距,宽间距场景可将其调整为默认值的2~3倍,配合--psm 7(识别单行文本)或--psm 8(识别单个单词)模式使用。 - 关闭内置词典校正:由于待识别的字符序列本身不是有效单词,默认开启的词典匹配会强行把识别结果修正为形近的常见单词,添加以下参数关闭所有内置词典加载即可避免该问题:
-c load_system_dawg=0 -c load_freq_dawg=0 -c load_punc_dawg=0 -c load_number_dawg=0
- 调大字符同属判定阈值:修改配置项
- 自定义模型适用场景
只有当字符间距不均匀、同时存在特殊字体、复杂背景干扰,上述预处理和参数调整都无法达到识别准确率要求时,才需要使用对应场景的标注数据微调自定义Tesseract模型,普通均匀宽间距场景无需训练模型。
内容的提问来源于stack exchange,提问作者qanpi
相关产品推荐
相关产品推荐

