百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - Docker)

百度,paddlepaddle,pp,ocrv3,文字,检测,识别系统,基于,paddle,serving,快速,使用,服务化,部署,docker · 浏览次数 : 1520

小编点评

**安装 Docker** 1. 下载并安装 Docker:`sudo apt-get install docker` 2. 创建一个名为 `ppocr` 的目录,并使其成为一个目录。 3. 在 `ppocr` 目录中,运行以下命令:`docker pull registry.baidubce.com/paddlepaddle/paddle:2.2.2` **准备 PaddleServing 的运行环境** 1. 下载 PaddleServing 的 whl 包:`wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_server-0.8.3-py3-none-any.whl` 2. 解压缩 whl 包:`tar -xf paddle_serving_server-0.8.3-py3-none-any.whl` 3. 将 `paddle_serving_server-0.8.3-py3-none-any.tar` 解压缩到 `ppocr_det_v3_serving` 目录中。 4. 将 `paddle_serving_server-0.8.3-py3-none-any.tar` 解压缩到 `ppocr_rec_v3_serving` 目录中。 **转换检测模型** 1. 使用 `paddle_serving_client` 命令将检测模型转换为易于 server 部署的格式:`python -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/#` 2. 将转换后的模型保存为 `inference.pdmodel` 和 `inference.pdiparams` 文件。 **转换识别模型** 1. 使用 `paddle_serving_client` 命令将识别模型转换为易于 server 部署的格式:`python -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/#` 2. 将转换后的模型保存为 `inference.pdmodel` 和 `inference.pdiparams` 文件。 **启动服务** 1. 使用 `docker run` 命令启动 PaddleServing 服务:`docker run -p 80:80 ppocr_det_v3_serving/server.py` 2. 启动服务日志:`docker logs ppocr_det_v3_serving/server.py` **测试服务** 1. 使用 `web_service.py` 文件测试服务:`python web_service.py --config=config.yml` 2. 创建一个名为 `image.jpg` 的图片文件并将其放置在 `OpenSource` 目录中。 3. 在 Postman 中发送 HTTP 请求以读取图片并生成 JSON 数据。

正文

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inference 模型推理(离线部署)
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS)
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - Docker)推荐

查看版本 没找到本文安装的版本,可以跳过此步骤
https://hub.docker.com/r/paddlepaddle/paddle/tags/?page=1&name=cpu
image

安装

虚机配置:CentOS 7 、 内存:12G、CPU:4核
镜像中集成好了 Python 3.7.12 比较方便

Docker 安装

# 切换进 opt/ppocr 目录,后面 $PWD 挂载时会用到当前的路径
[root@localhost ~]# cd /opt/ppocr/
[root@localhost ppocr]# pwd
/opt/ppocr
[root@localhost ppocr]# 

# 获取镜像 -- 没有GPU环境,使用CPU跑了玩玩
[root@localhost ppocr]# docker pull registry.baidubce.com/paddlepaddle/paddle:2.2.2
# 创建一个名字为ppocr的docker容器,并将当前目录映射到容器的/paddle目录下
[root@localhost ppocr]# docker run --name ppocr -v $PWD:/paddle --network=host -it registry.baidubce.com/paddlepaddle/paddle:2.2.2 /bin/bash
# --name ppocr:设定 Docker 的名称,ppocr 是自己设置的名称;
# -it:参数说明容器已和本机交互式运行;
# -v $PWD:/paddle:指定将当前路径(PWD 变量会展开为当前路径的绝对路径--Linux宿主机的路径,所以执行命令的路径要选好)挂载到容器内部的 /paddle 目录;(相当于 /opt/ppocr 挂载到容器内)
# registry.baidubce.com/paddlepaddle/paddle:2.2.2:指定需要使用的 image 名称,您可以通过docker images命令查看;/bin/bash 是在 Docker 中要执行的命令

# ctrl+P+Q可退出docker 容器,重新进入docker 容器使用如下命令
[root@localhost ppocr]# docker exec -it ppocr /bin/bash
λ localhost /home

