本指南基于PaddlePaddle 2.5及以上版本和PaddleOCR开发,操作系统为Linux或Windows均可。首先需要创建一个独立的Python虚拟环境,避免依赖冲突。
执行以下命令创建虚拟环境并激活:
conda create -n ocr_env python=3.9
conda activate ocr_env
接下来,安装PaddlePaddle。请根据你的硬件情况选择安装GPU版或CPU版。以下是GPU版本的安装命令(CUDA 11.2示例):
python -m pip install paddlepaddle-gpu==2.5.1 -i https://mirror.baidu.com/pypi/simple
如果是CPU版本,请执行:
python -m pip install paddlepaddle==2.5.1 -i https://mirror.baidu.com/pypi/simple
安装完成后,克隆PaddleOCR官方仓库并安装必要的Python依赖包:
git clone https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
pip install -r requirements.txt
pip install -e .
模型训练的第一步是准备数据。对于档案识别,通常使用“文字检测+文字识别”两阶段模型。本教程重点讲解文字识别模型的训练,这是提升档案录入准确率的关键。
你需要准备一批档案图片,建议单张图片高度控制在32像素左右,宽度不限。使用PPOCRLabel工具进行半自动标注。
安装标注工具:
pip install PPOCRLabel
启动标注工具,选择“文字识别”模式(模式3):
PPOCRLabel --lang ch --mode 3
操作步骤如下:
导出的数据格式如下,每一行代表一张图片的路径和对应的标注文字,用制表符\t分隔:
train_data/001.jpg 档案编号:2023-001
train_data/002.jpg 姓名:张三
PaddleOCR训练需要特定的数据目录结构。请在PaddleOCR根目录下创建一个名为train_data的文件夹,并将准备好的图片放入其中的img子文件夹。
目录结构示例:
PaddleOCR/
├── train_data/
│ ├── img/
│ │ ├── 001.jpg
│ │ └── 002.jpg
│ └── rec_gt.txt
将上一步生成的Label.txt内容复制到train_data/rec_gt.txt中,并修改图片路径,使其相对于train_data目录。例如:
img/001.jpg 档案编号:2023-001
img/002.jpg 姓名:张三
我们需要复制并修改官方提供的配置文件。以轻量级中文识别模型为例,配置文件位于configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml。
将该文件复制到根目录并重命名为my_rec_config.yml。使用文本编辑器打开,重点修改以下字段:
1. 修改数据集路径

找到Train.dataset.data_dir和Train.dataset.label_file_list,修改为:
Train:
dataset:
name: SimpleDataSet
data_dir: ./train_data/
label_file_list:
- ./train_data/rec_gt.txt
2. 修改字典文件路径
找到Global.character_dict_path,确保指向正确的字典文件。如果档案中包含特殊符号(如全角标点),建议修改字典:
Global:
character_dict_path: ppocr/utils/ppocr_keys_v1.txt
3. 调整训练参数
根据显存大小调整Train.loader.batch_size_per_card。显存不足时设为8或16,充足时可设为64或128。同时修改Global.pretrained_model指向预训练模型路径。
Train:
loader:
batch_size_per_card: 16
Global:
pretrained_model: ./pretrain_models/ch_ppocr_server_v2.0_rec_pre/best_accuracy
注意:如果没有预训练模型,请先下载官方预训练模型:
mkdir -p pretrain_models
cd pretrain_models
wget https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_ppocr_server_v2.0_rec_pre.tar
tar -xf ch_ppocr_server_v2.0_rec_pre.tar
cd ..
配置完成后,直接运行训练脚本。PaddleOCR提供了单机多卡和单机单卡训练脚本,这里使用单机单卡训练:
python tools/train.py -c my_rec_config.yml -o Global.epoch_num=50 Global.save_model_dir=./output/rec_model
参数说明:
output/rec_model。训练过程中,终端会实时打印Loss和Accuracy。当Accuracy趋于稳定时,即可停止训练(Ctrl+C)或等待训练结束。
训练完成后,最佳模型通常保存在output/rec_model/best_accuracy.pdparams。我们需要将其转换为推理模型格式。
1. 评估模型
如果划分了验证集,可以使用以下命令评估:
python tools/eval.py -c my_rec_config.yml -o Global.pretrained_model=./output/rec_model/best_accuracy
2. 导出推理模型
使用export_model.py将训练好的模型导出为.inference.pdmodel和.inference.pdiparams:
python tools/export_model.py -c my_rec_config.yml -o Global.pretrained_model=./output/rec_model/best_accuracy Global.save_inference_dir=./inference/rec_infer
执行后,在inference/rec_infer目录下将看到导出的模型文件。
我们编写一段Python代码,加载训练好的模型对新的档案图片进行识别。
创建test.py:
from paddleocr import PaddleOCR
初始化OCR对象
rec_model_dir指向刚才导出的推理模型目录
use_angle_cls=True开启方向分类,防止图片倒置
ocr = PaddleOCR(
rec_model_dir="./inference/rec_infer",
use_angle_cls=True,
lang="ch"
)
执行识别
img_path = "./test_archive.jpg"
result = ocr.ocr(img_path, cls=True)
解析并打印结果
for idx in range(len(result)):
res = result[idx]
for line in res:
print(f"识别文本: {line[1][0]}, 置信度: {line[1][1]:.4f}")
运行代码:
python test.py
至此,你已经完成了从环境搭建、数据标注、模型训练到最终代码调用的全流程。通过针对特定档案数据的微调,该模型在处理你的业务档案时,准确率将显著高于通用模型。