如何用 combine_lang_model 生成用于 LSTM 训练的 starter traineddata
2026/9/9 21:36:05 网站建设 项目流程

如何用 combine_lang_model 生成用于 LSTM 训练的 starter traineddata

【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract

在 Tesseract 4.00 及之后的版本中,训练一个 LSTM 识别模型前,需要先生成一个 starter traineddata 文件——它把 unicharset、recoder(unicharcompress)以及可选的 DAWG 词库打包成lstmtraining可直接读取的初始数据。combine_lang_model就是为此提供的训练工具:它接收一个 unicharset 和可选的 wordlists,一次完成过去需要分别运行set_unicharset_propertieswordlist2dawg、生成 recoder 的独立程序以及combine_tessdata才能完成的工作(见 doc/combine_lang_model.1.asc)。

该工具自 tesseract 4.00.00alpha 起可用,因此前提是已经编译或安装了对应版本的 Tesseract 训练二进制文件。

准备输入:unicharset 与 langdata 目录

执行命令前需要准备两样东西:

  • 输入 unicharset 文件:一个文本文件,描述该语言要识别的字符集合。文档说明它「可以是字段不完整的手工创建文件(hand-created file with incomplete fields)」,combine_lang_model会在实际使用它之前自动设置 basic properties 和 script properties,因此不需要事先单独运行set_unicharset_properties
  • langdata 目录--script_dir参数要求指向 langdata(GitHub 仓库)目录的位置,其中包含脚本级 unicharsets、font xheights,以及编码所需的radical-stroke.txt文件。

另外,--script_dir/<lang>/<lang>.config如果存在,会被读入并作为语言配置写入 traineddata(见 lang_model_helpers.cpp 中CombineLangModel的实现)。这是可选的,不存在时照常继续。

有一个源码层面的硬性要求需要注意:程序在生成 recoder 之前会读取<script_dir>/radical-stroke.txt,如果读不到该文件(包括使用--pass_through_recoder的情况下),会打印Error reading radical code table <path>并以失败退出。所以 langdata 目录下必须包含radical-stroke.txt

执行命令生成 starter traineddata

基本调用形式(参数取自 doc/combine_lang_model.1.asc 的 SYNOPSIS):

combine_lang_model \ --input_unicharset mylang.unicharset \ --script_dir langdata/ \ --output_dir train_output/ \ --lang myl

执行前需要替换的值:

占位含义
mylang.unicharset你的语言 unicharset 文件路径
langdata/本地 langdata 目录路径(需含radical-stroke.txt
train_output/输出根目录,任意可写路径
myl语言代码,Tesseract 使用 3 字符的 ISO 639-2 语言代码

输出固定写在<output_dir>/<lang>/下,文件前缀为<lang>.,例如train_output/myl/myl.traineddata

可选参数:recoder、RTL 与词表

以下选项按实际需要添加,不影响主路径:

  • --pass_through_recoder(bool,默认 false):为 true 时,recoder 是 unicharset 的简单直通(pass-through),不做压缩;为 false 时,recoder 会对符号空间做压缩——例如把 Hangul 编码为 Jamo、把多 unicode 符号分解为 unicode 序列、用radical-stroke.txt中的数据编码 Han 字。如果你手工构造的 unicharset 已经是一个紧凑的编码,用直通 recoder 即可。
  • --lang_is_rtl(bool,默认 false):语言为从右向左书写(如阿拉伯语、希伯来语)时设为 true,它决定 punct DAWG 的反转策略。
  • --words FILE/--puncs FILE/--numbers FILE:可选的词表文件,分别用于系统词典、标点模式、数字模式。约束是:三个列表可以全为空,但只要有一个非空,--puncs必须非空,否则程序会打印Must have non-empty puncs list to use language models!!并以失败退出(见 lang_model_helpers.cpp 中WriteDawgs的实现)。词表文件的格式与wordlist2dawg的输入一致:UTF-8 纯文本,每行一个词(见 doc/wordlist2dawg.1.asc)。
  • --version_str STRING:任意版本标签,会被附加到 traineddata 的版本字符串中,方便在多个产物中区分来源。

注意:只有当至少提供了一份词表时,对应的 DAWG(system/punc/number)才会写入 traineddata;不提供词表时产物只包含 unicharset 和 recoder。

输出文件与结果验证

combine_lang_model成功后打印Created <output_dir>/<lang>/<lang>.traineddata,并产生以下文件(见 combine_lang_model.cpp 头部注释与实现):

  • <output_dir>/<lang>/<lang>.traineddata:最终产物,供lstmtraining使用;
  • <output_dir>/<lang>/<lang>.unicharset:补全属性后的 unicharset,仅为人类可读性输出;
  • <output_dir>/<lang>/<lang>.charset_size=N.txt:recoder 编码的文本形式,N 为 recoder 的 code range,同样仅供人工查看。

验证产物内部组件可以借助combine_tessdata(见 doc/combine_tessdata.1.asc):

combine_tessdata -d train_output/myl/myl.traineddata combine_tessdata -l train_output/myl/myl.traineddata

-d列出 traineddata 中包含的组件目录,-l列出网络信息。用这两条命令可以确认 unicharset、recoder 等条目确实被写入了文件;文档未给出固定输出样例,具体条目以实际版本输出为准。

交给 lstmtraining 训练

生成的 starter traineddata 是下一步lstmtraining的输入:其--traineddata参数的定义正是「Starter traineddata with combined Dawgs/Unicharset/Recoder for language model」(见 doc/lstmtraining.1.asc)。例如微调场景下:

lstmtraining \ --continue_from train_output/continue_from_lang.lstm \ --old_traineddata bestdata_dir/continue_from_lang.traineddata \ --traineddata train_output/myl/myl.traineddata \ --train_listfile train_output/lang.training_files.txt \ --model_output train_output/newlstmmodel

其中--traineddata指向上一步生成的 starter traineddata,其余参数(--continue_from--train_listfile等)按各自的训练数据准备情况替换。lstmtraining的文档同时说明:不推荐用户从零开始训练,优先使用微调(finetuning)或替换网络层的方式。

【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询