ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PaddleOCR 模型推理部署全指南:Python / C++ / Serving / Paddle-Lite / Paddle2ONNX 五大方案详解

PaddleOCR 模型推理部署全指南:Python / C++ / Serving / Paddle-Lite / Paddle2ONNX 五大方案详解 PaddleOCR 模型推理部署全指南Python / C / Serving / Paddle-Lite / Paddle2ONNX 五大方案详解【免费下载链接】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本篇技术指南以飞桨 PaddleOCR 2.x 文档中「PP-OCR 模型推理部署」章节为核心系统梳理飞桨为 PP-OCR 系列模型提供的五种部署方案——Python 推理、C 推理、Serving 服务化部署、Paddle-Lite 端侧部署与 Paddle2ONNX 转换推理。你将掌握如何根据硬件环境服务器 CPU/GPU、移动端、嵌入式设备与业务形态单机离线推理、在线服务、跨框架部署选择合适方案并获得可直接复制的环境配置、模型下载、编译运行与参数调优全流程实操。一、部署方案总览与选型思路飞桨PaddlePaddle为满足不同场景的部署需求提供了多种推理部署方案PP-OCR 模型已全链路打通各方案官方文档给出了方案导航与选型建议见 部署方案总览部署方案典型场景参考教程Python 推理快速验证、科研实验、PP-Structure 结构化分析Python 推理C 推理追求性能的 CPU/GPU 生产环境C 推理Serving 服务化部署需要对外提供 HTTP API 服务的在线业务Serving 服务化部署Paddle-Lite 端侧部署手机ARM CPU/OpenCL ARM GPU、IoT 嵌入式设备Paddle-Lite 端侧部署Paddle2ONNX 推理跨框架转换借助 ONNXRuntime 生态推理Paddle2ONNX 推理选择原则可概括为性能优先选 C快速迭代选 Python在线服务选 Serving移动端与 IoT 选 Paddle-Lite跨框架互操作选 Paddle2ONNX。若需要 PP-OCR 之外的学术算法模型如各类检测/识别论文复现模型的推理部署教程可直接进入相应算法主页见 算法总览。二、Python 推理PP-Structure 结构化分析与 KIE 关键信息抽取Python 推理是上手最快、功能最完整的方案尤其适合文档图像的结构化解析布局分析、表格识别与关键信息抽取KIE。入口脚本为 ppstructure/predict_system.py通过命令行参数自由组合检测det、识别rec、方向分类cls、布局分析layout、表格识别table等模块。2.1 环境准备与模型下载首先进入ppstructure目录并下载 PP-StructureV2 系列推理模型cd ppstructure # 下载模型 mkdir inference cd inference # 下载 PP-StructureV2 布局分析模型并解压 wget https://paddleocr.bj.bcebos.com/ppstructure/models/layout/picodet_lcnet_x1_0_layout_infer.tar tar xf picodet_lcnet_x1_0_layout_infer.tar # 下载 PP-OCRv3 文本检测模型并解压 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv3_mobile_det_infer.tar tar xf PP-OCRv3_mobile_det_infer.tar # 下载 PP-OCRv3 文本识别模型并解压 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv3_mobile_rec_infer.tar tar xf PP-OCRv3_mobile_rec_infer.tar # 下载 PP-StructureV2 表格识别模型并解压 wget https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/paddle3.0b2/ch_ppstructure_mobile_v2.0_SLANet_infer.tar tar xf ch_ppstructure_mobile_v2.0_SLANet_infer.tar cd ..2.2 布局分析 表格识别结构化文档解析这是 PP-Structure 最核心的用法串联「布局分析 → 文本检测/识别 → 表格识别」全流程python3 predict_system.py --det_model_dirinference/PP-OCRv3_mobile_det_infer \ --rec_model_dirinference/PP-OCRv3_mobile_rec_infer \ --table_model_dirinference/ch_ppstructure_mobile_v2.0_SLANet_infer \ --layout_model_dirinference/picodet_lcnet_x1_0_layout_infer \ --image_dir./docs/table/1.png \ --rec_char_dict_path../ppocr/utils/ppocr_keys_v1.txt \ --table_char_dict_path../ppocr/utils/dict/table_structure_dict_ch.txt \ --output../output \ --vis_font_path../doc/fonts/simfang.ttf运行完成后output字段指定目录下的structure目录中会为每张输入图片生成同名子目录图片中的每张表格保存为一个 Excel 文件图片区域被裁剪保存文件名即其在原图中的坐标详细结果记录在res.txt文件中。其中--rec_char_dict_path指向识别字典 ppocr/utils/ppocr_keys_v1.txt--table_char_dict_path指向表格结构字典 ppocr/utils/dict/table_structure_dict_ch.txt--vis_font_path指定可视化中文渲染字体 doc/fonts/simfang.ttf。2.3 仅布局分析只需定位版面区域标题、正文、表格、图片等关闭表格与 OCR 功能python3 predict_system.py --layout_model_dirinference/picodet_lcnet_x1_0_layout_infer \ --image_dir./docs/table/1.png \ --output../output \ --tablefalse \ --ocrfalse运行完成后每张图片的版面区域会被裁剪保存文件名即其坐标布局分析结果写入res.txt。2.4 仅表格识别对已明确的表格图片单独进行结构化识别输出 HTML/Excel 形式的结构python3 predict_system.py --det_model_dirinference/PP-OCRv3_mobile_det_infer \ --rec_model_dirinference/PP-OCRv3_mobile_rec_infer \ --table_model_dirinference/ch_ppstructure_mobile_v2.0_SLANet_infer \ --image_dir./docs/table/table.jpg \ --rec_char_dict_path../ppocr/utils/ppocr_keys_v1.txt \ --table_char_dict_path../ppocr/utils/dict/table_structure_dict_ch.txt \ --output../output \ --vis_font_path../doc/fonts/simfang.ttf \ --layoutfalse2.5 关键信息抽取SER 与 RESERPP-Structure 的 KIE 能力基于 LayoutXLM 模型支持实体抽取SER与关系抽取RESER两种模式通过--modekie与--kie_algorithmLayoutXLM切换。SER语义实体识别下载 SER 模型并运行cd ppstructure mkdir inference cd inference # 下载 SER 模型 wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_infer.tar tar -xf ser_vi_layoutxlm_xfund_infer.tar cd .. python3 predict_system.py \ --kie_algorithmLayoutXLM \ --ser_model_dir./inference/ser_vi_layoutxlm_xfund_infer \ --image_dir./docs/kie/input/zh_val_42.jpg \ --ser_dict_path../ppocr/utils/dict/kie_dict/xfund_class_list.txt \ --vis_font_path../doc/fonts/simfang.ttf \ --ocr_order_methodtb-yx \ --modekie运行完成后output字段指定目录下的kie目录中会保存可视化结果图图片名与输入图片同名。--ser_dict_path指向实体类别字典 ppocr/utils/dict/kie_dict/xfund_class_list.txt--ocr_order_methodtb-yx表示按「从上到下、从右到左」的方式排序 OCR 文本块以保证 LayoutXLM 的序列输入与阅读顺序一致。RESER关系抽取 实体识别在 SER 基础上追加 RE 模型抽取实体间的关联关系如「发票号码-开票日期」配对cd ppstructure mkdir inference cd inference # 下载 SER 与 RE 模型 wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_infer.tar tar -xf ser_vi_layoutxlm_xfund_infer.tar wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_infer.tar tar -xf re_vi_layoutxlm_xfund_infer.tar cd .. python3 predict_system.py \ --kie_algorithmLayoutXLM \ --re_model_dir./inference/re_vi_layoutxlm_xfund_infer \ --ser_model_dir./inference/ser_vi_layoutxlm_xfund_infer \ --image_dir./docs/kie/input/zh_val_42.jpg \ --ser_dict_path../ppocr/utils/dict/kie_dict/xfund_class_list.txt \ --vis_font_path../doc/fonts/simfang.ttf \ --ocr_order_methodtb-yx \ --modekie运行完成后kie目录中为每张图片生成同名子目录保存可视化结果与预测结果文件。三、C 推理高性能 CPU/GPU 生产部署在 CPU 与 GPU 部署场景中C 相比 Python 具有明显的性能优势因此生产环境大多采用 C 部署。C 部署源码位于 deploy/cpp_inferWindows 平台的编译可参考 Windows VS2019 编译指南。3.1 环境准备推荐在 Linux 环境建议 Docker下进行主要依赖 OpenCV 与 Paddle 推理库。1编译 OpenCV以 3.4.7 为例cd deploy/cpp_infer wget https://paddleocr.bj.bcebos.com/libs/opencv/opencv-3.4.7.tar.gz tar -xf opencv-3.4.7.tar.gz设置 OpenCV 源码路径root_path与安装路径install_path后进入源码目录编译root_pathyour_opencv_root_path install_path${root_path}/opencv3 rm -rf build mkdir build cd build cmake .. \ -DCMAKE_INSTALL_PREFIX${install_path} \ -DCMAKE_BUILD_TYPERelease \ -DBUILD_SHARED_LIBSOFF \ -DWITH_IPPOFF \ -DBUILD_IPP_IWOFF \ -DWITH_LAPACKOFF \ -DWITH_EIGENOFF \ -DCMAKE_INSTALL_LIBDIRlib64 \ -DWITH_ZLIBON \ -DBUILD_ZLIBON \ -DWITH_JPEGON \ -DBUILD_JPEGON \ -DWITH_PNGON \ -DBUILD_PNGON \ -DWITH_TIFFON \ -DBUILD_TIFFON make -j make install编译完成后OpenCV 安装目录下生成bin、include、lib、lib64、share五个子目录供后续 OCR 源码编译引用。2获取 Paddle 推理库二选一直接下载从 Paddle 推理库官网选择合适的 Linux 版本解压后得到paddle_inference/目录tar -xf paddle_inference.tgz源码编译如需最新的推理库特性可克隆 Paddle 源码建议版本 ≥ 2.0.1后编译git clone https://github.com/PaddlePaddle/Paddle.git git checkout develop # 进入 Paddle 目录编译 rm -rf build mkdir build cd build cmake .. \ -DWITH_CONTRIBOFF \ -DWITH_MKLON \ -DWITH_MKLDNNON \ -DWITH_TESTINGOFF \ -DCMAKE_BUILD_TYPERelease \ -DWITH_INFERENCE_API_TESTOFF \ -DON_INFERON \ -DWITH_PYTHONON make -j make inference_lib_dist编译完成后推理库位于build/paddle_inference_install_dir/其中paddle为 C 预测所需的 Paddle 库version.txt记录当前推理库版本信息。3.2 导出推理模型与目录约定推理模型可通过 Python 推理章节 中的说明导出。导出后假设统一放在inference目录约定结构如下每个模型目录下包含inference.pdmodel与inference.pdiparamsinference/ |-- det_db # 检测模型 | |-- inference.pdiparams | |-- inference.pdmodel |-- rec_rcnn # 识别模型 | |-- inference.pdiparams | |-- inference.pdmodel |-- cls # 方向分类模型 | |-- inference.pdiparams | |-- inference.pdmodel |-- table # 表格识别模型 | |-- inference.pdiparams | |-- inference.pdmodel |-- layout # 布局分析模型 | |-- inference.pdiparams | |-- inference.pdmodel3.3 编译 C Demo编译脚本为 deploy/cpp_infer/tools/build.sh执行前需将脚本中的四个路径变量替换为本机实际路径sh tools/build.shOPENCV_DIRyour_opencv_dir # OpenCV 安装路径 LIB_DIRyour_paddle_inference_dir # paddle_inference 目录或 build/paddle_inference_install_dir 目录 CUDA_LIB_DIRyour_cuda_lib_dir # CUDA 库路径Docker 中为 /usr/local/cuda/lib64 CUDNN_LIB_DIRyour_cudnn_lib_dir # cuDNN 库路径Docker 中为 /usr/lib/x86_64-linux-gnu/编译完成后build目录下生成可执行文件ppocr。3.4 运行 Demo 与模块组合示例执行格式为./build/ppocr [--param1] [--param2] [...]。注意ppocr默认使用 PP-OCRv3 模型识别模型输入尺寸为3, 48, 320若使用旧版本模型需追加参数--rec_img_h32。功能组合命令要点detclsrec--det_model_dirinference/det_db --rec_model_dirinference/rec_rcnn --cls_model_dirinference/cls --use_angle_clstruedetrec--det_model_dirinference/det_db --rec_model_dirinference/rec_rcnn --use_angle_clsfalse --clsfalsedet--det_model_dirinference/det_db --recfalseclsrec--rec_model_dirinference/rec_rcnn --cls_model_dirinference/cls --use_angle_clstrue --detfalserec--rec_model_dirinference/rec_rcnn --detfalse --clsfalsecls--cls_model_dirinference/cls --use_angle_clstrue --detfalse --recfalselayouttable--det_model_dirinference/det_db --rec_model_dirinference/rec_rcnn --table_model_dirinference/table --layout_model_dirinference/layout --typestructure --tabletrue --layouttruelayout--layout_model_dirinference/layout --typestructure --tablefalse --layouttrue --detfalse --recfalsetable--det_model_dirinference/det_db --rec_model_dirinference/rec_rcnn --table_model_dirinference/table --typestructure --tabletrue以 detclsrec 完整 OCR 为例./build/ppocr --det_model_dirinference/det_db \ --rec_model_dirinference/rec_rcnn \ --cls_model_dirinference/cls \ --image_dir../../doc/imgs/12.jpg \ --use_angle_clstrue \ --dettrue \ --rectrue \ --clstruelayouttable 结构模式示例./build/ppocr --det_model_dirinference/det_db \ --rec_model_dirinference/rec_rcnn \ --table_model_dirinference/table \ --image_dir../../ppstructure/docs/table/table.jpg \ --layout_model_dirinference/layout \ --typestructure \ --tabletrue \ --layouttrue3.5 核心参数表通用参数参数类型默认值含义use_gpuboolfalse是否使用 GPUgpu_idint0使用 GPU 时的设备号gpu_memint4000申请的 GPU 显存MBcpu_math_library_num_threadsint10CPU 推理线程数机器核数充足时越大推理越快enable_mkldnnbooltrue是否使用 MKL-DNN 加速库outputstr./output可视化结果保存路径前向控制参数类型默认值含义detbooltrue前向是否执行文本检测recbooltrue前向是否执行文本识别clsboolfalse前向是否执行文本方向分类检测相关参数类型默认值含义det_model_dirstring-检测推理模型路径max_side_lenint960限制图像最长边为 960det_db_threshfloat0.3DB 预测二值图过滤阈值0~0.3 区间内对结果影响不明显det_db_box_threshfloat0.5DB 后处理过滤框阈值漏检时可适当调低det_db_unclip_ratiofloat1.6文本框紧凑度值越小文本框越贴近文字det_db_score_modestringslowslow 用多边形框计算得分fast 用矩形框计算后者更快、前者对弯曲文本更准visualizebooltrue是否可视化结果为 true 时结果保存到output指定目录方向分类相关参数类型默认值含义use_angle_clsboolfalse是否使用方向分类器cls_model_dirstring-方向分类推理模型路径cls_threshfloat0.9方向分类器得分阈值cls_batch_numint1分类器批大小识别相关参数类型默认值含义rec_model_dirstring-识别推理模型路径rec_char_dict_pathstring../../ppocr/utils/ppocr_keys_v1.txt字典文件rec_batch_numint6识别批大小rec_img_hint48识别输入图像高度rec_img_wint320识别输入图像宽度布局分析相关参数类型默认值含义layout_model_dirstring-布局推理模型路径layout_dict_pathstring../../ppocr/utils/dict/layout_dict/layout_publaynet_dict.txt布局类别字典layout_score_thresholdfloat0.5得分阈值layout_nms_thresholdfloat0.5NMS 阈值表格识别相关参数类型默认值含义table_model_dirstring-表格识别推理模型路径table_char_dict_pathstring../../ppocr/utils/dict/table_structure_dict.txt表格结构字典table_max_lenint488表格模型输入长边尺寸网络最终输入为table_max_len, table_max_lenmerge_no_span_structurebooltrue是否合并td与/td为td/td多语言推理PaddleOCR 同样支持多语言推理仅需将rec_char_dict_path与rec_model_dir替换为对应语言的字典与模型即可具体支持语言与模型清单参见 多语言识别教程。3.6 输出示例检测 识别运行结果终端打印每个文本框坐标、文本内容与置信度predict img: ../../doc/imgs/12.jpg 0 det boxes: [[74,553],[427,542],[428,571],[75,582]] rec text: 打浦路252935号 rec score: 0.947724 1 det boxes: [[23,507],[513,488],[515,529],[24,548]] rec text: 绿洲仕格维花园公寓 rec score: 0.993728 2 det boxes: [[187,456],[399,448],[400,480],[188,488]] rec text: 打浦路15号 rec score: 0.964994 3 det boxes: [[42,413],[483,391],[484,428],[43,450]] rec text: 上海斯格威铂尔大酒店 rec score: 0.980086 The detection visualized image saved in ./output//12.jpglayouttable 模式会打印每个版面区域的类型text/title/table/figure、坐标、得分以及表格区域识别出的完整 HTML 结构。3.7 常见问题编译时若遇到unable to access https://github.com/LDOUBLEV/AutoLog.git/: gnutls_handshake() failed的 TLS 报错可将 deploy/cpp_infer/external-cmake/auto-log.cmake 中的 github 地址替换为国内镜像地址后重新拉取依赖。四、Serving 服务化部署基于 PaddleHub ServingPaddleOCR 提供两种服务化部署方式基于PaddleHub Serving代码路径 deploy/hubserving推荐使用与基于PaddleServing参考 PaddleServing 教程。4.1 服务包目录与文件结构hubserving 目录共包含九个服务包文本检测、文本方向分类、文本识别、三阶段串联检测分类识别、布局分析、表格识别、PP-Structure 全流程、KIE(SER) 与 KIE(SERRE)deploy/hubserving/ └─ ocr_det 文本检测模块服务包 └─ ocr_cls 文本方向分类模块服务包 └─ ocr_rec 文本识别模块服务包 └─ ocr_system 检测分类识别三阶段串联服务包 └─ structure_layout 布局分析服务包 └─ structure_table 表格识别服务包 └─ structure_system PP-Structure 服务包 └─ kie_ser KIE(SER) 服务包 └─ kie_ser_re KIE(SERRE) 服务包每个服务包包含四个文件以ocr_system为例deploy/hubserving/ocr_system/ └─ __init__.py 空文件必需 └─ config.json 配置文件可选使用配置文件启动服务时作为参数传入 └─ module.py 主模块文件必需包含服务完整逻辑 └─ params.py 参数文件必需含模型路径、前后处理参数等4.2 快速启动服务1安装 PaddleHubpip3 install paddlehub2.1.0 --upgrade2准备推理模型默认使用 PP-OCRv3 系列模型默认模型路径如下可在params.py中查找并修改更多模型见 模型库也可使用自训练模型| 模型 | 路径 | | ------- | - | | 文本检测模型 | ./inference/PP-OCRv3_mobile_det_infer/ | | 文本识别模型 | ./inference/PP-OCRv3_mobile_rec_infer/ | | 文本方向分类器 | ./inference/ch_ppocr_mobile_v2.0_cls_infer/ | | 布局解析模型 | ./inference/picodet_lcnet_x1_0_fgd_layout_infer/ | | 表格识别模型 | ./inference/ch_ppstructure_mobile_v2.0_SLANet_infer/ | | KIE(SER) | ./inference/ser_vi_layoutxlm_xfund_infer/ | | KIE(SERRE) | ./inference/re_vi_layoutxlm_xfund_infer/ |3安装服务模块Linux 平台Windows 平台将/替换为\服务模块安装命令文本检测hub install deploy/hubserving/ocr_det文本方向分类hub install deploy/hubserving/ocr_cls文本识别hub install deploy/hubserving/ocr_rec三阶段串联hub install deploy/hubserving/ocr_system表格识别hub install deploy/hubserving/structure_tablePP-Structurehub install deploy/hubserving/structure_systemKIE(SER)hub install deploy/hubserving/kie_serKIE(SERRE)hub install deploy/hubserving/kie_ser_re4a命令行方式启动仅 CPUhub serving start --modules Module1Version1, Module2Version2, ... \ --port 8866 \ --use_multiprocess \ --workers参数说明--modules/-m已安装的服务模块以ModuleVersion键值对形式列出不指定 Version 时默认选择最新版本--port/-p服务端口默认 8866--use_multiprocess开启并发模式默认单进程多核 CPU 机器推荐开启Windows 仅支持单进程模式--workers并发模式下的并发任务数默认2*cpu_count-1例如启动三阶段串联服务hub serving start -m ocr_system4b配置文件方式启动CPU 与 GPU 均可hub serving start --config/-c config.jsonconfig.json格式示例{ modules_info: { ocr_system: { init_args: { version: 1.0.0, use_gpu: true }, predict_args: { } } }, port: 8868, use_multiprocess: false, workers: 2 }init_args中可配置的参数与 deploy/hubserving/ocr_system/module.py 中_initialize函数接口一致use_gpu为true表示用 GPU 启动服务predict_args与module.py中predict函数接口一致使用配置文件启动时其他参数将被忽略使用 GPU 预测时需先设置环境变量CUDA_VISIBLE_DEVICESuse_gpu与use_multiprocess不能同时为true。例如使用 3 号 GPU 启动三阶段串联服务export CUDA_VISIBLE_DEVICES3 hub serving start -c deploy/hubserving/ocr_system/config.json4.3 发送预测请求服务启动后使用仓库自带的测试脚本 tools/test_hubserving.py 发送请求python tools/test_hubserving.py --server_urlserver_url --image_dirimage_path参数说明server_url服务地址格式为http://[ip_address]:[port]/predict/[module_name]image_dir测试图片路径可为单张图片或图片目录visualize是否可视化结果默认 Falseoutput可视化结果保存目录默认./hubserving_result示例不同模块可分配不同端口python tools/test_hubserving.py --server_urlhttp://127.0.0.1:8868/predict/ocr_system --image_dir./doc/imgs/ --visualizefalse典型端口规划8865/predict/ocr_det、8866/predict/ocr_cls、8867/predict/ocr_rec、8868/predict/ocr_system、8869/predict/structure_table、8870/predict/structure_system及structure_layout、8871/predict/kie_ser、8872/predict/kie_ser_re。4.4 返回结果格式服务返回结果为列表每项为字典可能包含以下字段字段名数据类型描述anglestr文本方向角度textstr文本内容confidencefloat文本识别置信度text_regionlist文本位置坐标htmlstr表格 HTML 字符串regionslist布局分析表格识别OCR 的结果每项含bbox区域坐标、type区域类型、res区域结果layoutlist布局分析结果每项含bbox、label区域类型标签不同模块返回字段不同例如纯识别服务不返回text_region完整对照如下字段/模块ocr_detocr_clsocr_recocr_systemstructure_tablestructure_systemstructure_layoutkie_serkie_reangle✔✔text✔✔✔✔✔confidence✔✔✔✔✔✔text_region✔✔✔✔✔html✔✔regions✔✔layout✔ser_res✔re_res✔如需增删改返回字段直接修改对应模块的module.py即可。4.5 自定义服务模块以修改deploy/hubserving/ocr_system为例自定义服务逻辑的一般步骤停止服务hub serving stop --port/-p XXXX按需修改 deploy/hubserving/ocr_system/module.py 与 deploy/hubserving/ocr_system/params.py。例如替换模型时修改params.py中的det_model_dir、rec_model_dir关闭方向分类器则设use_angle_clsFalse。修改后建议先直接运行module.py调试。注意PP-OCRv3 识别模型输入形状为3, 48, 320需在params.py中设置cfg.rec_image_shape 3, 48, 320不使用 PP-OCRv3 识别模型时无需修改。可选重命名模块同步修改module.py中的 import 语句第 35 行附近与nameocr_system第 39 行附近。可选删除__pycache__目录以强制刷新 CPython 构建缓存find deploy/hubserving/ocr_system -name __pycache__ -exec rm -r {} \;重新安装修改后的服务模块hub install deploy/hubserving/ocr_system/重启服务hub serving start -m ocr_system五、Paddle-Lite 端侧部署移动端与 IoTPaddle-Lite 是飞桨面向移动端与 IoT 场景的轻量级推理引擎为端侧部署提供高效的跨平台硬件加速能力适用于 Android/iOS 手机与嵌入式设备ARM CPU 与 OpenCL ARM GPU端侧 C Demo 见 deploy/lite含 ocr_db_crnn.cc 主程序与 config.txt 配置。详细教程见 Paddle-Lite 端侧部署。环境准备需要一台用于交叉编译的电脑或 Docker 环境与一台 ARM 手机armv7/armv8。获取 Paddle-Lite 推理库二选一直接下载推荐Android 平台提供 armv7/armv8 两个版本的预编译库Paddle-Lite 2.10 分支编译建议使用 paddlelite ≥ 2.10 版本iOS 平台同样提供 armv7/armv8 版本源码编译git clone https://github.com/PaddlePaddle/Paddle-Lite.git cd Paddle-Lite # 切换到 release/v2.10 稳定分支 git checkout release/v2.10 ./lite/tools/build_android.sh --archarmv8 --with_cvON --with_extraON注意编译时必须开启--with_cvON --with_extraON两个选项--arch指定 ARM 架构此处为 armv8。下载解压后可得到inference_lite_lib.android.armv8/目录编译 Paddle-Lite 得到的推理库则位于build.lite.android.armv8.gcc/inference_lite_lib.android.armv8/。随后将 PaddleOCR 的检测、识别、分类模型分别转换为 Paddle-Lite 格式.nb文件通过deploy/lite目录下的端侧 C 工程交叉编译出可执行文件拷贝至手机即可完成部署。六、Paddle2ONNX跨框架转换与 ONNXRuntime 推理Paddle2ONNX 可将 PaddlePaddle 格式模型转换为 ONNX 格式从而借助 ONNXRuntime 等跨平台推理引擎运行适用于需要跨框架部署的场景。详细教程见 Paddle2ONNX 模型转换与预测。环境准备# 安装 PaddleOCRmain 分支 git clone -b main https://github.com/PaddlePaddle/PaddleOCR.git cd PaddleOCR python3 -m pip install -e . # 安装 Paddle2ONNX当前稳定支持导出 ONNX Opset 7~19 python3 -m pip install paddle2onnx # 安装 ONNXRuntime python3 -m pip install onnxruntime模型转换获取 Paddle 静态图模型有两种途径——从 模型库 直接下载官方提供的预测模型或参照 模型导出说明 将训练权重导出为推理模型。随后使用paddle2onnx命令行工具将 PP-OCR 系列的检测、识别、方向分类模型逐个转换为 ONNX 格式并在 ONNXRuntime 上完成推理验证。七、方案选型总结维度Python 推理C 推理PaddleHub ServingPaddle-LitePaddle2ONNX适用硬件CPU/GPUCPU/GPUCPU/GPUARM CPU / OpenCL ARM GPUCPU/GPU取决于运行时性能一般高中高端侧中对外服务不支持不支持HTTP API不支持不支持典型场景快速验证、文档结构化生产环境批量推理在线业务 API手机、IoT 设备跨框架集成参考文档Python 推理C 推理Serving 部署Paddle-Lite 部署Paddle2ONNX实际项目中可依据「硬件资源 × 业务形态」两个维度组合选型对吞吐与延迟敏感的生产推理优先 C需要快速验证算法效果或处理 PP-Structure 结构化任务优先 Python需要为业务系统提供标准化接口优先 PaddleHub Serving目标设备为手机与嵌入式设备则直接采用 Paddle-Lite需要接入非飞桨推理栈时使用 Paddle2ONNX 完成模型格式转换。【免费下载链接】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),仅供参考
返回列表