本文档记录 ConvNextViT OCR 文档印刷场景文字识别模型在昇腾 NPU (Ascend 910B3) 上的迁移适配与精度验证结果。
该模型与通用场景版 (cv_convnextTiny_ocr-recognition-general_damo) 共享相同的 ConvNeXt + ViTSTR 架构,差异在于训练数据——文档版针对印刷体文档(书籍、论文、合同等)进行了专门训练,对印刷文字的识别精度更高。
相关获取地址:
参考文档:
cv_convnextTiny_ocr-recognition-general_damo-ascend/README.md| 组件 | 版本 |
|---|---|
CANN | 8.5.1 |
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
modelscope | 1.37.0 |
numpy | 1.24.4 |
opencv-python-headless | 4.13.0 |
Ascend 910B3,单卡推理ConvNextViT 模型类,适配方式完全一致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.commodelscope download --model damo/cv_convnextTiny_ocr-recognition-document_damo \
--local_dir ./cv_convnextTiny_ocr-recognition-document_damo# NPU 推理
python inference.py --image document.jpg --device npu
# CPU 推理
python inference.py --image document.jpg --device cpufrom inference import run_inference
result = run_inference("document.jpg", device="npu")
print(f"识别文本: {result['text']}")
print(f"耗时: {result['time_ms']:.2f} ms")python evaluate.py验证结果:
probs shape [1, 201, 7644]'版版')top1_argmax_match 达到 100%测试条件:input [3, 3, 32, 300](3 个 chunk),30 轮取平均。
| 指标 | CPU | NPU (Ascend 910B3) |
|---|---|---|
| 平均耗时 | 3002.6 ms | 24.0 ms |
| 中位耗时 | 2981.6 ms | 24.0 ms |
| 加速比 | — | 125.1x |
对比 CPU (PyTorch) 与 NPU (torch_npu) 在同一随机输入 [3, 3, 32, 300] 下的 CTC logits 输出。
| 指标 | 数值 |
|---|---|
| Logits 形状 | [1, 201, 7644] |
| 鲁棒平均相对误差 | 0.0669% |
| Top-1 argmax 匹配率 | 100.00% |
| 精度要求 | 平均相对误差 < 1% |
| 精度评测 | 通过 |
--model_dir 参数区分模型路径[B, 3, 32, W],内部转灰度,chunk 宽度 300px,batch 须为 3 的倍数