经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - Docker)
来源:cnblogs  作者:VipSoft  时间:2023/6/2 10:52:49  对本文有异议

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

  1. # 切换进 opt/ppocr 目录,后面 $PWD 挂载时会用到当前的路径
  2. [root@localhost ~]# cd /opt/ppocr/
  3. [root@localhost ppocr]# pwd
  4. /opt/ppocr
  5. [root@localhost ppocr]#
  6. # 获取镜像 -- 没有GPU环境,使用CPU跑了玩玩
  7. [root@localhost ppocr]# docker pull registry.baidubce.com/paddlepaddle/paddle:2.2.2
  8. # 创建一个名字为ppocr的docker容器,并将当前目录映射到容器的/paddle目录下
  9. [root@localhost ppocr]# docker run --name ppocr -v $PWD:/paddle --network=host -it registry.baidubce.com/paddlepaddle/paddle:2.2.2 /bin/bash
  10. # --name ppocr:设定 Docker 的名称,ppocr 是自己设置的名称;
  11. # -it:参数说明容器已和本机交互式运行;
  12. # -v $PWD:/paddle:指定将当前路径(PWD 变量会展开为当前路径的绝对路径--Linux宿主机的路径,所以执行命令的路径要选好)挂载到容器内部的 /paddle 目录;(相当于 /opt/ppocr 挂载到容器内)
  13. # registry.baidubce.com/paddlepaddle/paddle:2.2.2:指定需要使用的 image 名称,您可以通过docker images命令查看;/bin/bash 是在 Docker 中要执行的命令
  14. # ctrl+P+Q可退出docker 容器,重新进入docker 容器使用如下命令
  15. [root@localhost ppocr]# docker exec -it ppocr /bin/bash
  16. λ localhost /home

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

PaddleOCR 安装

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

准备PaddleServing的运行环境,

  1. # 安装serving,用于启动服务
  2. wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_server-0.8.3-py3-none-any.whl
  3. pip install paddle_serving_server-0.8.3-py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
  4. # 安装client,用于向服务发送请求
  5. wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_client-0.8.3-cp37-none-any.whl
  6. pip install paddle_serving_client-0.8.3-cp37-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
  7. # 安装serving-app
  8. wget https://paddle-serving.bj.bcebos.com/test-dev/whl/paddle_serving_app-0.8.3-py3-none-any.whl
  9. pip install paddle_serving_app-0.8.3-py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

模型转换

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

  1. cd deploy/pdserving/
  2. # 下载并解压 OCR 文本检测模型
  3. 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
  4. # 下载并解压 OCR 文本识别模型
  5. 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
  6. # 用安装的paddle_serving_client把下载的inference模型转换成易于server部署的模型格式。
  7. # 转换检测模型
  8. 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/
  9. # 转换识别模型
  10. 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/
  11. # 查看文件夹
  12. ll ppocr_det_v3_client ppocr_det_v3_serving ppocr_rec_v3_serving ppocr_rec_v3_client

Paddle Serving pipeline部署

  1. 启动服务,测试时使用,窗口关闭服务停止
  2. python web_service.py --config=config.yml
  3. # 启动服务(后台运行),运行日志保存在log.txt
  4. nohup python web_service.py --config=config.yml &>log.txt &
  5. tail -f ./log.txt

重启

  1. # 如果容器停止,重启容器
  2. [root@localhost ppocr]# docker restart ppocr
  3. # 进入容器
  4. [root@localhost ppocr]# docker exec -it ppocr /bin/bash
  5. # 切换目录
  6. cd PaddleOCR/deploy/pdserving/
  7. # 启动服务
  8. python web_service.py --config=config.yml

测试

Python 读取图片 转 base64 并生成 JSON

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

格式如下:

  1. {"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

原文链接:https://www.cnblogs.com/vipsoft/p/17442954.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号