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

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

时间:2023-06-01 13:23:06浏览次数:55  
标签:PP serving 服务化 -- OCRv3 paddle Serving ppocr

目录

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

安装

Docker 安装

# 切换进 opt/ppocr 目录
[root@localhost ~]# cd /opt/ppocr/
[root@localhost ppocr]# pwd
/opt/ppocr
[root@localhost ppocr]# 

# 获取镜像
[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 变量会展开为当前路径的绝对路径)挂载到容器内部的 /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

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

重启

# 如果容器停止,重启容器
docker restart ppocr
# 进入容器
docker exec -it ppocr /bin/bash
# 切换目录
cd PaddleOCR/deploy/pdserving/
# 启动服务
python web_service.py --config=config.yml

测试

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

标签:PP,serving,服务化,--,OCRv3,paddle,Serving,ppocr
From: https://www.cnblogs.com/vipsoft/p/17442954.html

相关文章

  • apple silicon mac M2 mule 3.9.0 无法启动解决方法
    mule3.9.0企业版本只能一个月社区版本不兼容arm64mule3.9.0是使用javawraperservice包装起来的因此需要替换为mac版本wrapper-macosx-universal-64-3.5.53.tar.gz下载地址https://wrapper.tanukisoftware.com/doc/english/download.jsp#stable原理利用jni接口调......
  • uniapp+vue3+ts 使用pinia报错
    "hasInjectionContext"isnotexportedby"node_modules/vue-demi/lib/index.mjs",importedby"node_modules/pinia/dist/pinia.mjs".11:36:19.397at../node_modules/pinia/dist/pinia.mjs:6:9 解决方法:把pinia降级 先删除pinianpmunipin......
  • 什么样的服务器适合做APP?45.125.46.x
    现如今,智能手机已经越来越普及,随着智能手机的普及,同时催生了各类APP,很多企业除了建立官方网站,也会创建自家的APP,增加传播渠道,也是竞争途径之一。那么好的APP就非常重要了,在开发APP之前,我们还需要选择一款合适的服务器作为支撑,应该怎么选APP服务器的配置呢?选择APP服务器要从哪些配置......
  • 直播app源码技术开发知识:横竖屏功能的实现
    在快节奏时代的今天,直播短视频日益火爆,许多人选择去进入直播短视频源码搭建平台的行业,去开发制作自己的直播短视频app平台。当然,要开发制作自己的直播短视频app平台就要去顺应市场的需要,将用户们所需要的和市场各大app好的功能都要添加到自己的app中,不知道大家有没有发现这么一个功......
  • cpp: Proxy Pattern
     /*****************************************************************//***\fileGoldWebSite.h*\brief代理模式ProxyPatternC++14*2023年5月31日涂聚文GeovinDuVisualStudio2022edit.*\authorgeovindu*\dateMay2023******************......
  • MyBatis+Sharding-JDBC实体类LocalDateTime类型字段查询报SQLFeatureNotSupportedExce
    问题最近协助渠道组开发新需求,封装实现了一个公共模块供不同渠道项目使用。以前各个渠道项目有很多相似的菜单和功能,各自项目里自己的代码实现,本公共模块对新需求的功能点进行抽象,减少重复代码,提高模块复用性和可维护性。目前有2个渠道项目接入了该公共模块,自测时发现其中1个运......
  • uniapp uni-number-box组件 步长为1,还能输入小数思路分享
    正常情况,输入了步长为1,是无法在输入小数的。需求是要能输入一位小数,但如果直接步长设为0.1,又不能按1这样递增,输入数量上用起来肯定很麻烦。于是我就想了一个折中方法,步长设为:1.01,然后值改变的时候,change事件里,四舍五入,保留一位小数,这样就能实现点击输入框左右的加减,页面显示的......
  • 小程序容器助力构建新型超级App软件应用架构
    所谓软件架构,就是软件系统的骨骼与框架。近年来,软件及开源技术迅猛发展,软件应用架构的概念也愈加普遍。它提供了一种组织和设计软件系统的有效方法,具有许多优势和好处:模块化和可维护性:软件应用架构将系统拆分为模块化的组件,每个组件负责特定的功能或任务。这种模块化的设计使得系统......
  • 【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client
    问题描述在AzureKubernetes服务中,创建一个InternalLoadBalancer服务,使用以下yaml内容:internallb.yamlapiVersion:v1kind:Servicemetadata:name:ilb-myappannotations:service.beta.kubernetes.io/azure-load-balancer-internal:"true"spec:type:LoadBala......
  • 【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client
    问题描述在AzureKubernetes服务中,创建一个InternalLoadBalancer服务,使用以下yaml内容:internallb.yamlapiVersion:v1kind:Servicemetadata:name:ilb-myappannotations:service.beta.kubernetes.io/azure-load-balancer-internal:"true"spec:type:L......