目录1. 用PPOCRLabel标注数据2. 搭建训练环境2.1 拉取预安装 PaddlePaddle 的镜像2.2 下载PaddleOCR源码2.3 下载预训练模型2.4 数据存放目录结构2.5 用镜像构建并进入Docker容器2.6 安装其余训练依赖2.7 配置动态库搜索路径3. 训练PP-OCRv5检测模型3.1 修改配置文件3.2 检测模型训练4. 训练PP-OCRv5识别模型4.1 修改配置文件4.2 识别模型训练5. 模型评估5.1 检测模型评估5.2 识别模型评估6. 模型导出6.1 检测模型导出6.2 识别模型导出7. 模型格式转化8. 官方文档1. 用PPOCRLabel标注数据标注环境Windows系统PPOCRLabel版本v3.1.6注意安装用清华源加速1.1 创建虚拟环境注意高版本python PPOCRLabel 依赖的库兼容性问题目前用python3.10conda create -n ppocrlabel python3.101.2 激活虚拟环境conda activate ppocrlabel1.3 安装飞桨框架paddlepaddle备注目前采用cpu版本python -m pip install paddlepaddle -i https://www.paddlepaddle.org.cn/packages/stable/cpu/1.4 安装标注工具PPOCRLabelpip install PPOCRLabel -i https://pypi.tuna.tsinghua.edu.cn/simple1.5 安装paddlex[ocr]pip install paddlex[ocr] -i https://pypi.tuna.tsinghua.edu.cn/simple1.6 运行PPOCRLabel.py脚本1.6.1 进入PPOCRLabel安装目录例如cd D:\ProgramData\miniconda3\envs\ppocrlabel\Lib\site-packages\PPOCRLabel1.6.2 运行PPOCRLabel.py脚本注意1.6.2.1 运行脚本的方式会看到报错信息1.6.2.2 第一次启动要用脚本要下载模型默认路径 C:\Users\xxx\.paddlex\official_models1.6.2.3 PPOCRLabel --lang ch 方式运行需要等待一段时间才能看到界面python PPOCRLabel.py --lang ch1.6.2.4 备注报错修复(ppocrlabel) D:\ProgramData\miniconda3\envs\ppocrlabel\Lib\site-packages\PPOCRLabelpython PPOCRLabel.py --lang ch 信息: 用提供的模式无法找到文件。 D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\paddle\utils\cpp_extension\extension_utils.py:712: UserWarning: No ccache found. Please be aware that recompiling all source files may be required. You can download and install ccache from: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md warnings.warn(warning_message) Traceback (most recent call last): File D:\ProgramData\miniconda3\envs\ppocrlabel\Lib\site-packages\PPOCRLabel\PPOCRLabel.py, line 86, in module from paddleocr import PaddleOCR, PPStructureV3, TextRecognition, TextDetection File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\paddleocr\__init__.py, line 44, in module from ._api_client import ( File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\paddleocr\_api_client\__init__.py, line 16, in module from .async_client import AsyncPaddleOCRClient File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\paddleocr\_api_client\async_client.py, line 21, in module import aiohttp File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\aiohttp\__init__.py, line 6, in module from .client import ( File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\aiohttp\client.py, line 83, in module from .connector import ( File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\aiohttp\connector.py, line 918, in module _SSL_CONTEXT_VERIFIED _make_ssl_context(True) File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\site-packages\aiohttp\connector.py, line 901, in _make_ssl_context sslcontext ssl.create_default_context() File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\ssl.py, line 771, in create_default_context context.load_default_certs(purpose) File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\ssl.py, line 592, in load_default_certs self._load_windows_store_certs(storename, purpose) File D:\ProgramData\miniconda3\envs\ppocrlabel\lib\ssl.py, line 584, in _load_windows_store_certs self.load_verify_locations(cadatacerts) ssl.SSLError: [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:4040)尝试重新安装 OpenSSL 并修复 Conda 环境conda install openssl -c conda-forge --force-reinstall1.7 标注1.7.1 打开目录1.7.2 标注1.7.3 导出标记结果1.7.4 导出识别结果1.8 数据集划分路径问题如果在Windows下划分数据但计划在Linux系统下训练需要注意文件路径的差异可能会因路径前缀问题导致训练时找不到文件。建议尽量在最终训练的环境如Linux中直接进行数据划分下载PPOCRLabel源码复制到训练环境放在标注数据集同一目录git clone https://github.com/PFCCLab/PPOCRLabel.git|- labeled_dataset|- PPOCRLabel进入PPOCRLabel安装目录cd ./PPOCRLabel # 将目录切换到PPOCRLabel文件夹下执行脚本生成划分后的数据集train_datapython gen_ocr_train_val_test.py --trainValTestRatio 7:2:1 --datasetRootPath ../labeled_dataset|- labeled_dataset|- PPOCRLabel|- train_data|- det|- rec参数参数说明--trainValTestRatio训练集验证集测试集比例--datasetRootPath已标注数据集路径--detRootPath划分后的检测数据集存放路径--recRootPath划分后的识别数据集存放路径2. 搭建训练环境飞桨快速安装【docker方式】:开始使用_飞桨-源于产业实践的开源深度学习平台硬件配置GPU NVIDIA GeForce RTX 50802.1 拉取预安装 PaddlePaddle 的镜像镜像版本信息3.3.1-gpu-cuda13.0-cudnn9.13docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.3.1-gpu-cuda13.0-cudnn9.132.2 下载PaddleOCR源码PaddleOCRv3.6.0# 推荐方式 git clone https://github.com/PaddlePaddle/PaddleOCR2.3 下载预训练模型文本检测模块 - PaddleOCR 文档文本识别模块 - PaddleOCR 文档2.4 数据存放目录结构|-- workspace/ppocr/ppocrv5|-- PaddleOCR #源码|-- pretrained_model #预训练模型|-- train_data #拆分后的标注数据集|-- labeled_dataset #原始数据集|-- PPOCRLabel #用于数据集划分2.5用镜像构建并进入Docker容器docker run -itd --name paddleocr --gpus all --shm-size8g -v /home/xxx/workspace:/workspace/ppocr ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.3.1-gpu-cuda13.0-cudnn9.13 /bin/bash2.6 安装其余训练依赖进入PaddleOCR源码目录安装其余训练依赖python -m pip install -r requirements.txt2.7 配置动态库搜索路径export LD_LIBRARY_PATH/lib/x86_64-linux-gnu:/usr/local/cuda/lib64:$LD_LIBRARY_PATH容器内默认缺少 CUDA lib64 动态库搜索路径Paddle 找不到 cudart/cuda 运行库判定 GPU 不可用报错如下/usr/local/lib/python3.10/dist-packages/paddle/base/framework.py:829: UserWarning: You are using GPU version Paddle, but your CUDA device is not set properly. CPU device will be used by default. warnings.warn( Skipping import of the encryption module. E0615 05:28:28.237717 22589 place.cc:424] Cannot use GPU because there is no GPU detected on your machine. Traceback (most recent call last): File /workspace/ppocr/ppocrv6/PaddleOCR/tools/train.py, line 297, in module config, device, logger, vdl_writer program.preprocess(is_trainTrue) File /workspace/ppocr/ppocrv6/PaddleOCR/tools/program.py, line 976, in preprocess device paddle.set_device(device) File /usr/local/lib/python3.10/dist-packages/paddle/device/__init__.py, line 631, in set_device place device_to_place(device) File /usr/local/lib/python3.10/dist-packages/paddle/device/__init__.py, line 392, in device_to_place device _convert_to_place(device) File /usr/local/lib/python3.10/dist-packages/paddle/device/__init__.py, line 448, in _convert_to_place place core.CUDAPlace(device_id) ValueError: (InvalidArgument) use wrong place, Please check. (at /paddle/paddle/fluid/pybind/place.cc:427)3. 训练PP-OCRv5检测模型3.1 修改配置文件configs/det/PP-OCRv5/PP-OCRv5_server_det.yml例如3.2 检测模型训练#单卡训练 (默认训练方式) python tools/train.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml模型输出目录4. 训练PP-OCRv5识别模型4.1 修改配置文件configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml4.2 识别模型训练#单卡训练 (默认训练方式) python tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml模型输出目录5. 模型评估5.1 检测模型评估python tools/eval.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml -o Global.pretrained_modeloutput/PP-OCRv5_server_det/best_accuracy.pdparams5.2 识别模型评估python tools/eval.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o Global.pretrained_modeloutput/PP-OCRv5_server_rec/best_accuracy.pdparams6. 模型导出6.1 检测模型导出python tools/export_model.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml -o Global.pretrained_modeloutput/PP-OCRv5_server_det/best_accuracy.pdparams Global.save_inference_dir./PP-OCRv5_server_det_infer/6.2 识别模型导出python tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o Global.pretrained_modeloutput/PP-OCRv5_server_rec/best_accuracy.pdparams Global.save_inference_dir./PP-OCRv5_server_rec_infer/7.pdparams格式转onnx格式7.1 安装paddlex[ocr]pip install paddlex[ocr]7.2 安装paddle2onnxpaddlex --install paddle2onnx版本信息paddlex3.7.1paddle2onnx2.0.2rc37.3 执行格式转换检测模型转onnxpaddlex --paddle2onnx --paddle_model_dir PP-OCRv5_server_det_infer --onnx_model_dir PP-OCRv5_server_det_infer_onnx --opset_version 11识别模型转onnxpaddlex --paddle2onnx --paddle_model_dir PP-OCRv5_server_rec_infer --onnx_model_dir PP-OCRv5_server_rec_infer_onnx --opset_version 11报错信息root224d8748be67:/workspace/ppocr/ppocrv5/PaddleOCR# paddlex --paddle2onnx --paddle_model_dir PP-OCRv5_server_det_infer --onnx_model_dir PP-OCRv5_server_det_infer_onnx --opset_version 11 Input dir: PP-OCRv5_server_det_infer Output dir: PP-OCRv5_server_det_infer_onnx Paddle2ONNX conversion starting... /usr/local/lib/python3.10/dist-packages/paddle/base/framework.py:829: UserWarning: You are using GPU version Paddle, but your CUDA device is not set properly. CPU device will be used by default. warnings.warn( [Paddle2ONNX] Start parsing the Paddle model file... [Paddle2ONNX] Use opset_version 11 for ONNX export. 2026-06-16 02:39:45 [ERROR] Failed to convert PaddlePaddle model: (Unimplemented) the 0th elementwise MUST be ir::FloatAttribute [Hint: Expected array_list[0].isa::pir::FloatAttribute() true, but received array_list[0].isa::pir::FloatAttribute():0 ! true:1.] (at /github/workspace/paddle2onnx/parser/pir_parser.cc:814) . Paddle2ONNX conversion failed with exit code 2558. 官方文档PaddleOCR 文档PP-OCRv5: 使用教程 - PaddleOCR 文档标注其它数据标注工具 - PaddleOCR 文档PPOCRLabelv3 PPOCRLabel/README_ch.md at main · PFCCLab/PPOCRLabel · GitHub训练微调模块概述 - PaddleOCR 文档文本检测模块 - PaddleOCR 文档文本识别模块 - PaddleOCR 文档获取 ONNX 模型获取ONNX模型 - PaddleOCR 文档