行业资讯

PaddleOCR移动端部署实战:5.9M模型跑通手机中文OCR

发布时间:2026/8/24 23:54:20
PaddleOCR移动端部署实战:5.9M模型跑通手机中文OCR PaddleOCR移动端部署实战5.9M模型跑通手机中文OCR【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCRPaddleOCR 是飞桨开源的多语言 OCR 工具包本文带你完整跑一遍 PaddleOCR移动端部署把模型转成 .nb 文件、编译 C demo、推到安卓手机最后在终端看到识别出来的文字。一分钟认识PaddleOCR 是一款实用超轻量 OCR 系统核心能力是文本检测、方向分类、文本识别三件套支持 80 种语言。移动端方案基于 Paddle Lite飞桨的轻量化推理引擎把模型优化成单个 .nb 文件直接在手机 CPU 上推理适合要把 OCR 能力塞进安卓 App 或 IoT 设备的开发者。本文以仓库 deploy/lite 目录下的 C demo 为主线选用中文 PP-OCRv3(slim) 系列模型。从训练到端侧推理PaddleOCR移动端部署依托 Paddle Lite 推理引擎开工前清单动手前把四样东西备齐一台电脑Linux / macOS / Docker 均可带交叉编译工具链Paddle-Lite v2.10 的 Android armv8 预测库从 Paddle-Lite 官方 release 页面下载并解压一台 armv8 安卓手机打开 USB 调试电脑装好 adb并克隆 PaddleOCR 仓库git clone https://gitcode.com/paddlepaddle/PaddleOCR⚠️ 转模型用的 paddlelite 与预测库版本必须一致都用 2.10否则真机上会报 kernel 错误。模型选型上移动端常用两个系列均配 v2.10 预测库模型系列总体积特点建议PP-OCRv316.2M完整能力中文移动模型精度优先PP-OCRv3(slim)5.9M蒸馏压缩版含检测/识别/方向分类体积与速度优先直接使用官方现成的 .nb 模型的话后面的模型转换站点可以跳过。核心路径整条路径分四个站点从电脑走到手机。站点一环境怎么配做什么准备预测库和手机调试通道。预测库的核心是 libpaddle_light_api_shared.sodemo 编译时链接它、运行时推到手机上。关键操作# Linux 安装 adb手机连上后应输出一行设备编号 sudo apt install -y adb adb devices解压预测库后目录里应有 cxx/lib/libpaddle_light_api_shared.so记下这个目录路径后面反复引用。怎么算成功adb devices列出手机编号且预测库目录里能看到 .so 文件。站点二模型怎么转做什么飞桨 inference 模型inference.pdmodel inference.pdiparams 两个文件不能直接在手机上跑要用 paddle_lite_opt 转成单个 .nb 文件。关键操作# paddlelite 版本必须与预测库版本一致 pip install paddlelite2.10 # 转换检测模型识别、方向分类模型同理换路径即可 paddle_lite_opt --model_file./ch_PP-OCRv3_det_slim_infer/inference.pdmodel \ --param_file./ch_PP-OCRv3_det_slim_infer/inference.pdiparams \ --optimize_out./ch_PP-OCRv3_det_slim_opt \ --valid_targetsarm --optimize_out_typenaive_buffer两个关键参数--valid_targetsarm指定执行后端--optimize_out_typenaive_buffer是更轻量的序列化格式移动端必须指定。怎么算成功模型目录下多出一个 .nb 文件。站点三真机怎么跑做什么编译 deploy/lite 下的 C demo把模型、字典、测试图收进 debug/ 目录推到手机。关键操作# 进 demo 目录prepare.sh 把字典、测试图、配置拷进预测库的 ocr 目录 cd deploy/lite sh prepare.sh /path/to/inference_lite_lib.android.armv8 # 编译首次会下载 opencv 等依赖下载完需再 make 一次 cd /path/to/inference_lite_lib.android.armv8/demo/cxx/ocr cp ../../../cxx/lib/libpaddle_light_api_shared.so ./debug/ make -j把三个 .nb 模型自转或官方下载也放进 debug/。然后推上手机# 推送 debug 目录进入手机 shell adb push debug /data/local/tmp/ adb shell cd /data/local/tmp/debug export LD_LIBRARY_PATH${PWD}:$LD_LIBRARY_PATH接着跑完整流水线# 检测方向分类识别INT8 为量化精度10 是线程数末尾 True 开启计时 ./ocr_db_crnn system ch_PP-OCRv3_det_slim_opt.nb ch_PP-OCRv3_rec_slim_opt.nb \ ch_ppocr_mobile_v2.0_cls_slim_opt.nb arm8 INT8 10 1 ./11.jpg config.txt \ ppocr_keys_v1.txt True怎么算成功终端打印出每个文本框及其识别内容并附各阶段耗时。demo 跑通后得到检测框与文字输出的效果站点四参数怎么调做什么config.txt 里最影响效果的三个参数改完立刻见效适合按自己的图片场景微调。关键操作# 改右边的值重新推送运行 det_db_box_thresh 0.5 # 漏检就调小到 0.3误检多就调大到 0.6 det_db_unclip_ratio 1.6 # 框太紧调大到 2.0-2.5太松调小到 1.2-1.5 rec_image_height 48 # PP-OCRv3 系列固定 48v2 系列应设为 32max_side_len默认 960控制输入图最长边调大能提升小字识别但更吃内存老手机保持默认即可。怎么算成功你的测试图上框贴合文字、文本可读、总耗时可接受。出问题怎么办只列最高频的四个先看现象再找原因现象报Error: This model is not supported, because kernel for io_copy is not supported。原因转模型时的 paddlelite 版本与手机上预测库版本不一致。修复两边统一为 2.10重新转换 .nb 后再推送。现象识别输出乱码或大量缺字。原因字典文件与模型语言不匹配。修复中文模型配 ppocr_keys_v1.txt英文等语言换成 ppocr/utils/dict/ 下对应字典如英文 ic15_dict.txt替换 debug/ 里的字典文件。现象部分文字漏检或框与文本不贴合。原因检测阈值参数不适合当前图像。修复先把 det_db_box_thresh 降到 0.3仍不理想再按站点四的方向微调 det_db_unclip_ratio。现象首次预测明显慢于后续几次。原因首次运行要初始化内存和算子内核。修复App 启动后先做一次预热预测再进入正式识别。收尾全流程就四步下预测库 → 转 .nb 模型 → 编译推 demo → 调 config.txt 参数跑通之后换模型只需替换 .nb 和字典。详细步骤见仓库 deploy/lite/readme_ch.md一般问题见 docs/FAQ.md。当终端里第一次打印出手机图片上的识别结果时你的端侧 OCR 部署就算正式跑通了。【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考