e
gcw_GSiqzzLf/RapidOCR-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

RapidOCR NPU 适配

模型介绍

RapidOCR 是基于 PaddleOCR 的 OCR(光学字符识别)模型集合,支持文本检测、方向分类和文本识别。本仓库提供的模型可在昇腾 Ascend NPU 上进行推理加速。

  • 原始模型地址: https://www.modelscope.cn/models/RapidAI/RapidOCR
  • 任务类型: OCR 文本检测与识别
  • 模型框架: PaddleOCR / ONNX
  • 输入格式: 图像 (JPG/PNG)
  • 输出格式: 文本内容 + 边界框坐标 + 置信度

模型文件结构

本仓库包含 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

NPU 适配说明

本模型使用 onnxruntime-cann 提供的 CANNExecutionProvider 实现在昇腾 NPU 上的推理加速。

在 NPU 推理时,设置环境变量 ORT_DEFAULT_PROVIDER=CANNExecutionProvider 即可自动使用 NPU 进行推理。CPU 推理使用 ORT_DEFAULT_PROVIDER=CPUExecutionProvider。

推理命令

CPU 推理

python3 inference.py --image test_image.jpg --device cpu

NPU 推理

python3 inference.py --image test_image.jpg --device npu

CPU/NPU 精度对比

python3 compare_cpu_npu.py

推理结果

使用测试图片 test_image.jpg(包含英文文本),RapidOCR 检测到 4 个文本区域:

序号文本内容置信度
1RapidOCR NPU Inference Test0.9379
2Hello World 123450.9710
3Optical Character Recognition0.9877
4Ascend 910 NPU Verification0.9808

CPU/NPU 精度测试结果

方法

  1. 使用同一张测试图片分别在 CPU 和 NPU 上运行 RapidOCR 推理
  2. 对比检测到的文本内容、置信度分数和边界框坐标
  3. 统计文本一致率、置信度差异和边界框差异

结果

指标CPUNPU差异
检测文本数440
文本一致数--4/4 (100%)
最大置信度差异--0.000000
最大边界框差异--0.000000

详细对比:

序号CPU 文本NPU 文本文本一致CPU 置信度NPU 置信度置信度差异
1RapidOCR NPU Inference TestRapidOCR NPU Inference Test✓0.9379070.9379070.0000%
2Hello World 12345Hello World 12345✓0.9710460.9710460.0000%
3Optical Character RecognitionOptical Character Recognition✓0.9877440.9877440.0000%
4Ascend 910 NPU VerificationAscend 910 NPU Verification✓0.9807870.9807870.0000%

精度测试结论

NPU 与 CPU 推理结果误差为 0.00%,符合精度误差小于 1% 的要求。

性能测试结果

阶段CPU 耗时 (s)NPU 耗时 (s)
文本检测 (det)1.15121.0902
方向分类 (cls)0.01500.0750
文本识别 (rec)0.48980.4967
总计1.98952.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 所有。