如何针对特定文档训练Tesseract 5 OCR?需额外工具吗?
针对特定文档训练Tesseract 5的实操指引
一、可行性说明
完全可行。针对特定文档训练本质是基于现有模型(你已训练的字体模型或官方预训练模型),用目标文档的标注样本做微调,让模型适配这类文档的版式、字符样式、排版规律,核心工具还是你已经在用的tesstrain,无需额外复杂工具。
二、准备工作
- 已部署的Tesseract 5及
tesstrain(你已具备) - 目标文档样本:准备20-50张清晰的目标文档图片(扫描或高清拍照,尽量覆盖不同页码、排版变体)
- 标注工具:可选
LabelImg(可视化标注)或直接用Tesseract自带的makebox生成标注后手动修正
三、分步操作
1. 生成并修正标注文件
对每张目标文档图片生成初始.box标注文件(包含字符坐标和识别文本):
tesseract input_image.png input_base --psm 6 makebox
--psm 6:适用于单块连续文本的文档,若目标文档是多列排版,可改用--psm 4- 打开生成的
input_base.box文件,手动修正识别错误的字符、偏移的坐标,确保每个字符的位置和内容匹配图片
2. 整理训练数据集结构
按照tesstrain的目录规范整理样本:
tesstrain/ ├── data/ │ ├── custom_doc.training/ │ │ ├── ground_truth/ │ │ │ ├── img1.box │ │ │ ├── img1.png │ │ │ ├── img2.box │ │ │ ├── img2.png │ │ │ └── ...
3. 执行微调训练
基于你之前训练好的字体模型(或官方预训练模型如eng.traineddata)启动训练:
cd tesstrain make training MODEL_NAME=custom_doc START_MODEL=your_trained_font_model \ TESSDATA_DIR=/usr/share/tesseract-ocr/5/tessdata \ MAX_ITERATIONS=1500
START_MODEL:填写你已训练完成的字体模型名称(需放在tessdata目录下),无自定义字体模型时可填官方模型名(如eng)MAX_ITERATIONS:根据样本量调整,20-50张样本用1000-2000次迭代足够
4. 导出并测试最终模型
训练结束后,将 checkpoint 导出为可直接使用的.traineddata模型:
lstmtraining --stop_training \ --continue_from tesstrain/data/custom_doc.training/checkpoints/custom_doc_checkpoint \ --traineddata tesstrain/data/custom_doc/custom_doc.traineddata \ --model_output custom_doc_final.traineddata
将生成的custom_doc_final.traineddata复制到系统tessdata目录,测试效果:
tesseract test_doc.png output --oem 3 --psm 6 -l custom_doc
四、可选辅助工具
- 标注效率提升:Ubuntu下可通过
sudo apt install labelimg安装可视化标注工具,标注文本区域后转换为.box格式,减少手动修正量 - 样本增强:若样本数量不足,用
imagemagick做简单增强(旋转、缩放、加噪):
convert input.png -rotate 3 rotated.png convert input.png -resize 110% scaled.png
内容的提问来源于stack exchange,提问作者Umar Syal
相关产品推荐
相关产品推荐

