ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何用 lstmeval 配合 --traineddata 评估 Tesseract 的 LSTM 训练检查点

2026/9/9 12:28:20 拓冰建站 浏览量
如何用 lstmeval 配合 --traineddata 评估 Tesseract 的 LSTM 训练检查点 如何用 lstmeval 配合 --traineddata 评估 Tesseract 的 LSTM 训练检查点【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract用 Tesseract 的lstmtraining训练 LSTM 网络时通常不想等训练全部结束才判断效果而是需要检查训练输出目录里已经产生的中间检查点。lstmeval就是 Tesseract 为 LSTM 网络提供的独立评估程序输入一个模型识别模型或训练检查点加一份 lstmf 文件列表输出该模型在评估集上的错误率。关键限制是当--model给的是训练检查点而不是可直接使用的识别模型时必须同时给出--traineddata而且它必须是训练时交给 trainer 的那个 starter traineddata 文件。按 man page 记载lstmeval自 tesseract 4.00.00alpha 起可用。准备条件检查点、starter traineddata 与评估列表文件运行评估前需要凑齐三样东西缺一都会导致程序直接报错退出模型文件。可以是识别模型如lang.lstm也可以是训练检查点。doc/lstmeval.1.asc 的 synopsis 把--model的合法形式写为lang.lstm|modelname_checkpoint|modelname_N.NN_NN_NN.checkpoint并明确说明 Intermediate training checkpoints can also be used中间训练检查点也可以使用。如果按 doc/lstmtraining.1.asc 示例中的--model_output train_output_dir/newlstmmodel训练检查点就按newlstmmodel_N.NN_NN_NN.checkpoint的命名落在该输出目录里。starter traineddata即lstmtraining --traineddata当时指定的文件。man page 对--traineddata的表述是若模型是训练检查点traineddata must be the traineddata file that was given to the trainer给错文件评估结果没有意义。评估列表文件即--eval_listfile指向的文本文件内容为 lstmf 格式样本文件的路径清单man pageFile listing sample files in lstmf training format.实现上按行读取文件名见 src/training/unicharset/lstmtester.cpp。可选分支生成 lstmf 评估样本。手头没有 lstmf 文件时可以用tesseract配合仓库自带的lstm.train配置生成。doc/tesseract.1.asc 说明该配置的作用是 Output files used by LSTM training (OUTPUTBASE.lstmf)即执行tesseract image.png base lstm.train会生成base.lstmf。该配置文件位于 tessdata/configs/lstm.train内容是一组参数设置其中包含tessedit_train_line_recognizer T等开启训练数据输出的项。生成多个.lstmf后把路径逐行写入一个文本文件作为评估列表。另外lstmeval属于随源码构建的训练工具集Makefile.am 中trainingtools lstmeval$(EXEEXT)构建 Tesseract 源码后即可获得该可执行文件。执行 lstmeval 评估命令man page synopsis 给出的完整形式是lstmeval --model lang.lstm|modelname_checkpoint|modelname_N.NN_NN_NN.checkpoint \ [--traineddata lang/lang.traineddata] --eval_listfile lang.eval_files.txt \ [--verbosity N] [--max_image_MB NNNN]代入检查点场景、并按 doc/lstmtraining.1.asc 示例中的路径写法实际命令形如lstmeval --model train_output_dir/newlstmmodel_N.NN_NN_NN.checkpoint \ --traineddata train_output_dir/lang/lang.traineddata \ --eval_listfile train_output_dir/lang.eval_files.txt各参数的用途与适用条件--model必选。模型文件路径训练或识别。检查点文件名中的N.NN_NN_NN是 man page 中的占位形式需替换为训练输出目录中实际的检查点文件名train_output_dir、lang.lang.traineddata、lang.eval_files.txt沿用的是两份 man page 示例中的路径同样替换为你训练时的实际路径。--traineddata当--model是训练检查点时必选必须是交给 trainer 的那个 traineddata若--model是识别模型如lang.lstm则不需要该参数。--eval_listfile必选lstmf 文件清单。--verbosity0–2默认 1控制诊断输出量。--max_image_MB图像使用的最大内存MB默认 2000。如何判读评估结果评估成功时最终输出一行结果格式来自 src/training/unicharset/lstmtester.cpp 中RunEvalSync的实现lstmeval以 iteration 0、stage 0 调用因此不会出现迭代前缀BCER eval43.500, BWER eval76.600以上数值仅为格式示例不是预期值。BCER 对应代码中累计的字符级错误ET_CHAR_ERRORBWER 对应词级错误ET_WORD_RECERR均以百分比表示固定 3 位小数。由于同一检查点每次评估用的是同一份列表文件把多个检查点依次用同一--eval_listfile跑一遍比较 BCER/BWER 的走向就能观察训练过程中错误率的变化趋势。--verbosity决定逐样本细节的多少由实现代码可确认0只输出最终的 BCER/BWER 行1默认对识别不完美result ! PERFECT的样本额外打印Truth:与OCR两行对照可直接看到哪一行认错了2所有样本都打印对照行识别不完整的样本还会附上逐行的 BCER/BWER。排查错误消息的出处与含义lstmeval的所有提示信息都在 src/training/lstmeval.cpp 中可以按消息逐一定位消息含义处理Must provide a --model!未给--model补上模型路径Must provide a --eval_listfile!未给--eval_listfile补上评估列表文件Must supply --traineddata to eval a training checkpoint!模型不是识别模型但没有给--traineddata补上交给 trainer 的 starter traineddata%s is not a recognition model, trying training checkpoint...非错误表示正按训练检查点路径加载等待后续结果Failed to load language model from %s!--traineddata文件加载失败确认路径正确、文件存在且确为训练时传给 trainer 的那份Failed to load model from: %s模型文件读取失败检查检查点路径与文件完整性Failed to load eval data from: %s评估列表文件加载失败检查列表文件路径与其中列出的 lstmf 文件两种非报错的特殊输出也值得注意反序列化失败时输出Deserialize failed模型数据与训练配置不匹配时会走到这里列表文件能加载但总页数为 0 时输出No test data at iteration 0说明列表里没有可用的评估页需要检查 lstmf 文件本身。与训练过程中的评估的关系lstmtraining自身也接受--eval_listfile见 doc/lstmtraining.1.asc训练过程中会定期对评估集做评估。lstmeval提供的是一条独立路径不重跑训练单条命令即可检查输出目录中任意一个中间检查点两者使用同一形式的评估列表文件。检查完检查点后若确认某轮效果可用后续操作回到lstmtraining的续训选项--continue_from等本文不再展开。【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考