
如何用 Tesseract 的 lstm.train 配置从图像生成 .lstmf 训练文件【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract如果你正在准备 Tesseract 4 系 LSTM 识别器的训练数据需要把标注过的图像转换成训练程序能直接消费的.lstmf文件就可以用tesseract主程序自带的lstm.train配置完成这一步。根据 doc/tesseract.1.asc 的记录lstm.train配置的作用是“Output files used by LSTM training (OUTPUTBASE.lstmf)”即运行一次tesseract FILE OUTPUTBASE lstm.train后会得到OUTPUTBASE.lstmf文件。整个过程不需要单独的训练二进制前提是你能提供与图像对应的 box 标注文件。lstm.train 配置实际设置了什么tessdata/configs/lstm.train 是一个逐行的参数文件内容为file_type .bl textord_fast_pitch_test T tessedit_zero_rejection T tessedit_minimal_rejection F tessedit_write_rep_codes F edges_children_fix F edges_childarea 0.65 edges_boxarea 0.9 tessedit_train_line_recognizer T textord_no_rejects T tessedit_init_config_only T其中tessedit_train_line_recognizer T是关键的开关。src/tesseract.cpp 中的注释说明使用ambigs.train、box.train、box.train.stderr、linebox、rebox、lstm.train这些配置时程序会进入训练模式in_training_mode并且“In this mode no other OCR result files are written”——也就是这次运行不会输出.txt、.pdf等常规 OCR 结果文件。前置条件从 src/ccmain/linerec.cpp 的TrainLineRecognizer实现可以看出三个硬性前置条件输入图像。FILE参数指定的图像文件。与图像同名的 box 标注文件。代码按输入图像名调用ReadAllBoxes读取该页的字符框和文本读不到框或框为空时打印Failed to read boxes from 图像名并返回失败不会生成任何.lstmf内容。box 文件的产出方式man page 中记录的是makebox配置——“Write box file (OUTPUTBASE.box)”即 box 文件通常先在标注/转换环节准备好。语言模型如果你要训练的语言已有traineddata。man page 的SYNOPSIS和选项说明要求-l LANG、-l SCRIPT与--psm N必须出现在任何CONFIGFILE之前Nota bene:The options-lLANG,-lSCRIPT and--psmN must occur before any CONFIGFILE.执行生成命令按 man page 的SYNOPSIStesseract FILE OUTPUTBASE [OPTIONS]... [CONFIGFILE]...执行以image1.png为示例图像tesseract image1.png image1 -l LANG lstm.trainimage1.png替换为你的输入图像image1是OUTPUTBASE最终产物为image1.lstmfLANG替换为你已有的语言代码如eng没有对应语言模型时省略该选项lstm.train作为CONFIGFILE放在最后符合“选项在前、配置文件在后”的顺序要求。运行成功后image1对应的输出目录/路径下会出现image1.lstmf。TrainLineRecognizer的流程是读取该页全部 box → 把 box 按行分组、归一化并写入DocumentData→images.Shuffle()打乱顺序 →SaveDocument落盘为OUTPUTBASE .lstmf。对于多页处理代码会先LoadDocument读入已有的.lstmf再追加当前页因此同一OUTPUTBASE会被逐页累加。结果验证与常见报错成功条件很直接OUTPUTBASE.lstmf文件存在且标准输出没有下列失败信息。这些提示均来自 src/ccmain/linerec.cpp 中的实际代码路径可按提示判断卡在哪一步报错信息触发条件Failed to read training data from file!多页追加时读取已有.lstmf失败Failed to read boxes from 图像名box 文件缺失、读不到框或框列表为空Failed to read pages from 图像名box 分组后没有产生任何可训练的行页数为 0Failed to write training data to file!.lstmf写盘失败另外注意由于训练模式下不写任何 OCR 结果文件如果你发现只少了.lstmf之外什么都没有这属于该配置的正常行为不是输出丢失。生成的 .lstmf 如何被消费.lstmf不是终点而是 lstmtraining 的输入。lstmtraining.1.asc中--train_listfile的定义是“File listing training files in lstmf training format”即把若干.lstmf文件名写入一个清单文件再传给lstmtraining --train_listfile。同文档也明确LSTM 训练“from scratch is not recommended to be done by users”推荐的做法是--continue_from/--old_traineddata的微调finetuning或替换某一层完整流程见该文档指向的 TrainingTesseract-4.00 说明。如果你后续还需要对已有模型在.lstmf上做评测仓库的 doc/lstmeval.1.asc 对应的lstmeval工具同样接受 lstmf 格式的--eval_listfile。边界与限制lstm.train依赖 box 标注没有 box 文件就不会产出.lstmf这是当前文档与代码共同给出的最硬前置条件box 文件本身的标注方法在本仓库文档中未展开。训练模式不产生其他 OCR 输出文件想要常规识别结果时不要挂这个配置。从.lstmf到可用traineddata的完整训练参数迭代次数、网络结构、学习率等属于lstmtraining的范畴本文不涉及以 doc/lstmtraining.1.asc 列出的选项为准。【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考