【2025 最新】PP-OCRv5 使用教程:从 0 到 1 完成安装、训练与高性能部署

一、PP-OCRv5 是什么?为什么值得一学

  1. 单模型覆盖 5 种文字类型:简体、繁体、拼音、英文、日文 + 手写体
  2. 相比 PP-OCRv4
    • 端到端指标↑13%
    • 小文本/竖排/古籍/生僻字错误率↓40%
  3. 移动端 3.2 MB,服务器版 12 MB,速度提升 20%
  4. 统一框架:PaddleOCR 3.0 同时支持检测、识别、版面分析、关键信息抽取

二、环境准备(Linux & Windows 通用)

1. 创建虚拟环境

# Ubuntu / macOS
python3.10 -m venv ppocrv5
source ppocrv5/bin/activate

# Windows
python -m venv ppocrv5
ppocrv5\Scripts\activate

2. 一键安装 Wheel(含 3.0.0 正式版)

# CPU 版
pip install paddlepaddle==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/

# GPU 版(CUDA 11.8,cuDNN 8.9)
pip install paddlepaddle-gpu==3.0.0.post118 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

3. 安装 PaddleOCR 与周边工具

git clone https://github.com/PaddlePaddle/PaddleOCR.git -b release/3.0
cd PaddleOCR
pip install -r requirements.txt
pip install "paddleocr[all]"          # 含版面、表格、关键信息抽取
paddlex --install paddle2onnx         # 后续转 ONNX 必备

三、30 秒体验:命令行直接 OCR

paddleocr ocr -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png \
              --det true --rec true --cls true \
              --use_doc_orientation_classify false

结果默认保存到 ./output/ 目录,精度媲美商业接口。


四、训练专属模型(以车牌识别为例)

1. 数据组织

plate_data/
├─ train/
│  ├─ img/          # jpg 图片
│  └─ label.txt     # 文件名\t标注
└─ test/
   ├─ img/
   └─ label.txt

标注示例:plate_001.jpg\t京AD12345

2. 下载预训练权重(检测+识别)

wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_det_pretrained.pdparams
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_rec_pretrained.pdparams

3. 修改配置文件

复制 configs/rec/PP-OCRv5/PP-OCRv5_server_rec.ymlplate_rec.yml
关键字段:

Train:
  dataset:
    name: SimpleDataSet
    data_dir: ./plate_data/train/img
    label_file: ./plate_data/train/label.txt
Eval:
  dataset:
    data_dir: ./plate_data/test/img
    label_file: ./plate_data/test/label.txt
Global:
  character_dict_path: ppocr/utils/dict/plate_dict.txt   # 自定义字典

4. 启动训练(单卡/多卡)

# 单卡
python tools/train.py -c plate_rec.yml \
  -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams

# 多卡
python -m paddle.distributed.launch --gpus 0,1,2,3 tools/train.py -c plate_rec.yml \
  -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams

5. 评估 & 导出

python tools/eval.py -c plate_rec.yml \
  -o Global.pretrained_model=output/rec/plate_rec/best_accuracy.pdparams

# 转推理模型
python tools/export_model.py -c plate_rec.yml \
  -o Global.pretrained_model=output/rec/plate_rec/best_accuracy.pdparams \
  Global.save_inference_dir=./inference/plate_rec

五、高性能部署 4 条路

场景 方案 加速比 教程入口
Python 服务 FastAPI + PaddleInference 见下文
C++ Windows PaddleInference + OpenCV 2.3× 本文第六节
嵌入式 RK3588 RKNN + C++ Demo 参考文献 
Intel CPU OpenVINO + C# 3.1× 参考文献 

1. Python 服务化(最通用)

# app.py
from fastapi import FastAPI, UploadFile
from paddleocr import PaddleOCR
ocr = PaddleOCR(det_model_dir="inference/plate_det",
                rec_model_dir="inference/plate_rec",
                cls_model_dir="inference/ch_ppocr_mobile_v2.0_cls")
@app.post("/ocr")
def ocr_file(file: UploadFile):
    result = ocr.ocr(file.file.read(), cls=True)
    return {"code": 0, "data": result}

启动:

uvicorn app:app --host 0.0.0.0 --port 8000 --workers 4

2. Windows C++ 推理(极致速度)

  • 环境:VS2019 + CMake3.30 + OpenCV4.9 + PaddleInference-3.0-cuda11.8
  • 模型准备:把 PP-OCRv5_mobile_detPP-OCRv5_mobile_recch_ppocr_mobile_v2.0_cls 放入 model/
  • 编译:
mkdir build && cd build
cmake .. -G "Visual Studio 16 2019" -A x64
cmake --build . --config Release
  • 运行:
Release\ppocr.exe \
  --det_model_dir=model/PP-OCRv5_mobile_det \
  --rec_model_dir=model/PP-OCRv5_mobile_rec \
  --cls_model_dir=model/ch_ppocr_mobile_v2.0_cls \
  --image_dir=plate_test.jpg --use_gpu=true --visualize=true

六、常见报错与排查

报错信息 原因 解决方案
ModuleNotFoundError: paddle2onnx 未安装转换器 paddlex --install paddle2onnx
CUDA error 700 显卡算力不匹配 换 10/16/20 系列或重编 PaddleInference
中文路径下 CMake 失败 Visual Studio 不支持中文 把项目移到英文目录
嵌入式段错误 RKNN 模型未对齐 检查 build-linux.sh 目标是否 rk3588

七、性能优化 6 条建议

  1. 输入尺寸对齐 32 倍数,开启 TensorRT
  2. 批处理推理:rec 批量 4~8,吞吐量↑60%
  3. 开启 MKL-DNN 或 OpenVINO,CPU 延时↓45%
  4. 删除无用字典行,rec 模型体积↓30%
  5. 使用 FP16 推理,显存减半,精度损失 <0.3%
  6. 对长图做切片预处理,防止 OOM

八、结语 & 下一步

恭喜你!跟着本篇 PP-OCRv5 使用教程,你已经完成了
「环境搭建 → 数据准备 → 模型训练 → 服务部署 → 性能优化」的全链路实践。

接下来可以试试

  • 把模型转 ONNX → TensorRT,在 NVIDIA Jetson 上跑实时视频 OCR
  • 结合 PP-StructureV3 做「版面分析 + 关键信息抽取」一体化方案
  • 使用 PaddleLite 将 3.2 MB 的 PP-OCRv5_mobile 部署到 Android 手机(<100 ms)

如果在实操中遇到任何报错,欢迎在评论区留言,我会定期更新踩坑清单。祝你 OCR 之路一帆风顺,我们下一篇「PP-OCRv5 量化与剪枝实战」再见!

© 版权声明
THE END
喜欢就支持一下吧