z
zkx_/cv_convnextTiny_ocr-recognition-document_damo-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

cv_convnextTiny_ocr-recognition-document_damo on Ascend NPU

1. 简介

本文档记录 ConvNextViT OCR 文档印刷场景文字识别模型在昇腾 NPU (Ascend 910B3) 上的迁移适配与精度验证结果。

该模型与通用场景版 (cv_convnextTiny_ocr-recognition-general_damo) 共享相同的 ConvNeXt + ViTSTR 架构,差异在于训练数据——文档版针对印刷体文档(书籍、论文、合同等)进行了专门训练,对印刷文字的识别精度更高。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/damo/cv_convnextTiny_ocr-recognition-document_damo
  • 权重下载地址(HuggingFace Mirror):https://hf-mirror.com/damo/cv_convnextTiny_ocr-recognition-document_damo

参考文档:

  • https://modelscope.cn/models/damo/cv_convnextTiny_ocr-recognition-document_damo
  • 通用版适配文档:cv_convnextTiny_ocr-recognition-general_damo-ascend/README.md

2. 验证环境

组件版本
CANN8.5.1
torch2.8.0
torch_npu2.8.0.post4
modelscope1.37.0
numpy1.24.4
opencv-python-headless4.13.0
  • NPU:Ascend 910B3,单卡推理
  • 模型大小:约 19.2M 参数,~77MB
  • 与通用版共用同一 ConvNextViT 模型类,适配方式完全一致

3. 推理启动

3.1 环境准备

pip install torch==2.8.0 torch_npu==2.8.0.post4 \
    -i https://mirrors.huaweicloud.com/repository/pypi/simple \
    --trusted-host mirrors.huaweicloud.com

pip install modelscope==1.37.0 opencv-python-headless numpy \
    sortedcontainers simplejson addict datasets pyarrow \
    -i https://mirrors.huaweicloud.com/repository/pypi/simple \
    --trusted-host mirrors.huaweicloud.com

3.2 下载模型权重

modelscope download --model damo/cv_convnextTiny_ocr-recognition-document_damo \
    --local_dir ./cv_convnextTiny_ocr-recognition-document_damo

3.3 命令行推理

# NPU 推理
python inference.py --image document.jpg --device npu

# CPU 推理
python inference.py --image document.jpg --device cpu

3.4 Python API

from inference import run_inference
result = run_inference("document.jpg", device="npu")
print(f"识别文本: {result['text']}")
print(f"耗时: {result['time_ms']:.2f} ms")

4. Smoke 验证

python evaluate.py

验证结果:

  • CPU 推理正常返回 probs shape [1, 201, 7644]
  • NPU 推理正常返回同 shape 输出
  • CPU 与 NPU 解码文本完全一致('版版')
  • top1_argmax_match 达到 100%

5. 性能参考

测试条件:input [3, 3, 32, 300](3 个 chunk),30 轮取平均。

指标CPUNPU (Ascend 910B3)
平均耗时3002.6 ms24.0 ms
中位耗时2981.6 ms24.0 ms
加速比—125.1x

6. 精度评测

6.1 评测方法

对比 CPU (PyTorch) 与 NPU (torch_npu) 在同一随机输入 [3, 3, 32, 300] 下的 CTC logits 输出。

6.2 评测结果

指标数值
Logits 形状[1, 201, 7644]
鲁棒平均相对误差0.0669%
Top-1 argmax 匹配率100.00%
精度要求平均相对误差 < 1%
精度评测通过

7. 注意事项

  1. 与通用版的差异:仅权重不同,适配代码完全复用。推理脚本通过 --model_dir 参数区分模型路径
  2. 适用场景:文档印刷场景(书籍、论文、合同),对印刷体文字效果优于通用版
  3. 输入格式:RGB 3 通道 [B, 3, 32, W],内部转灰度,chunk 宽度 300px,batch 须为 3 的倍数
  4. 首次推理:首次 NPU 推理有算子编译开销(约 10-20s),后续稳定在 ~24ms