PaddleOCR部署和使用

简介

PaddleOCR 旨在打造一套丰富、领先、且实用的 OCR 工具库,助力开发者训练出更好的模型,并应用落地。
Github:https://github.com/PaddlePaddle/PaddleOCR
文档:https://paddlepaddle.github.io/PaddleOCR/index.html

CPU部署

命令模式

文档地址:https://paddlepaddle.github.io/PaddleOCR/ppocr/quick_start.html
环境:ubuntu 24.04,python 3.11
conda创建python环境3.11
pip install paddlepaddle==2.5.2
pip install paddleocr

问题:
pip install paddlepaddle使用最新的版本2.6.1会报错

1
2
3
4
5
6
----------------------
Error Message Summary:
----------------------
FatalError: `Illegal instruction` is detected by the operating system.
[TimeInfo: *** Aborted at 1725778126 (unix time) try "date -d @1725778126" if you are using GNU date ***]
[SignalInfo: *** SIGILL (@0x7dd46c45acda) received by PID 48872 (TID 0x7dd473f3e600) from PID 1816505562 ***]

执行测试:paddleocr --image_dir ./imgs/11.jpg --use_angle_cls true --use_gpu false

基于PaddleServing的服务部署

文档:https://paddlepaddle.github.io/PaddleOCR/ppocr/infer_deploy/paddle_server.html

环境准备

python环境:conda创建python环境3.7

获取代码git clone https://github.com/PaddlePaddle/PaddleOCR
进入代码目录,切换分支到v2.8.1,git checkout tags/v2.8.1,通过git branch查看分支是否正确

进入目录PaddleOCR
pip install -r requirements.txt

进入到工作目录
cd PaddleOCR/deploy/pdserving/

安装serving
官方地址:https://github.com/PaddlePaddle/Serving/blob/v0.8.3/doc/Latest_Packages_CN.md
这里下载cpu版本

1
2
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_server-0.8.3-py3-none-any.whl
pip3 install paddle_serving_server-0.8.3-py3-none-any.whl

安装client

1
2
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_client-0.8.3-cp37-none-any.whl
pip3 install paddle_serving_client-0.8.3-cp37-none-any.whl

安装serving-app

1
2
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_app-0.8.3-py3-none-any.whl
pip3 install paddle_serving_app-0.8.3-py3-none-any.whl

模型转换

使用PaddleServing做服务化部署时,需要将保存的inference模型转换为serving易于部署的模型。
下载模型

1
2
3
4
# 下载并解压 OCR 文本检测模型
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar -O ch_PP-OCRv3_det_infer.tar && tar -xf ch_PP-OCRv3_det_infer.tar
# 下载并解压 OCR 文本识别模型
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar -O ch_PP-OCRv3_rec_infer.tar && tar -xf ch_PP-OCRv3_rec_infer.tar

接下来,用安装的paddle_serving_client把下载的inference模型转换成易于server部署的模型格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 先安装依赖
pip install paddlepaddle==2.5.2

# 转换检测模型
python3 -m paddle_serving_client.convert --dirname ./ch_PP-OCRv3_det_infer/ \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocr_det_v3_serving/ \
--serving_client ./ppocr_det_v3_client/

# 转换识别模型
python3 -m paddle_serving_client.convert --dirname ./ch_PP-OCRv3_rec_infer/ \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--serving_server ./ppocr_rec_v3_serving/ \
--serving_client ./ppocr_rec_v3_client/

检测模型转换完成后,会在当前文件夹多出ppocr_det_v3_serving 和ppocr_det_v3_client的文件夹

Paddle Serving pipeline部署

修改config.yml

1
2
3
4
5
6
7
8
9
op:
det:
local_service_conf:
#计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡
devices: ""
rec:
local_service_conf:
#计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡
devices: ""

启动服务
nohup python3 web_service.py --config=config.yml &>log.txt &

测试:
python3 pipeline_http_client.py

使用HTTP访问
POST:http://10.66.4.24:9998/ocr/prediction
{"key":["image"], "value":["图片base64"]}