PP-OCRv6-Small 部署
介绍
PP-OCRv6-Small 是百度飞桨团队推出的第六代超轻量级文本识别模型。该模型在经典“检测-分类-识别”三阶段管线的基础上,深度融合了最新的轻量化视觉 Transformer(ViT)算子与动态自适应特征对齐技术。通过对骨干网络进行极致的裁剪与参数重构,PP-OCRv6-Small 在不牺牲推理速度的前提下,大幅攻克了倾斜文本、艺术字体及工业场景中反光、暗光等极端文字识别的痛点。该模型原生支持算子级的高效量化与硬件级并行,体积紧凑且吞吐量极高,是智能相机、边缘计算网关、智慧物流手持终端等 AIoT 边缘算力平台实现本地高精度、低延迟文本结构化提取的全新利器。
本章节将演示如何在边缘设备上完成 PP-OCRv6-Small 部署、加载与识别流程。提供以下部署方式:
- AidLite Python API
在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。
- 设备:Rhino Pi-X1
- 系统:Ubuntu 22.04
- 源模型:PP-OCRv6-Small
- 量化模型精度:FP16 量化
- Model Farm 模型参考:PP-OCRv6-Small
支持平台
| 平台 | 运行方式 |
|---|---|
| Rhino Pi-X1 | Ubuntu 22.04, AidLux |
准备工作
- Rhino Pi-X1 硬件
- Ubuntu 22.04 系统或 AidLux 系统
下载 PP-OCRv6-Small 模型资源
bash
mms list PP-OCRv6-Small
#------------------------可以看到 PP-OCRv6-Small 模型------------------------
Model Precision Chipset SOC Backend
-------------- --------- ------- ---------------- -------
PP-OCRv6-Small FP16 qcs8550 Qualcomm QCS8550 QNN2.40
# 下载 PP-OCRv6-Small
mms get -m PP-OCRv6-Small -p fp16 -c qcs8550 -b qnn2.40 -d /home/aidlux/models-test
cd /home/aidlux/models-test
# 解压
unzip PaddleOCR-V6-Small_qcs8550_fp16.zipAidLite SDK 安装
开发者也可以参考模型文件夹中的 README.md 安装 SDK
- 确保 QNN 后端版本
≥ 2.40 - 确保
aidlite-sdk和aidlite-qnnxxx的版本是2.4.x或者更高版本
bash
# AidLite & QNN 版本检查
dpkg -l | grep aidlite
#------------------------ 可以看到类似如下输出 ------------------------
ii aidlite-qnn240 2.4.1.271 arm64 aidlux aidlite qnn240 backend plugin
ii aidlite-sdk 2.4.1.271 arm64 aidlux inference module sdkQNN & AidLite 版本更新
bash
# 安装 AidLite SDK
sudo aid-pkg update
sudo aid-pkg install aidlite-sdk
sudo aid-pkg install aidlite-qnn240
# aidlite sdk c++ check
python3 -c "import aidlite; print(aidlite.get_library_version())"
# aidlite sdk python check
python3 -c "import aidlite; print(aidlite.get_py_library_version())"AidLite Python API 部署
运行 Python API 例子
bash
cd /home/aidlux/models-test/code
python3 python/ppocrv6_small_infer.py python/image.jpg --det_qnn_model ../models/QCS8550/FP16/small_det_inference_fix_qcs8550_fp16.qnn236.ctx.bin.aidem --rec_qnn_model ../models/QCS8550/FP16/small_rec_inference_fix_qcs8550_fp16.qnn236.ctx.bin.aidem --json-out ocr.json --vis-out ocr.png可以在命令行看到模型推理耗时 (单位 ms)以及检测结果:
plain
当前检测输入形状: (1, 3, 480, 480)
当前识别输入形状: (1, 3, 48, 320)
当前det QNN模型: ../models/QCS8550/FP16/small_det_inference_fix_qcs8550_fp16.qnn236.ctx.bin.aidem
当前rec QNN模型: ../models/QCS8550/FP16/small_rec_inference_fix_qcs8550_fp16.qnn236.ctx.bin.aidem
[2026-07-07 17:05:14.249] [info] [license.cpp:650] the device is licensed, with license ID: aidd0c48cbed7a263eb5ff7764b4dfea235
python3 I 4155044 4155044 BufferAllocator.cpp:100] Using DMA-BUF heap named: system
/prj/qct/webtech_scratch20/mlg_user_admin/qaisw_source_repo/rel/qairt-2.40.0/release/snpe_src/avante-tools/prebuilt/dsp/hexagon-sdk-5.5.5/ipc/fastrpc/rpcmem/src/rpcmem_android.c:38:dummy call to rpcmem_init, rpcmem APIs will be used from libxdsprpc
[2026-07-07 17:05:14.429] [info] [license.cpp:650] the device is licensed, with license ID: aidd0c48cbed7a263eb5ff7764b4dfea235
PluginManager::load_plugin(): plugin(=aidlite_qnn240) has been loaded
当前yml_path: ../models/QCS8550/FP16/inference.yml
det qnn invoke: 5.737ms
DB unclip backend: pyclipper/shapely
/prj/qct/webtech_scratch20/mlg_user_admin/qaisw_source_repo/rel/qairt-2.40.0/release/snpe_src/avante-tools/prebuilt/dsp/hexagon-sdk-5.5.5/ipc/fastrpc/rpcmem/src/rpcmem_android.c:42:dummy call to rpcmem_deinit, rpcmem APIs will be used from libxdsprpc
Timing(ms): det_preprocess=10.033, det=9.963, det_postprocess=4.137, rec_preprocess=1.303, rec=54.115, rec_postprocess=3.164, total=107.735示例程序运行后,会在当前运行目录 /home/aidlux/models-test/code 下生成 ocr.json 和 ocr.png 文件。