十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

如何用 combine_lang_model 生成用于 LSTM 训练的 starter traineddata 如何用 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、recoderunicharcompress以及可选的 DAWG 词库打包成lstmtraining可直接读取的初始数据。combine_lang_model就是为此提供的训练工具它接收一个 unicharset 和可选的 wordlists一次完成过去需要分别运行set_unicharset_properties、wordlist2dawg、生成 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参数要求指向 langdataGitHub 仓库目录的位置其中包含脚本级 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 的 SYNOPSIScombine_lang_model \ --input_unicharset mylang.unicharset \ --script_dir langdata/ \ --output_dir train_output/ \ --lang myl执行前需要替换的值占位含义mylang.unicharset你的语言 unicharset 文件路径langdata/本地 langdata 目录路径需含radical-stroke.txttrain_output/输出根目录任意可写路径myl语言代码Tesseract 使用 3 字符的 ISO 639-2 语言代码输出固定写在output_dir/lang/下文件前缀为lang.例如train_output/myl/myl.traineddata。可选参数recoder、RTL 与词表以下选项按实际需要添加不影响主路径--pass_through_recoderbool默认 false为 true 时recoder 是 unicharset 的简单直通pass-through不做压缩为 false 时recoder 会对符号空间做压缩——例如把 Hangul 编码为 Jamo、把多 unicode 符号分解为 unicode 序列、用radical-stroke.txt中的数据编码 Han 字。如果你手工构造的 unicharset 已经是一个紧凑的编码用直通 recoder 即可。--lang_is_rtlbool默认 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 的版本字符串中方便在多个产物中区分来源。注意只有当至少提供了一份词表时对应的 DAWGsystem/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_sizeN.txtrecoder 编码的文本形式N 为 recoder 的 code range同样仅供人工查看。验证产物内部组件可以借助combine_tessdata见 doc/combine_tessdata.1.asccombine_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),仅供参考
返回列表