cube-ocr 是一款基于 Qwen2VL 架构的 OCR(光学字符识别)视觉语言模型,通过 MinerU2-2B 进行微调,可从文档图像中高质量提取文本。本仓库提供 cube-ocr 的 Ascend NPU 适配方案,支持在华为 Ascend 910 硬件上进行高效推理。
| 项目 | 详情 |
|---|---|
| 硬件 | 华为 Ascend 910 NPU |
| CANN 版本 | 8.5.1 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| 精度 | bfloat16 |
| 推理模式 | 静态图(torch.no_grad) |
pip install torch torch_npu transformers pillow
pip install modelscopemodelscope download --model Logosdata/cube-ocr模型将缓存于 ~/.cache/modelscope/hub/models/Logosdata/cube-ocr/。
核心 VLM 模型位于:
models/MinerU2___5-2509-1___2B/# Single image inference
python3 inference.py --image /path/to/image.png
# Benchmark mode (5 runs)
python3 inference.py --benchmark --num-runs 5
# With CPU accuracy comparison
python3 inference.py --compare-cpu
# Save output
python3 inference.py --image input.png --output result.txtfrom inference import get_npu_device, load_model, run_ocr
from PIL import Image
device = get_npu_device()
model, processor = load_model(MODEL_PATH, device)
image = Image.open("document.png").convert("RGB")
result = run_ocr(model, processor, image, device)
print(result)| 测试用例 | 完全匹配 | CER(%) | 字符重叠率(%) | NPU 耗时(秒) | CPU 耗时(秒) | 加速比 |
|---|---|---|---|---|---|---|
| english_text | 否 | 1.79 | 100.00 | 1.65 | 34.22 | 20.70x |
| numbers_symbols | 是 | 0.00 | 100.00 | 1.40 | 41.75 | 29.77x |
| document | 是 | 0.00 | 100.00 | 1.46 | 56.25 | 38.50x |
| 指标 | 数值 |
|---|---|
| 总测试数 | 3 |
| 完全匹配率 | 66.7% |
| 平均 CER | 0.60% |
| 最大 CER | 1.79% |
| 相对 CPU 平均加速比 | 29.66x |
| NPU 一致性(3 次运行) | 确定性(输出完全一致) |
注意:english_text 测试中 1.79% 的 CER 是由于 NPU(bfloat16)与 CPU(float32)之间的精度差异导致。NPU 输出完全具有确定性。在实际 OCR 使用场景中,输出质量相当。
| 场景 | NPU 耗时 | 吞吐量 | 相对 CPU |
|---|---|---|---|
| 文本文档 | 1.46 秒 | ~98 tokens/s | 38.5x |
| 数字/符号 | 1.40 秒 | ~46 tokens/s | 29.8x |
| 混合内容 | 1.65 秒 | ~67 tokens/s | 20.7x |
cube-ocr-npu/
├── inference.py # NPU inference script
├── evaluate.py # Accuracy & performance evaluation
├── eval_output/ # Evaluation results and logs
│ ├── evaluation_results.json # Raw results
│ ├── evaluation_report.md # Detailed report
│ └── test_*.png # Test images
└── README.md # This fileApache 2.0 - 与原始 cube-ocr 模型相同。
原始模型:Logosdata/cube-ocr
基于华为昇腾 CANN 8.5.1 和 torch_npu 进行 NPU 适配。