如何正确配置Tesseract变量优化代码识别并解决运行报错
Tesseract 代码识别配置报错修复方案
报错根因
报错是两个独立问题叠加导致的:
- 参数语法错误:Tesseract的
-c参数每次仅能传递一个配置项,设置load_freq_dawg时漏写了前缀-c,程序直接将load_freq_dawg=0识别为待读取的自定义参数文件路径,触发参数文件读取失败报错。 - 引擎与语言包不匹配:指定
--oem 0强制使用传统Legacy OCR引擎,但当前系统中安装的eng.traineddata是仅支持LSTM引擎的精简语言包,没有Legacy引擎所需的组件,后续触发引擎加载失败、语言包加载失败、初始化失败的连锁报错。
修复步骤
- 安装完整版英文语言包
Debian/Ubuntu系系统直接执行命令安装官方源内的完整英文语言包:
安装完成后确认sudo apt update && sudo apt install --reinstall tesseract-ocr-eng/usr/share/tesseract-ocr/4.00/tessdata/eng.traineddata文件存在,且文件大小不低于15MB(精简版仅几MB,不含Legacy组件)。 - 修正命令参数写法
每个自定义配置项前必须加-c前缀,代码识别场景推荐使用默认的--oem 3(双引擎自动适配,LSTM优先,识别精度远高于纯Legacy模式),正确命令如下:
配置项赋值用tesseract img.jpg output.txt --oem 3 -c load_system_dawg=false -c load_freq_dawg=falsefalse或0效果完全一致,执行后即可正常禁用字典功能,适配代码识别无固定通用词组的特征。 - (可选)代码识别优化配置
可增加字符白名单配置,限定仅识别代码常用字符,进一步降低误识别率:tesseract img.jpg output.txt --oem 3 -c load_system_dawg=false -c load_freq_dawg=false -c tessedit_char_whitelist="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}[]()<>+-*/=;:'\",.#_\\|!?@$%^&"
内容的提问来源于stack exchange,提问作者CSDUG
相关产品推荐
相关产品推荐

