文字识别过程中遇到问题,需要识别出直径符号“Ø”,用tesseract试了很多方法,都不行,最后用以下方法可以识别。
首先需要注意的时:
“Ø” 不是古希腊符号,而是拉丁文字,unicode编码是00d8,参见 https://www.compart.com/en/unicode/U+00D8, https://en.wikipedia.org/wiki/%C3%98
#!/bin/bash
rm -rf ~/tesstutorial/chi_sim_train
~/tesseract/src/training/tesstrain.sh \
--fonts_dir ~/.fonts \
--training_text ~/langdata_lstm/chi_sim/chi_sim.finetune.training_text \
--langdata_dir ~/langdata_lstm \
--tessdata_dir ~/tesseract/tessdata \
--lang chi_sim --linedata_only \
--noextract_font_properties \
--exposures "0" \
--maxpages 0 \
--workspace_dir ~/tmp \
--save_box_tiff \
--fontlist \
"NSimSun" \
"Arial Unicode MS" \
"SimSun" \
"Noto Sans CJK SC" \
"Noto Sans Mono CJK SC" \
--output_dir ~/tesstutorial/chi_sim_train
rm -rf ~/tesstutorial/chi_sim_layer
mkdir ~/tesstutorial/chi_sim_layer
combine_tessdata -e ~/tessdata_best/chi_sim.traineddata ~/tesstutorial/chi_sim_layer/chi_sim.lstm
lstmtraining \
--model_output ~/tesstutorial/chi_sim_layer/chi_sim_layer \
--continue_from ~/tesstutorial/chi_sim_layer/chi_sim.lstm \
--traineddata ~/tesstutorial/chi_sim_train/chi_sim/chi_sim.traineddata \
--append_index 5 --net_spec '[Lfx128 O1c1]' \
--train_listfile ~/tesstutorial/chi_sim_train/chi_sim.training_files.txt \
--debug_interval -1 \
--max_image_MB 6000 \
--max_iterations 6000
~/tesseract/bin/src/training/lstmtraining \
--stop_training \
--continue_from ~/tesstutorial/chi_sim_layer/chi_sim_layer_checkpoint \
--traineddata ~/tesstutorial/chi_sim_train/chi_sim/chi_sim.traineddata \
--model_output ~/tesstutorial/chi_sim_layer/chi_sim_layer.traineddata
~/tesseract/bin/src/training/lstmtraining \
--stop_training \
--convert_to_int \
--continue_from ~/tesstutorial/chi_sim_layer/chi_sim_layer_checkpoint \
--traineddata ~/tesstutorial/chi_sim_train/chi_sim/chi_sim.traineddata \
--model_output ~/tesstutorial/chi_sim_layer/chi_sim_layer_int.traineddata
cp ~/tesstutorial/chi_sim_layer/*.traineddata ~/tessdata_best/
ls -l ~/tesstutorial/chi_sim_layer/*.traineddata
注意convert_to_int 它可以把traineddata转换为int模式,traineddata文件会很小,而且训练速度会提升很多,精度会稍有下降
同样也可以转换为float方式