本文档涵盖了 PaddleOCR 的服务器部署选项,重点关注生产就绪的 Web 服务 API。服务器部署提供基于 HTTP 的接口,用于将 PaddleOCR 功能集成到 Web 应用程序、微服务和分布式系统中。
有关本地开发和命令行使用,请参阅 Python 包和 CLI。有关高性能 C++ 部署,请参阅 C++ 推理。有关移动和边缘计算,请参阅 移动和边缘部署。
PaddleOCR 通过 deploy/ 目录结构提供了两种主要的服务器部署方法
来源: deploy/hubserving/readme_en.md16-18 deploy/hubserving/readme.md17-19
PaddleHub Serving 提供了一个轻量级的 HTTP API 框架,专为 PaddleOCR 服务设计。该系统采用模块化架构,每个 OCR 功能都被打包为一个独立的 خدمة 模块。
来源: deploy/hubserving/ocr_system/module.py39-47 deploy/hubserving/ocr_system/module.py48-69 deploy/hubserving/ocr_system/params.py24-68
Hub Serving 部署提供了九个不同的服务模块,每个模块都实现了特定的 OCR 功能
| 模块 | 目的 | 主类 | 关键依赖项 |
|---|---|---|---|
ocr_system | 完整的 OCR 流程 | OCRSystem | TextSystem |
ocr_det | 仅文本检测 | OCRDet | TextDetector |
ocr_rec | 仅文本识别 | OCRRec | TextRecognizer |
ocr_cls | 文本方向分类 | OCRCls | TextClassifier |
structure_table | 表格识别 | TableSystem | _TableSystem |
structure_system | 文档结构分析 | StructureSystem | PPStructureSystem |
structure_layout | 布局检测 | - | Layout analysis models |
kie_ser | 关键信息提取 (SER) | - | SER models |
kie_ser_re | 带关系提取的关键信息提取 | - | SER+RE models |
来源: deploy/hubserving/readme_en.md22-34 deploy/hubserving/ocr_system/module.py47 deploy/hubserving/ocr_det/module.py46
每个服务模块遵循标准的结构,包含四个核心文件
来源: deploy/hubserving/readme_en.md36-43 deploy/hubserving/ocr_system/module.py39-46 deploy/hubserving/ocr_system/params.py20-25
PaddleHub Serving 需要 PaddleHub 版本 2.1.0
服务模块在特定的目录路径中需要推理模型。默认的模型位置定义在每个模块的 params.py 文件中
| 模型类型 | 默认路径 | 配置变量 |
|---|---|---|
| 检测 | ./inference/PP-OCRv3_mobile_det_infer/ | det_model_dir |
| 识别 | ./inference/ch_PP-OCRv3_rec_infer/ | rec_model_dir |
| 分类 | ./inference/ch_ppocr_mobile_v2.0_cls_infer/ | cls_model_dir |
| 布局分析 | ./inference/picodet_lcnet_x1_0_fgd_layout_infer/ | layout_model_dir |
| 表格识别 | ./inference/ch_ppstructure_mobile_v2.0_SLANet_infer/ | table_model_dir |
来源: deploy/hubserving/readme_en.md60-72 deploy/hubserving/ocr_system/params.py29 deploy/hubserving/ocr_system/params.py47
使用 hub install 命令安装所需的服务模块
来源: deploy/hubserving/readme_en.md74-86
使用命令行参数启动服务,仅支持 CPU 部署
参数
--modules/-m:服务模块名称和版本--port/-p:HTTP 服务端口(默认:8866)--use_multiprocess:启用多进程--workers:工作进程数来源: deploy/hubserving/readme_en.md89-111
对于 GPU 部署和高级配置,请使用 JSON 配置文件
使用配置文件启动
来源: deploy/hubserving/readme_en.md113-154 deploy/hubserving/ocr_system/config.json1-15
服务接受指向 /predict/{module_name} 端点的 HTTP POST 请求。请求体包含 base64 编码的图像
来源: tools/test_hubserving.py114-119 deploy/hubserving/readme_en.md156-188
服务响应因模块类型而异,但遵循一致的结构
来源: deploy/hubserving/readme_en.md190-217 deploy/hubserving/ocr_system/module.py136-143
test_hubserving.py 脚本提供了全面的测试功能
测试脚本功能
cv2_to_base64():请求的图像编码draw_server_result():OCR 结果可视化save_structure_res():结构分析输出处理main():批量处理和性能测量来源: tools/test_hubserving.py148-162 tools/test_hubserving.py39-72
要自定义服务行为,请修改服务模块目录中的相关文件。
停止现有服务
修改配置在 params.py
更新服务逻辑(如果需要)在 module.py
重新安装模块
重启服务
来源: deploy/hubserving/readme_en.md219-249 deploy/hubserving/ocr_system/params.py24-68
用于自定义的 params.py 中的关键参数
| 参数 | 目的 | 示例值 |
|---|---|---|
det_model_dir | 检测模型路径 | "./inference/custom_det/" |
rec_model_dir | 识别模型路径 | "./inference/custom_rec/" |
use_angle_cls | 启用文字方向识别 | true/false |
det_db_thresh | 检测阈值 | 0.3 |
rec_batch_num | 识别批次大小 | 6 |
cls_thresh | 分类阈值 | 0.9 |
来源: deploy/hubserving/ocr_system/params.py28-67 deploy/hubserving/readme_en.md227-234