前言

参加竞赛的软件需要使用服务端-客户端模型,前几天把内网穿透搭好之后,现在就可以着手服务端API的部署

软件中除了一些论文模型,我们还计划使用一些大厂的OCR推理模型,当然其中就包括PaddleOCR,所以这篇文章就用于记录PaddleOCR的搭建过程

Paddle环境搭建

安装PaddlePaddle

首先访问PaddlePadlle的官网:https://www.paddlepaddle.org.cn/

和Pytorch官网十分类似,我们选择服务端平台的相应配置即可

需要注意的是,paddle_serving_client库需要用到paddle.fluid模块,而新版PaddlePaddle已经将其删除,所以我们需要安装一个旧一些的版本

选择旧版本安装

这里我选择2.4.2版本

1
2
# CUDA 11.2
python3 -m pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

安装PaddleOCR

这里我们直接安装官方发布的最新版本

1
pip install paddleocr==2.7.0.3

除了安装pip包,我们还需要将PaddleOCR的github库克隆下来,由于该项目较大,我们选择下载为压缩包后到本地解压

准备PaddleServing的运行环境

进入pdserving的工作目录

1
cd PaddleOCR/deploy/pdserving/

安装serving,用于启动服务

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

安装client,用于转换模型

1
2
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_client-0.8.3-cp38-none-any.whl
pip3 install paddle_serving_client-0.8.3-cp38-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
pip install paddle_serving_app-0.8.3-py3-none-any.whl

模型转换

下载PP-OCR的推理模型

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
# 转换检测模型
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/

转换后可以得到下面四个新文件夹

启动服务

在pdserver目录下执行如下指令

1
python3 web_service.py --config=config.yml &>log.txt &

此时,paddleocr服务进程会在后台部署,并将日志记录在log.txt中