Tesseract训练combine_tessdata报错:缺少unicharset或lstm文件
问题描述
- 环境:Ubuntu 20.04 LTS,Tesseract 4.1.1
- 执行训练第8步命令
combine_tessdata eng.时触发报错:
traineddata file must contain at least (a unicharset file and inttemp) OR an lstm file
- 当前工作目录已存在
unicharset、eng.inttemp等文件,但合并操作失败 - 此前执行
mftraining命令曾出现格式错误,已通过qt-box-editor修正box文件坐标
排查与解决方案
1. 检查文件完整性与命名
- 确认所有训练生成文件(
eng.inttemp、eng.normproto、eng.pffmtable、eng.shapetable、unicharset)均在当前目录,且文件名前缀与combine_tessdata命令中的eng.完全匹配(注意命令末尾的点不能省略) - 执行以下命令查看文件大小,确保无空文件:
若存在大小为0的文件,说明对应训练步骤(如ls -l eng.* unicharsetmftraining、cntraining)执行不彻底,需重新运行
2. 重新验证mftraining执行
- 重新运行
mftraining,确保无报错:
若仍有格式错误,补充检查:mftraining -F unicharset -U unicharset -O eng.unicharset eng.tr- box文件与对应图片的文件名完全一致(如
sample.png对应sample.box) - box文件每行格式符合规范:
字符 左 下 右 上 页码(坐标原点为图片左下角) - 图片需为单通道灰度图,非灰度图可通过以下命令转换:
convert input.png -type Grayscale output.png
- box文件与对应图片的文件名完全一致(如
3. 补全cntraining步骤
Tesseract 4.x训练传统模型需执行cntraining生成配套文件,并完成重命名:
cntraining eng.tr mv normproto eng.normproto mv pffmtable eng.pffmtable mv shapetable eng.shapetable
确保重命名后的eng.normproto、eng.pffmtable、eng.shapetable均存在于当前目录
4. 重新执行合并命令
确认所有必要文件齐全后,再次运行:
combine_tessdata eng.
成功时会输出类似信息:
Combined tessdata written to eng.traineddata
内容的提问来源于stack exchange,提问作者sarah w
相关产品推荐
相关产品推荐

