- 注册时间
- 2013-4-19
- 最后登录
- 2026-1-21
- 阅读权限
- 200
- 积分
- 6551
- 精华
- 0
- 帖子
- 647
    
|
针对4.0开始支持的lstm训练,想学习了解一下,但这个目前资料太少,看起来一头雾水
这里做一些记录,方便以后整理
参考https://ivanzz1001.github.io/rec ... /tesseract-traininghttps://ivanzz1001.github.io/records/post/ocr/2017/09/18/tesseract-training#101-%E5%88%9B%E5%BB%BA%E5%88%9D%E5%A7%8Btraineddata
https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00
https://www.jianshu.com/p/6c4424252168
注意上面两个参考例子的目录结构是不一致的需要自己想的很清楚自己的目录结构
1.样本数据准备(training data)
Training data is created using [url=https://github.com/tesseract-ocr/tesseract/blob/master/src/training/tesstrain.sh]tesstrain.shas follows:
src/training/tesstrain.sh --fonts_dir /usr/share/fonts --lang eng --linedata_only \ --noextract_font_properties --langdata_dir ../langdata \ --tessdata_dir ./tessdata --output_dir ~/tesstutorial/engtrain
2.训练文件由.ltsmf代替原来的.tr文件
用tesstrain.sh生成大量的ltsmf文件,作为原始的测试数据
中文训练流程
1.找到支持中文的字体
2.每种字体生成ltsmf文件
3.训练
4.验证
osd.traineddata是什么?
教程中的目录结构
=====
查看系统支持中文的字体,生成列表
training/text2image --find_fonts --fonts_dir /usr/share/fonts --text ../langdata/chi_sim/chi_sim.training_text --min_coverage .9 --outputbase ../results/chi_sim/chi_sim
下面命令对输出的数据进行字符串截取获得字体名
training/text2image --find_fonts \
--fonts_dir /usr/share/fonts \
--text ../langdata/chi_sim/chi_sim.training_text \
--min_coverage .9 \
--outputbase ../results/chi_sim/chi_sim\
|& grep raw | sed -e 's/ :.*/" \\/g' | sed -e 's/^/ "/' >../results/chi_sim/fontslist.txt
生成训练数据
training/tesstrain.sh --fonts_dir /usr/share/fonts --lang chi_sim --linedata_only \
--noextract_font_properties --langdata_dir ../langdata \
--tessdata_dir ./tessdata \
--exposures "0" \
--fontlist "AR PL UKai CN" \
"AR PL UKai HK" \
"AR PL UKai TW" \
--output_dir ../tesstutorial/chi_simtrain \
--overwrite
生成评估数据
========
我的目录结构
engeval engtrain impact impact_full impact.traineddata langdata output tesseract
训练命令
mkdir -p ~/tesstutorial/engoutput
training/lstmtraining --debug_interval 100 \
--traineddata ~/tesstutorial/engtrain/eng/eng.traineddata \
--net_spec '[1,36,0,1 Ct3,3,16 Mp3,3 Lfys48 Lfx96 Lrx96 Lfx256 O1c111]' \
--model_output ~/tesstutorial/engoutput/base --learning_rate 20e-4 \
--train_listfile ~/tesstutorial/engtrain/eng.training_files.txt \
--eval_listfile ~/tesstutorial/engeval/eng.training_files.txt \
--max_iterations 5000 &>~/tesstutorial/engoutput/basetrain.log
评估命令(import)
training/lstmeval --model ~/tesstutorial/engoutput/base_checkpoint \
--traineddata ~/tesstutorial/engtrain/eng/eng.traineddata \
--eval_listfile ~/tesstutorial/engeval/eng.training_files.txt
本地评估命令(import)
lstmeval --model ~/train_eng/output/base_checkpoint --traineddata ~/train_eng/engtrain/eng/eng.traineddata --eval_listfile ~/train_eng/engeval/eng.training_files.txt
本地评估结果(import)
At iteration 0, stage 0, Eval Char error rate=73.506941, Word error rate=99.017371
在第一次训练基础上增量训练impact命令
training/lstmtraining --model_output ~/tesstutorial/impact_from_small/impact \
--continue_from ~/tesstutorial/engoutput/base_checkpoint \
--traineddata ~/tesstutorial/engtrain/eng/eng.traineddata \
--train_listfile ~/tesstutorial/engeval/eng.training_files.txt \
--max_iterations 1200
本地第一次训练基础上增量训练impact命令
lstmtraining --debug_interval 100 --model_output ../impact/impact --continue_from ~/train_eng/output/base_checkpoint --traineddata ~/train_eng/engtrain/eng/eng.traineddata --train_listfile ~/train_eng/engeval/eng.training_files.txt --max_iterations 1200 &>~/train_eng/impact/train.log
增量之后评估命令(import)
training/lstmeval --model ~/tesstutorial/impact_from_small/impact_checkpoint \
--traineddata ~/tesstutorial/engtrain/eng/eng.traineddata \
--eval_listfile ~/tesstutorial/engeval/eng.training_files.txt
本地增量之后评估命令(import)
lstmeval --model ~/train_eng/impact/impact_checkpoint --traineddata ~/train_eng/engtrain/eng/eng.traineddata --eval_listfile ~/train_eng/engeval/eng.training_files.txt
增量之后评估结果
At iteration 0, stage 0, Eval Char error rate=8.6180806, Word error rate=20.466931
在原有的eng训练集上增量训练命令
lstmtraining --debug_interval 100 --model_output ../impact_full/impact --continue_from ~/train_eng/impact_full/eng.lstm --traineddata tessdata/best/eng.traineddata --train_listfile ~/train_eng/engeval/eng.training_files.txt --max_iterations 400 &>~/train_eng/impact_full/train.log
在原有的eng训练集上增量评估命令
lstmeval --model ~/train_eng/impact_full/impact_checkpoint --traineddata tessdata/best/eng.traineddata --eval_listfile ~/train_eng/engeval/eng.training_files.txt
输出最终的模型文件
lstmtraining --stop_training --continue_from ~/train_eng/impact_full/impact_checkpoint --traineddata tessdata/best/eng.traineddata --model_output ~/train_eng/impact.traineddata
这个去识别Impact Condensed 会比默认的eng.traineddata好一些
|
|