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

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

目录

百度飞桨(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

安装

虚机配置: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 中执行如下

参考 :

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

目录
打赏
0
0
0
0
54
分享
相关文章
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
36 1
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
44 19
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Stirling-PDF 是一款基于 Docker 的本地化 PDF 编辑工具,支持 50 多种 PDF 操作,包括合并、拆分、转换、压缩等,同时提供多语言支持和企业级功能,满足个人和企业用户的多样化需求。
72 6
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
216 91
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
142 44
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
docker部署apollo
docker部署apollo步骤
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
66 23
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
60 22
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等