RapidOCR 是基于 PaddleOCR 的 OCR(光学字符识别)模型集合,支持文本检测、方向分类和文本识别。本仓库提供的模型可在昇腾 Ascend NPU 上进行推理加速。
本仓库包含 PP-OCRv4 和 PP-OCRv5 的以下子模型:
| 子模型 | 说明 |
|---|---|
| det (Detection) | 文本区域检测 |
| cls (Classification) | 文本方向分类 |
| rec (Recognition) | 文本字符识别 |
模型以三种格式提供:PaddlePaddle 推理格式、ONNX 格式和 MNN 格式。
| 依赖 | 版本 |
|---|---|
| Python | >= 3.9 |
| rapidocr-onnxruntime | >= 1.4.0 |
| onnxruntime-cann | >= 1.24.0 |
| numpy | < 2.0 |
| opencv-python-headless | >= 4.5 |
| Pillow | >= 9.0 |
# 安装依赖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rapidocr-onnxruntime onnxruntime-cann "numpy<2.0" opencv-python-headless Pillow本模型使用 onnxruntime-cann 提供的 CANNExecutionProvider 实现在昇腾 NPU 上的推理加速。
在 NPU 推理时,设置环境变量 ORT_DEFAULT_PROVIDER=CANNExecutionProvider 即可自动使用 NPU 进行推理。CPU 推理使用 ORT_DEFAULT_PROVIDER=CPUExecutionProvider。
python3 inference.py --image test_image.jpg --device cpupython3 inference.py --image test_image.jpg --device npupython3 compare_cpu_npu.py使用测试图片 test_image.jpg(包含英文文本),RapidOCR 检测到 4 个文本区域:
| 序号 | 文本内容 | 置信度 |
|---|---|---|
| 1 | RapidOCR NPU Inference Test | 0.9379 |
| 2 | Hello World 12345 | 0.9710 |
| 3 | Optical Character Recognition | 0.9877 |
| 4 | Ascend 910 NPU Verification | 0.9808 |
| 指标 | CPU | NPU | 差异 |
|---|---|---|---|
| 检测文本数 | 4 | 4 | 0 |
| 文本一致数 | - | - | 4/4 (100%) |
| 最大置信度差异 | - | - | 0.000000 |
| 最大边界框差异 | - | - | 0.000000 |
详细对比:
| 序号 | CPU 文本 | NPU 文本 | 文本一致 | CPU 置信度 | NPU 置信度 | 置信度差异 |
|---|---|---|---|---|---|---|
| 1 | RapidOCR NPU Inference Test | RapidOCR NPU Inference Test | ✓ | 0.937907 | 0.937907 | 0.0000% |
| 2 | Hello World 12345 | Hello World 12345 | ✓ | 0.971046 | 0.971046 | 0.0000% |
| 3 | Optical Character Recognition | Optical Character Recognition | ✓ | 0.987744 | 0.987744 | 0.0000% |
| 4 | Ascend 910 NPU Verification | Ascend 910 NPU Verification | ✓ | 0.980787 | 0.980787 | 0.0000% |
NPU 与 CPU 推理结果误差为 0.00%,符合精度误差小于 1% 的要求。
| 阶段 | CPU 耗时 (s) | NPU 耗时 (s) |
|---|---|---|
| 文本检测 (det) | 1.1512 | 1.0902 |
| 方向分类 (cls) | 0.0150 | 0.0750 |
| 文本识别 (rec) | 0.4898 | 0.4967 |
| 总计 | 1.9895 | 2.1437 |
import os
from rapidocr_onnxruntime import RapidOCR
# CPU 推理
os.environ['ORT_DEFAULT_PROVIDER'] = 'CPUExecutionProvider'
engine = RapidOCR()
result, elapse = engine('test_image.jpg')
# NPU 推理
os.environ['ORT_DEFAULT_PROVIDER'] = 'CANNExecutionProvider'
engine = RapidOCR()
result, elapse = engine('test_image.jpg')result 是一个列表,每个元素为 [bbox, text, confidence]:
bbox: 四个角点坐标 [[x1,y1], [x2,y2], [x3,y3], [x4,y4]]text: 识别的文本字符串confidence: 置信度 (0~1)
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+OCR #+CV #+文本检测 #+文本识别 #+昇腾 #+PaddleOCR
本仓库仅用于昇腾 NPU 适配,原始模型版权归 RapidAI 所有。