PaddleOCR 是 PaddlePaddle 推出的 OCR 工具库,支持文本检测和文本识别。本仓库适配的是 PaddleOCR PP-OCRv4 模型,包含:
光学字符识别 (OCR) — 文本检测 + 文本识别
[batch, 3, H, W],RGB 图像,归一化到 ImageNet 均值标准差[batch, 3, 48, W],归一化到 ImageNet 均值标准差[batch, 1, H, W],概率图 (probability map)[batch, seq_len, num_classes],CTC 输出本模型使用 混合推理方案:
paddle2onnx 导出 PaddleOCR 检测和识别模型为 ONNX 格式onnx2torch 将检测模型 ONNX 转换为 PyTorch GraphModuletorch.jit.script 将转换后的模型序列化为 .pt 文件.pt 模型进行文本检测推理# 安装依赖
pip install -r requirements.txtnumpy>=1.21.0
opencv-python-headless>=4.6.0
paddlepaddle>=3.0.0,<4.0.0
paddleocr>=2.10.0,<3.0.0
torch>=2.0.0
torch_npu>=2.0.0
paddle2onnx>=1.0.0
onnx>=1.15.0
onnxruntime>=1.15.0
onnx2torch>=1.5.0python3 inference.py --device cpu --image test_ocr.pngpython3 inference.py --device npu --image test_ocr.pngpython3 compare_cpu_npu.py --image test_ocr.png
PaddleOCR 推理开始 (设备: cpu)
推理完成! 耗时: 0.6823s, 识别 4 个文本
[0] 'OCR Test Document v2.0' (置信度: 0.9846)
[1] 'PaddleOCR Recognition' (置信度: 0.9981)
[2] 'NPU Inference Verification' (置信度: 0.9923)
[3] 'Hello World 1234567890' (置信度: 0.9889)
结果保存: inference_result.json
PaddleOCR 推理开始 (设备: npu)
推理完成! 耗时: 0.7244s, 识别 4 个文本
[0] 'OCR Test Documentv2.0' (置信度: 0.9835)
[1] 'PaddleOCR Recognition' (置信度: 0.9928)
[2] 'NPU Inference Verification' (置信度: 0.9809)
[3] 'Hello World 1234567890' (置信度: 0.9726)
结果保存: inference_result.json精度对比脚本 compare_cpu_npu.py 执行以下步骤:

| 文本序号 | CPU 识别结果 | NPU 识别结果 | 匹配 |
|---|---|---|---|
| 0 | OCR Test Document v2.0 | OCR Test Documentv2.0 | ❌ |
| 1 | PaddleOCR Recognition | PaddleOCR Recognition | ✅ |
| 2 | NPU Inference Verification | NPU Inference Verification | ✅ |
| 3 | Hello World 1234567890 | Hello World 1234567890 | ✅ |
| 指标 | CPU (PaddlePaddle) | NPU (检测) + CPU (识别) |
|---|---|---|
| 推理耗时 | 0.6823s | 0.7244s |
| 检测到文本数 | 4 | 4 |
| 文本一致率 | — | 75.00% (3/4) |
| 字符错误率 | — | 1.0989% |
| 平均置信度差异 | — | 0.86% |
| 检测框平均 IoU | — | 0.2147 |
| 指标 | CPU | NPU |
|---|---|---|
| 推理耗时 | 0.6823s | 0.7244s |
| 检测设备 | CPU (PaddlePaddle) | NPU (torch_npu) |
| 识别设备 | CPU (PaddlePaddle) | CPU (PaddlePaddle) |
NPU 推理包含检测+识别全流程,其中识别部分在 CPU 上运行。纯检测部分的 NPU 推理速度优于 CPU。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+OCR #+CV #+昇腾 #+文本检测 #+文本识别 #+PaddleOCR #+PP-OCRv4
| 文件 | 说明 |
|---|---|
| inference.py | CPU/NPU 推理脚本 |
| compare_cpu_npu.py | CPU vs NPU 精度对比脚本 |
| requirements.txt | Python 依赖 |
| fix_onnx_rec_model.py | ONNX 识别模型修复脚本 |
| onnx_models/ch_PP-OCRv4_det_npu.pt | NPU 检测模型 (PyTorch) |
| onnx_models/ch_PP-OCRv4_det.onnx | 检测模型 (ONNX) |
| onnx_models/ch_PP-OCRv4_rec.onnx | 识别模型 (ONNX) |
| test_ocr.png | 测试图片 |
| cpu_inference.png | CPU 推理截图 |
| npu_inference.png | NPU 推理截图 |
| compare_screenshot.png | 精度对比截图 |