本模型为基于 CRAFT (Character Region Awareness for Text Detection) 的 OCR 文本检测模型,使用 VGG16BN 作为骨干网络,能够检测图像中的文本区域并输出文本边界框坐标。
| 项目 | 说明 |
|---|---|
| 输入格式 | 图像文件(支持 JPG、PNG 等常见格式) |
| 输入尺寸 | 自动缩放至最长边 1280 像素,保持宽高比 |
| 输出格式 | JSON 文件,包含检测到的文本区域边界框坐标 |
| 输出内容 | 每个文本区域以 4 个顶点坐标表示的多边形边界框 |
本模型已适配华为昇腾 Ascend NPU,支持在 CPU 和 NPU 两种设备上运行推理。NPU 适配要点:
torch_npu 将模型权重加载到昇腾 NPU 设备torch.npu.synchronize() 确保正确的性能测量# 安装基础依赖
pip install torch torchvision opencv-python-headless numpy
# 安装昇腾 NPU 支持(根据 CANN 版本选择)
# pip install torch_npu
# 安装 CRAFT 权重下载依赖
pip install Pillowpython inference.py --image test_image.jpg --device cpupython inference.py --image test_image.jpg --device npupython compare_cpu_npu.py --cpu-results detection_results_cpu.json --npu-results detection_results_npu.json下图为运行截图:

| 指标 | 值 |
|---|---|
| 检测到的文本区域数 | 1 |
| 平均推理时间(5 次) | 11099.17 ms |
| 运行设备 | CPU |
| 指标 | 值 |
|---|---|
| 检测到的文本区域数 | 1 |
| 平均推理时间(5 次) | 15.84 ms |
| 运行设备 | Ascend 910B |
| 指标 | CPU | NPU | 加速比 |
|---|---|---|---|
| 平均推理时间 | 11099.17 ms | 15.84 ms | 700.71x |
| 检测框数量 | 1 | 1 | 1:1 |
| 指标 | 数值 |
|---|---|
| 输出张量形状 | [1, 300, 600, 2] |
| 最大绝对差异(原始输出) | 0.00058 |
| 平均绝对差异(原始输出) | 0.0000084 |
| 最大绝对差异(Sigmoid 后) | 0.00012 |
| 平均绝对差异(Sigmoid 后) | 0.000002 |
| 平均相对误差 | 0.28% |
| 指标 | 数值 |
|---|---|
| CPU 检测框数 | 1 |
| NPU 检测框数 | 1 |
| 检测框坐标一致性 | 完全一致 |
| 坐标最大差异 | 0.0 |
NPU 与 CPU 推理结果误差为 0.28%,远低于 1% 的要求,符合精度标准。
NPU 与 CPU 推理结果误差 < 1%。
import torch
import torch_npu
from easyocr.craft import CRAFT
# 加载模型
device = torch.device('npu:0')
model = CRAFT()
state = torch.load('craft_mlt_25k.pth', map_location='cpu')
model.load_state_dict(state, strict=False)
model = model.to(device)
model.eval()
# 预处理图像
# ...(图像读取、归一化、调整大小)
# 推理
with torch.no_grad():
output, features = model(input_tensor)
# 后处理
# ...(Sigmoid、阈值、边界框提取)本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+OCR #+文本检测 #+CRAFT #+昇腾 #+CV #+PyTorch
| 文件 | 说明 |
|---|---|
| inference.py | 推理脚本,支持 CPU 和 NPU |
| compare_cpu_npu.py | CPU/NPU 精度对比脚本 |
| requirements.txt | 依赖清单 |
| README.md | 本文档 |
| craft_mlt_25k.pth | CRAFT 预训练权重 |
| test_image.jpg | 测试图像 |
| detection_results_cpu.json | CPU 推理结果 |
| detection_results_npu.json | NPU 推理结果 |
| compare_results.json | 精度对比结果 |
| result_cpu.jpg | CPU 推理可视化 |
| result_npu.jpg | NPU 推理可视化 |
| terminal_screenshot.png | 终端运行截图 |