作者:小轩之音_438 | 来源:互联网 | 2023-08-06 10:20
**
Tesseract-OCR 4.0LSTM训练流程 (Windows环境下)**
目前网上关于tesseract3.0版本的训练过程很多,但是基于lstm的4.0版本的训练几乎没有,自己深受困扰,后经过自己努力终于成功训练,特地写下来希望可以av帮助需要的人。
首先根据网上的教程安装tesseract4.0以上的版本,这里不详细说明如何安装。
1. 准备训练文本.txt格式的文件和字体文件font,里边包含.ttf格式的字体文件
2. 利用text2image生成.tif和.box文件
从font和.txt所在的目录下,通过cmd进入命令窗口,输入以下内容
text2image --text="D:\new_05\text.txt" --outputbase="D:\new_05\zth.font.exp0" --fontconfig_tmpdir="%temp%"
--fOnt="HGMaruGothicMPRO" --fonts_dir="D:\new_05\font"
其中每个参数的意义为:
–text=“D:\new_05\text.txt” 是要进行训练的样本文件路径
–outputbase=“D:\new_05\zth.font.exp0” 表示生成的.tif和.box文件的路劲和命名(注意命名方式,可参照3.0的介绍)
–fontconfig_tmpdir="%temp%" 指明configer,这个在windows中默认这么写,不写会报错
–fOnt=“HGMaruGothicMPRO” font文件夹中的字体名称
–fonts_dir=“D:\new_05\font” font文件夹的路径
至此,会在D:\new_05文件夹下生成两个新的文件,分别为.tif和.box格式的文件
注:当你的训练文本只有图片时,可以利用jTessBoxEditor工具生成.tif和.box格式的文件,可以参照网上3.0训练的步骤介绍。
3. 利用.tif和.box文件生成.lstmf文件用于lstm训练
tesseract zth.font.exp0.tif zth.font.exp0 -l jpn --psm 6 lstm.train
其中每个参数的意义为
zth.font.exp0.tif 上一步生成的.tif 格式的文件
zth.font.exp0 指明要生成的.lstmf文件的名称
-l jpn 表示用到的语言,这个我训练的是日语
–psm 6 表示采用的识别模式,通常6 效果会好些
运行后会多出一个zth.font.exp0.lstmf文件
4. 从已有的.traineddata中提取.lstm文件
tessedata_best中的.traineddata文件 从该链接中下载所需语言的.traineddata文件
注:一定要用从上述链接中下载的.traineddata文件,如果利用原有的下载好的tesseract-OCR中的tessdata文件夹中的.traineddata文件中提取.lstm文件会造成无法进行训练。
将下载好的.traineddata文件拷贝到上述文件夹下
输入命令行:
combine_tessdata -e jpn.traineddata jpn.lstm
运行上述代码,会从.traineddata文件中提取出jpn.lstm 文件
5. 创建jpn.training_files.txt文件,里边的内容为.lstmf文件的路径地址
6. 进行训练
lstmtraining --model_output="D:\new_05\output\output" --continue_from="D:\new_05\jpn.lstm"
--train_listfile="D:\new_05\jpn.training_files.txt" --traineddata="D:\new_05\jpn.traineddata"
--debug_interval -1 --max_iterations 800
各个参数的意义:
–modeloutput 模型训练输出的路径(我在new_05文件夹中新建了一个名为output的文件夹用来存输出的文件)
–continue_from 训练从哪里继续,这里指定从第4步中提取的jpn.lstm文件,
–train_listfile 指定上一步创建的文件的路径
–traineddata 第4步中下载的.traineddata文件的路径
–debug_interval 当值为-1时,训练结束,会显示训练的一些结果参数
–max_iterations 指明训练遍历次数
此时命令窗口中会有滚动的训练历程
训练结束后,在output文件夹中会生成i一个output_checkpoint文件和多个类似output0.012_3.checkpoint的.checkpoint文件
7. 将checkpoint文件和.traineddata文件合并成新的.traineddata文件
lstmtraining --stop_training --continue_from="D:\new_05\output\output_checkpoint"
--traineddata="D:\new_05\jpn.traineddata" --model_output="D:\new_05\output\zth.traineddata"
各个参数的意义:
–stop_training 默认要有的
–continue_from 上一步生成的output_checkpoint文件路径
–traineddata 第4步中下载的.traineddata文件的路径
–model_output zth.traineddata 输出的路径
8. 将新生成的zth.traineddata文件拷贝到tesseract-OCR\tessdata文件夹下,通过代码进行识别