- Published on
在 CPU 服务器上部署 PaddleOCR
- Authors
- Name
- Duck
项目中需要对 PDF 文档进行文本提取,但传统的 OCR 方式对表格等结构化数据不太准确,最终选择使用 PaddleOCR来进行识别。
安装 paddlex
PaddleX 是基于飞桨框架构建的低代码开发工具,支持快速服务化部署 PaddleOCR。
这里使用官方提供的Docker 快速部署 paddlex
# 对于 CPU 用户
docker run --name paddlex -v $PWD:/paddle --shm-size=8g --network=host -d -it ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlex/paddlex:paddlex3.1.2-paddlepaddle3.0.0-cpu /bin/bash
接下来的命令,都是在 docker 容器中操作。
选择性安装依赖组,这里我只需要 OCR。
pip install "paddlex[ocr]"
安装高性能推理插件,能够显著提升模型的推理速度。
paddlex --install hpi-cpu
服务化部署
服务化部署是实际生产环境中常见的一种部署形式。通过将推理功能封装为服务,客户端可以通过网络请求来访问这些服务,以获取推理结果。
安装服务化部署插件:
paddlex --install serving
通过 PaddleX CLI 运行 PP-StructureV3 产线,会自动安装需要的文件。
paddlex --serve --pipeline PP-StructureV3 --use_hpip --port 8999
最终显示如下信息,则成功启动: 

先Ctrl + C
关闭服务,在命令行中测试一下。
快速测试
可以在命令行快速测试功能是否正常:
paddlex --pipeline PP-StructureV3 \
--input https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png \
--use_doc_orientation_classify False \
--use_doc_unwarping False \
--use_textline_orientation False \
--use_e2e_wireless_table_rec_model True \
--save_path ./output \
正常输出文字则解析成功: 

在 Dify 工作流中调用
先启动服务:
paddlex --serve --pipeline PP-StructureV3 --use_hpip --port 8999
在 Dify 工作流编排中调用 HTTP 接口请求
注意事项
- 如果 HTTP 请求报错:Text size is too large, max size is 1.00 MB, but current size is xxx MB.,可以在环境变量中设置
HTTP_REQUEST_NODE_MAX_TEXT_SIZE
- 在 Dify 环境变量中设置 FILES_URL,这样上传文件返回的 url 带前缀,可以直接传给 paddlex 处理