使用hub部署PaddleOCR

概述

目前有一些处理证件照片、资质照片的业务需求,已经尝试过 llava-llama3​ 与 llama3.2-vision​,表现都不佳,要么不能正确 ocr 出文字,要么在胡言乱语。当前时间(2024-11-19)注意文章时效!

  对比了一众开源 OCR 的在线体验服务后,发现 PaddleOCR 的能力尤为突出。即便图片存在水印、字体模糊,仍能保持极高的准确度。准备在项目部署一套 ocr 识别,搭配 ai 再处理处理图片内容。

  对比参考的大神,同样使用了 docker 运行在 cpu 环境,这里更新了版本,如下:

基本流程

流程命令

  参考文档的流程已经足够准确,这里概述一下

  1. 下载、运行 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
  2. 安装 paddlehub​:

    pip3 install paddlehub==2.4.0 --upgrade
  3. 下载 PaddleOCR​ 并安装依赖:

    cd /home
    git clone https://gitee.com/paddlepaddle/PaddleOCR.git
    cd PaddleOCR
    pip3 install -r requirements.txt
  4. 下载模型:

    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
  5. 处理 protobuf​ 报错,这有两个方式(当前版本 4.25.1)

    • 通用降低版本解决
    pip uninstall protobuf && pip install protobuf==3.20.2
    • 通用设定解决
    echo "export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python" >> ~/.bashrc && source ~/.bashrc
  6. 安装 ocr_system​ :

    hub install deploy/hubserving/ocr_system

    ‍

配置调整

  到目前为止,贴合默认配置。下面是可能会变动的配置

  1. ​文本检测+文本方向分类+文本识别(ocr_system)​ 模型路径配置文件: deploy/hubserving/ocr_system/params.py​
  2. ​文本检测+文本方向分类+文本识别(ocr_system)​ 模型运行配置文件:deploy/hubserving/ocr_system/config.json​ 用于修改默认端口、配置是否允许使用 gpu、配置进程数量
  3. ​表格识别服务(structure_table) ​模型路径配置文件: /deploy/hubserving/structure_table/param.py​ 这里默认是英文表格,识别中文需要改成下载的模型路径、字典文件路径

  最后就是启动服务:

  1. 容器内启动服务:

    hub serving start -m ocr_system structure_table -p 9997
  2. 打包镜像启动,因为必须在 /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的更多相关文章

  1. 手把手0基础Centos下安装与部署paddleOcr 教程

    !!!以下内容为作者原创,首发于个人博客园&掘金平台.未经原作者同意与许可,任何人.任何组织不得以任何形式转载.原创不易,如果对您的问题提供了些许帮助,希望得到您的点赞支持. 0.paddle ...

  2. PaddleOcr-noavx离线部署文档

    PaddleOcr-noavx离线部署文档 环境与版本说明: 系统 架构 Anaconda3 PaddlePaddle PaccleOCR 银河麒麟Server V10 X86 Anaconda3-2 ...

  3. 【爬虫】将 Scrapy 部署到 k8s

    一. 概述 因为学习了 docker 和 k8s ,不管什么项目都想使用容器化部署,一个最主要的原因是,使用容器化部署是真的方便.上一篇文章 [爬虫]从零开始使用 Scrapy 介绍了如何使用 scr ...

  4. Selenium WebDriver + Grid2 + RSpec之旅(二)----Grid2的配置

    Selenium WebDriver + Grid2 + RSpec之旅(二) ----Grid2的配置 为什么要使用Selenium-Grid 分布式运行大规模的TestCase 能够通过一个中央节 ...

  5. surging 微服务引擎 1.0 正式发布

    surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希 ...

  6. 浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_195 "世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的-",这是电影<卡萨布拉卡> ...

  7. PaddleOCR系列(二)--hubserving & pdserving & hub install

    一.各种部署方式特点及注意事项 简称 hubserving=PaddleHub Serving pdserving=PaddleHub Serving hub install =指通过paddlehu ...

  8. PaddleOCR(PaddleHub Serving)离线部署包制作

    PaddleOCR(PaddleHub Serving)离线部署包制作 环境与版本: 系统 CPU架构 Anaconda3 PaddlePaddle PaccleOCR 银河麒麟Server V10 ...

  9. HVR数据复制软件部署之(一)--HUB端部署

    HVR数据复制软件部署之(一)--HUB端部署 本文环境: OS: RHEL5.9 x86-64bit DB: Oracle 12.1.0.2 x86-64bit HVR:highgohvr-4.7. ...

  10. 利用Docker Hub上的Nginx部署Web应用

    Docker Hub上提供了很多镜像,如Nginx,我们不需要自己从ubuntu开始装Nginx再做发布,只需要先下载镜像到本地 docker pull nginx 在/opt下新建文件夹API,将需 ...

随机推荐

  1. 《Vue.js 设计与实现》读书笔记 - 第14章、内建组件和模块

    第14章.内建组件和模块 14.1 KeepAlive 组件的实现原理 KeepAlive 一词借鉴了 HTTP 协议. KeepAlive 组件可以避免组件被频繁的销毁/重建.本质是缓存管理,再加上 ...

  2. C#/.NET/.NET Core技术前沿周刊 | 第 7 期(2024年9.23-9.30)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  3. o1 式开源推理链项目 g1:可基于 Llama 3.2-90b 模型

    g1 简介 g1 是一个开源项目,利用 Llama 3.1 70b 模型在 Groq 硬件上实现类似 OpenAI o1 的推理链能力.项目通过精心设计的提示策略引导语言模型进行逐步推理,解决了传统语 ...

  4. foobar2000 v1.6.10 汉化版(2022.05.01)

    foobar2000 v1.6.10 汉化版 -----------------------[软件截图]---------------------- -----------------------[软 ...

  5. ES6箭头函数和普通函数的区别

    书写形式不同,箭头函数的定义方式更加简单 : this指向不同 箭头函数使用父级作用域的this 普通函数执行 window 箭头函数不能使用 new 生成实例对象 : 普通函数的参数是argumen ...

  6. Power BI 网关无法添加My SQL数据集

    今天第一次发布数据类型为MySQL的数据集到Power BI报表服务器,desktop的连接正常,但是发布到web端后,添加网关时却提示以下错误,如下图所示: 错误信息: 无法创建连接,原因如下: 无 ...

  7. C240817C. 团队协作:二分答案+贪心

    C240817C. 团队协作 二分显然,但是被check难住了. 以为只能把运动员按速度分成两类,然后二分图找最大匹配,但显然做不动. 然后考场上就被卡住了--- 看了题解突然勾起了对一道题远古的记忆 ...

  8. php几种常用的算法

    1 <?php 2 3 // 选择排序 4 5 function select_sort($arr) 6 7 { 8 9 $count = count($arr); 10 11 for ($i ...

  9. 应届生必看!23 个高质量 C++ 项目推荐,校招简历秒加分

    大家好,我是小康. 最近,不少同学私信我,临近毕业忙着找工作,想问有没有推荐的 C++ 项目,既能练手又能让简历更出彩.我也想起自己当年毕业时同样的焦虑,知道作为 C++ 后端开发的求职者,有几个实际 ...

  10. 一文讲透 FPGA CDC 多bit跨时钟域同步-hand-shanking机制

    一.背景 数据的跨时钟域处理是FPGA开发过程中的常见问题,存在两种情况 慢时钟向快时钟同步:只需在快时钟域打两拍即可.其RTL如下: 打拍同步的原理:大家在初学FPGA时,经常听过FPGA中对信号打 ...