en_ppocr_mobile_v2.0_table_rec_infer 是 PaddleOCR 的英文表格识别模型,基于 MobileNetV2 骨干网络和 Sequence-to-Sequence 识别头。该模型用于识别表格单元格中的文本内容以及表格结构,输出每个时间步的字符/结构 token 预测。
[1, 3, 32, W] float32 张量(高度固定为 32,宽度可变)[1, seq_len, 279] float32 张量,包含 279 个字符/结构 token 类别的预测分数该模型以 ONNX 格式提供,可直接在 CPU(ONNX Runtime CPUExecutionProvider)和昇腾 NPU(ONNX Runtime CANNExecutionProvider)上运行。
model.onnx),无需格式转换CANNExecutionProvider 在昇腾 NPU 上运行pip install onnxruntime opencv-python numpy若需 NPU 推理,还需安装 CANN 版本的 ONNX Runtime:
pip install onnxruntime-cann模型文件已包含在本仓库中,您也可以从 ModelScope 下载:
pip install modelscope
python -c "from modelscope.hub.snapshot_download import snapshot_download; snapshot_download('cycloneboy/en_ppocr_mobile_v2.0_table_rec_infer')"python3 inference.py --image test_image.jpg --device cpupython3 inference.py --image test_image.jpg --device npupython3 compare_cpu_npu.py --image test_image.jpg使用 test_ocr_image.png (399×78) 作为测试图片,预处理后输入形状为 [1, 3, 32, 163]。
| 指标 | CPU | NPU |
|---|---|---|
| 推理耗时 | 12.21 ms | 1.56 ms |
| Logits 范围 | [0.0000, 0.9087] | [0.0000, 0.9087] |
| 预测序列长度 | 41 | 41 |
| 字符类别数 | 279 | 279 |

使用 ONNX Runtime 的 CPUExecutionProvider 和 CANNExecutionProvider 分别对同一张测试图片进行推理,对比输出的 Logits 张量和 Argmax 预测结果。通过以下指标评估精度:
| 指标 | 值 |
|---|---|
| 最大绝对误差 (Max Abs Error) | 0.003807 |
| 平均绝对误差 (Mean Abs Error) | 0.000007 |
| 均方误差 (MSE) | < 0.000001 |
| 余弦相似度 (Cosine Similarity) | 0.999999 |
| 归一化相对误差 | 0.0008% |
| Argmax 预测一致率 | 100.0000% |
| 概率平均绝对误差 | < 0.000001 |
| KL 散度 | -0.000001 |
NPU 与 CPU 推理结果误差为 0.0008%,符合精度误差小于 1% 的要求。 余弦相似度达到 0.999999,Argmax 预测类别完全一致(一致率 100%),NPU 和 CPU 的预测结果完全相同。
| 设备 | 平均耗时 (ms) | 标准差 (ms) | 加速比 |
|---|---|---|---|
| CPU (ONNX Runtime) | 12.21 | 0.85 | 1.00× |
| NPU (CANN) | 1.56 | 0.12 | 7.85× |
NPU 推理速度是 CPU 的 7.85 倍,性能提升显著。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+OCR #+CV #+表格识别 #+昇腾 #+PPOCR #+MobileNet