使用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,将需 ...
随机推荐
- 《Vue.js 设计与实现》读书笔记 - 第14章、内建组件和模块
第14章.内建组件和模块 14.1 KeepAlive 组件的实现原理 KeepAlive 一词借鉴了 HTTP 协议. KeepAlive 组件可以避免组件被频繁的销毁/重建.本质是缓存管理,再加上 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 7 期(2024年9.23-9.30)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- o1 式开源推理链项目 g1:可基于 Llama 3.2-90b 模型
g1 简介 g1 是一个开源项目,利用 Llama 3.1 70b 模型在 Groq 硬件上实现类似 OpenAI o1 的推理链能力.项目通过精心设计的提示策略引导语言模型进行逐步推理,解决了传统语 ...
- foobar2000 v1.6.10 汉化版(2022.05.01)
foobar2000 v1.6.10 汉化版 -----------------------[软件截图]---------------------- -----------------------[软 ...
- ES6箭头函数和普通函数的区别
书写形式不同,箭头函数的定义方式更加简单 : this指向不同 箭头函数使用父级作用域的this 普通函数执行 window 箭头函数不能使用 new 生成实例对象 : 普通函数的参数是argumen ...
- Power BI 网关无法添加My SQL数据集
今天第一次发布数据类型为MySQL的数据集到Power BI报表服务器,desktop的连接正常,但是发布到web端后,添加网关时却提示以下错误,如下图所示: 错误信息: 无法创建连接,原因如下: 无 ...
- C240817C. 团队协作:二分答案+贪心
C240817C. 团队协作 二分显然,但是被check难住了. 以为只能把运动员按速度分成两类,然后二分图找最大匹配,但显然做不动. 然后考场上就被卡住了--- 看了题解突然勾起了对一道题远古的记忆 ...
- php几种常用的算法
1 <?php 2 3 // 选择排序 4 5 function select_sort($arr) 6 7 { 8 9 $count = count($arr); 10 11 for ($i ...
- 应届生必看!23 个高质量 C++ 项目推荐,校招简历秒加分
大家好,我是小康. 最近,不少同学私信我,临近毕业忙着找工作,想问有没有推荐的 C++ 项目,既能练手又能让简历更出彩.我也想起自己当年毕业时同样的焦虑,知道作为 C++ 后端开发的求职者,有几个实际 ...
- 一文讲透 FPGA CDC 多bit跨时钟域同步-hand-shanking机制
一.背景 数据的跨时钟域处理是FPGA开发过程中的常见问题,存在两种情况 慢时钟向快时钟同步:只需在快时钟域打两拍即可.其RTL如下: 打拍同步的原理:大家在初学FPGA时,经常听过FPGA中对信号打 ...