针对图像中的标准的印刷体文字,Tesseract或许是一个简单、高效的图片OCR方案选择。
前期准备
以Deepin为例,首先安装Tesseract 4.00,python依赖pytesseract和Pillow,并定义好环境变量。
1 | # 1. 安装Tesseract 4.00版本 |
生成待训练字体数据集
由于中文存在不同的字体形式,如果使用场景中有别的字体,比如隶书,那默认的字体识别模型效果就不会很好,所以有的时候需要根据场景中的字体训练相对应的字体识别模型。以下以生成华文行楷字体的训练数据集为例(前提是机器已经安装好了该字体),然后执行生成训练数据步骤:
1 | ~/image_projects/tesseract/src/training/tesstrain.sh \ |
参数解释:
--fonts_dir
字体安装目录--langdata_dir
上一节中clone下来的langdata_lstm项目--tessdata_dir
上一节中clone下来的tesseract项目--fontlist
你需要训练字体的名称
训练
1 | OMP_THREAD_LIMIT=8 lstmtraining --model_output ~/image_projects/model/STXingkai \ |
评估
此处的评估结果并不会给出准确率或者相关的评估指标,只会给出原文和识别结果的对比。
1 | lstmeval --model ~/image_projects/tesseract/tessdata/chi_sim.lstm \ |
1 | lstmeval --model STXingkai_checkpoint --traineddata ~/image_projects/tesseract/tessdata/chi_sim.traineddata --eval_listfile chi_sim.training_files.txt |
与现有的模型合并
1 | lstmtraining --stop_training \ |
现在,查看当前的系统支持的字体模型,已经支持华文行楷chi_sim_xk
的识别了。
1 | # 查看支持的语言:chi_sim指中文简体、eng指英文字体 |
1 | List of available languages (5): |
相关链接
https://github.com/tesseract-ocr/langdata_lstm
https://0o0.me/legendary/tesseract-fine-tune.html
https://qianjiye.de/2015/08/tesseract-ocr#outline_0
https://iami.xyz/Review-S05-Tesseract-lstm-traning-datafile/
https://0o0.me/legendary/tesseract-fine-tune.html