[root@localhost 开头的都是在Linux 服务器上执行
以下命令都是在容器中执行,防止混淆,下面命令省掉了 λ localhost /home

PaddleOCR 安装

# 升级 pip 
pip install -U pip
# 容器中已经包含了 paddlepaddle 2.2.2
pip list
# 拉取 PaddleOCR 代码
git clone https://gitee.com/paddlepaddle/PaddleOCR.git
# 切换进入 PaddleOCR 目录
cd PaddleOCR
# 安装运行所需要的whl包
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple

准备PaddleServing的运行环境,

# 安装serving,用于启动服务
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_server-0.8.3-py3-none-any.whl
pip install paddle_serving_server-0.8.3-py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装client,用于向服务发送请求
wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_client-0.8.3-cp37-none-any.whl
pip install paddle_serving_client-0.8.3-cp37-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装serving-app
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 -i https://pypi.tuna.tsinghua.edu.cn/simple

模型转换

首先,下载PP-OCR的inference模型

cd deploy/pdserving/ 
# 下载并解压 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部署的模型格式。
# 转换检测模型
python -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/
# 转换识别模型
python -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/
# 查看文件夹
ll ppocr_det_v3_client ppocr_det_v3_serving ppocr_rec_v3_serving ppocr_rec_v3_client

Paddle Serving pipeline部署

启动服务,测试时使用,窗口关闭服务停止
python web_service.py --config=config.yml

# 启动服务(后台运行),运行日志保存在log.txt
nohup python web_service.py --config=config.yml &>log.txt &
tail -f ./log.txt

重启

# 如果容器停止,重启容器
[root@localhost ppocr]# docker restart ppocr
# 进入容器
[root@localhost ppocr]# docker exec -it ppocr /bin/bash
# 切换目录
cd PaddleOCR/deploy/pdserving/
# 启动服务
python web_service.py --config=config.yml
# nohup python web_service.py --config=config.yml &>log.txt &

测试

Python 读取图片 转 base64 并生成 JSON

import json
import base64

img_path = r'D:\OpenSource\PaddleOCR-release-2.6\doc\imgs\00006737.jpg';
with open(img_path, 'rb') as file:
    image_data1 = file.read()
image = base64.b64encode(image_data1).decode('utf8')
data = {"key": ["image"], "value": [image]}
# 转成 json 字符串
json_str = json.dumps(data)
print(json_str)

格式如下:

{"key": ["image"], "value": ["image base64"]}

将生成的 json - 图片base64,复制到 Postman 中执行如下
img

参考 :
https://www.paddlepaddle.org.cn/documentation/docs/zh/install/docker/linux-docker.html
https://www.paddlepaddle.org.cn/tutorials/projectdetail/3946013
https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/installation.md
https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.6/deploy/pdserving/README_CN.md

与百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - Docker)相似的内容:

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS 7)

Paddle Serving 是飞桨服务化部署框架,能够帮助开发者轻松实现从移动端、服务器端调用深度学习模型的远程预测服务。 Paddle Serving围绕常见的工业级深度学习模型部署场景进行设计,具备完整的在线服务能力,支持的功能包括多模型管理、模型热加载、基于Baidu-RPC的高并发低延迟响应能力、在线模型A/B实验等,并提供简单易用的Client API。Paddle Serving可以

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - Docker)

[toc] [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览](https://www.cnblogs.com/vipsoft/p/17439619.html) [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Padd

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inference 模型推理(离线部署)

[百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览](https://www.cnblogs.com/vipsoft/p/17439619.html) [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inf

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览

[百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览](https://www.cnblogs.com/vipsoft/p/17439619.html) [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inf

OCR -- 文本检测

[TOC] [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览](https://www.cnblogs.com/vipsoft/p/17439619.html) [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Padd

OCR 文字检测,可微的二值化(Differentiable Binarization --- DB)

[百度飞桨(PaddlePaddle) - PaddleOCR 文字识别简单使用](https://www.cnblogs.com/vipsoft/p/17384874.html) [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览](https://

Python MatplotlibDeprecationWarning Matplotlib 3.6 and will be removed two minor releases later

百度飞桨(PaddlePaddle)-数字识别 在Pycharm中使用Matplotlib中的pyplot时,运行代码报错: MatplotlibDeprecationWarning: Support for FigureCanvases without a required_interactive

百度飞桨(PaddlePaddle)安装

注意:32位pip没有PaddlePaddle源 Python 3.7.4 => AIStudio NoteBook 环境中的版本,3.8 后期运行源码时会有问题 ![image](https://img2023.cnblogs.com/blog/80824/202305/80824-2023052

百度飞桨(PaddlePaddle)-数字识别

手写数字识别任务 用于对 0 ~ 9 的十类数字进行分类,即输入手写数字的图片,可识别出这个图片中的数字。 使用 pip 工具安装 matplotlib 和 numpy python -m pip install matplotlib numpy -i https://mirror.baidu.co

百度飞桨(PaddlePaddle)- 张量(Tensor)

张量(Tensor)、标量(scalar)、向量(vector)、矩阵(matrix) 飞桨 使用张量(Tensor) 来表示神经网络中传递的数据,Tensor 可以理解为多维数组,类似于 Numpy 数组(ndarray) 的概念。与 Numpy 数组相比,Tensor 除了支持运行在 CPU 上