Skip to content

PP-OCRv6-Small 部署

介绍

PP-OCRv6-Small 是百度飞桨团队推出的第六代超轻量级文本识别模型。该模型在经典“检测-分类-识别”三阶段管线的基础上,深度融合了最新的轻量化视觉 Transformer(ViT)算子与动态自适应特征对齐技术。通过对骨干网络进行极致的裁剪与参数重构,PP-OCRv6-Small 在不牺牲推理速度的前提下,大幅攻克了倾斜文本、艺术字体及工业场景中反光、暗光等极端文字识别的痛点。该模型原生支持算子级的高效量化与硬件级并行,体积紧凑且吞吐量极高,是智能相机、边缘计算网关、智慧物流手持终端等 AIoT 边缘算力平台实现本地高精度、低延迟文本结构化提取的全新利器。

本章节将演示如何在边缘设备上完成 PP-OCRv6-Small 部署、加载与识别流程。提供以下部署方式:

  • AidLite Python API

在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。

支持平台

平台运行方式
Rhino Pi-X1Ubuntu 22.04, AidLux

准备工作

  1. Rhino Pi-X1 硬件
  2. 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.zip

AidLite SDK 安装

开发者也可以参考模型文件夹中的 README.md 安装 SDK

  • 确保 QNN 后端版本 ≥ 2.40
  • 确保 aidlite-sdkaidlite-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 sdk

QNN & 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 文件。