Tesseract训练BM Mini字体时mftraining报tr文件格式错误如何解决?
Tesseract训练mftraining阶段报错问题排查与解决
核心问题根因
- 脚本执行顺序错误:你先执行
box.train生成.tr文件,之后才生成font_properties文件,导致.tr文件无法正确关联字体标识,内部格式损坏,mftraining读取时就会抛出格式类错误 - 存在无效命令:脚本中
font_properties eng.inttemp eng.normproto *.tr *.txt是错误命令,font_properties是配置文件不是可执行程序,执行该行会产生垃圾输出干扰后续文件生成 - 命令参数符号错误:你写的mftraining命令中参数前的是长破折号
–,不是可识别的半角短横-,会导致参数解析失败
解决步骤
- 先清空当前目录下所有生成的中间文件,包括*.tr、unicharset、font_properties、.inttemp、.normproto等,避免旧文件干扰
- 调整脚本执行顺序,修正后的参考脚本如下:
tesseract='C:/Program Files/Tesseract-OCR/tesseract.exe' # 第一步:先生成font_properties配置文件 echo "bmmini 0 0 0 0 0" > font_properties # 第二步:生成.tr训练文件 "$tesseract" eng.bmmini.exp0.png eng.bmmini.exp0 nobatch box.train # 第三步:提取字符集文件 unicharset_extractor eng.bmmini.exp0.box # 第四步:执行特征训练,注意参数前为半角短横 mftraining -F font_properties -U unicharset -O eng.unicharset eng.bmmini.exp0.tr # 后续补充cntraining步骤即可继续完成训练 cntraining eng.bmmini.exp0.tr
- 若调整后仍报错,按以下方法校验box文件:
- 打开box文件检查每一行格式是否符合
字符 左坐标 下坐标 右坐标 上坐标 页码规范,所有坐标为正整数,无乱码、特殊字符、空格缺失 - 检查文件无空行,末尾无多余换行,保存编码为UTF-8
内容的提问来源于stack exchange,提问作者user17223731
相关产品推荐
相关产品推荐

