使用hub部署PaddleOCR
使用hub部署PaddleOCR
概述
目前有一些处理证件照片、资质照片的业务需求,已经尝试过
llava-llama3 与llama3.2-vision,表现都不佳,要么不能正确 ocr 出文字,要么在胡言乱语。当前时间(2024-11-19)注意文章时效!
对比了一众开源 OCR 的在线体验服务后,发现 PaddleOCR 的能力尤为突出。即便图片存在水印、字体模糊,仍能保持极高的准确度。准备在项目部署一套 ocr 识别,搭配 ai 再处理处理图片内容。
对比参考的大神,同样使用了 docker 运行在 cpu 环境,这里更新了版本,如下:
-
paddlepaddle 3.0.0b2测试版 -
paddlehub 2.4.0 -
PaddleOCR gitee 项目地址 (main@7bbda2bcd27811b961d0bd0cf665c548c7d63cf2)
基本流程
流程命令
参考文档的流程已经足够准确,这里概述一下
下载、运行
paddlepaddle 镜像,并进入容器终端, 版本参考: https://hub.docker.com/r/paddlepaddle/paddle/tags如果有支持的 gpu,选择类似
3.0.0b2-gpu-cuda12.3-cudnn9.0-trt8.6 tag 的进行docker pull paddlepaddle/paddle:3.0.0b2
docker run -p 9997:9997 --name ppocr -it paddlepaddle/paddle:3.0.0b2 bash
安装
paddlehub:pip3 install paddlehub==2.4.0 --upgrade
下载
PaddleOCR 并安装依赖:cd /home
git clone https://gitee.com/paddlepaddle/PaddleOCR.git
cd PaddleOCR
pip3 install -r requirements.txt
下载模型:
mkdir inference
cd inference
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
wget https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/ch_ppstructure_mobile_v2.0_SLANet_infer.tar
tar xf ch_ppstructure_mobile_v2.0_SLANet_infer.tar
for i in $(ls *.tar);do tar xvf $i;done && rm -f *.tar
处理
protobuf 报错,这有两个方式(当前版本 4.25.1)- 通用降低版本解决
pip uninstall protobuf && pip install protobuf==3.20.2
- 通用设定解决
echo "export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python" >> ~/.bashrc && source ~/.bashrc
安装
ocr_system :hub install deploy/hubserving/ocr_system
配置调整
到目前为止,贴合默认配置。下面是可能会变动的配置
-
文本检测+文本方向分类+文本识别(ocr_system) 模型路径配置文件:deploy/hubserving/ocr_system/params.py -
文本检测+文本方向分类+文本识别(ocr_system) 模型运行配置文件:deploy/hubserving/ocr_system/config.json 用于修改默认端口、配置是否允许使用 gpu、配置进程数量 -
表格识别服务(structure_table)模型路径配置文件:/deploy/hubserving/structure_table/param.py 这里默认是英文表格,识别中文需要改成下载的模型路径、字典文件路径
最后就是启动服务:
容器内启动服务:
hub serving start -m ocr_system structure_table -p 9997
打包镜像启动,因为必须在
/home/PaddleOCR 下才能使用启动命令,所以可以创建一个启动脚本或者设置workdir- 使用启动脚本方式
touch /home/PaddleOCR/userStart.sh
echo -e "cd /home/PaddleOCR \nhub serving start -m ocr_system structure_table -p 9997" > /home/PaddleOCR/userStart.sh
docker commit -m="描述信息" -a="作者" ppocr ppocr:test
docker run ppocr-test ppocr:test /home/PaddleOCR/userStart.sh
- 运行时指定
workdir
docker commit -m="描述信息" -a="作者" ppocr ppocr:test
docker run ppocr-test -w/home/PaddleOCR ppocr:test hub serving start -m ocr_system structure_table -p 9997
- 使用Dockerfile
docker commit -m="描述信息" -a="作者" ppocr ppocr:test
touch Dockerfile
echo -e "FROM ppocr:test\nWORKDIR /home/PaddleOCR\nCMD hub serving start -m ocr_system structure_table -p 9997" > Dockerfile
参考:
使用hub部署PaddleOCR的更多相关文章
- 手把手0基础Centos下安装与部署paddleOcr 教程
!!!以下内容为作者原创,首发于个人博客园&掘金平台.未经原作者同意与许可,任何人.任何组织不得以任何形式转载.原创不易,如果对您的问题提供了些许帮助,希望得到您的点赞支持. 0.paddle ...
- PaddleOcr-noavx离线部署文档
PaddleOcr-noavx离线部署文档 环境与版本说明: 系统 架构 Anaconda3 PaddlePaddle PaccleOCR 银河麒麟Server V10 X86 Anaconda3-2 ...
- 【爬虫】将 Scrapy 部署到 k8s
一. 概述 因为学习了 docker 和 k8s ,不管什么项目都想使用容器化部署,一个最主要的原因是,使用容器化部署是真的方便.上一篇文章 [爬虫]从零开始使用 Scrapy 介绍了如何使用 scr ...
- Selenium WebDriver + Grid2 + RSpec之旅(二)----Grid2的配置
Selenium WebDriver + Grid2 + RSpec之旅(二) ----Grid2的配置 为什么要使用Selenium-Grid 分布式运行大规模的TestCase 能够通过一个中央节 ...
- surging 微服务引擎 1.0 正式发布
surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希 ...
- 浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_195 "世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的-",这是电影<卡萨布拉卡> ...
- PaddleOCR系列(二)--hubserving & pdserving & hub install
一.各种部署方式特点及注意事项 简称 hubserving=PaddleHub Serving pdserving=PaddleHub Serving hub install =指通过paddlehu ...
- PaddleOCR(PaddleHub Serving)离线部署包制作
PaddleOCR(PaddleHub Serving)离线部署包制作 环境与版本: 系统 CPU架构 Anaconda3 PaddlePaddle PaccleOCR 银河麒麟Server V10 ...
- HVR数据复制软件部署之(一)--HUB端部署
HVR数据复制软件部署之(一)--HUB端部署 本文环境: OS: RHEL5.9 x86-64bit DB: Oracle 12.1.0.2 x86-64bit HVR:highgohvr-4.7. ...
- 利用Docker Hub上的Nginx部署Web应用
Docker Hub上提供了很多镜像,如Nginx,我们不需要自己从ubuntu开始装Nginx再做发布,只需要先下载镜像到本地 docker pull nginx 在/opt下新建文件夹API,将需 ...
随机推荐
- 墨天轮最受DBA欢迎的数据库技术文档-监控篇
好久不见,<墨天轮最受欢迎的技术文档>系列文章回归啦!本期主题数据库监控篇,希望能够帮助到大家!此外,为感谢大家支持,原文文末也给大家带来了返场福利,欢迎大家进入原文参与~ 数据库监控是许 ...
- 使用 Debugger 断点 如果打开了断点调试 就会跳转空白页面
<!DOCTYPE html> <html> <header> <title>test</title> </header> &l ...
- 01-react的基本使用
// 导入react和react-dom包 类似 vue 中的 import vue from 'vue' import react from 'react' // 内部的组件 import reac ...
- kotlin函数和Lambda表达式——>函数
函数: 1.函数声明 kotlin中的函数使用fun关键字声明: fun double(x: Int): Int { return 2 * x } 2.函数用法 调用函数使用传统的方法: val re ...
- KubeSphere 社区双周报|2024.09.13-09.26
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- KubeSphere 社区双周报 | Java functions framework 支持 SkyWalking | 2023.8.4-8.17
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- k8s 中的 Gateway API 的背景和简介【k8s 系列之四】
〇.Gateway API 的背景 第一阶段:Service 初始的 Kubernetes 内部服务向外暴露,使用的是自身的 LoadBlancer 和 NodePort 类型的 Service. 在 ...
- 使用pandas进行数据分析
目录 1.pandas的特点 2.Series 2.1新建Seriws 2.2使用标签来选择数据 2.3 通过指定位置选择数据 2.4 使用布尔值选择数据 2.5 其他操作 2.5.1 修改数据 2. ...
- 一文彻底熟练掌握并使用Java的NIO操作
一.基本概念 Java NIO 是 Java 1.4 引入的,用于处理高速.高并发的 I/O 操作.与传统的阻塞 I/O 不同,NIO 支持非阻塞 I/O 和选择器,可以更高效地管理多个通道. 二.核 ...
- 初识GO语言--流程控制