使用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. 墨天轮最受DBA欢迎的数据库技术文档-监控篇

    好久不见,<墨天轮最受欢迎的技术文档>系列文章回归啦!本期主题数据库监控篇,希望能够帮助到大家!此外,为感谢大家支持,原文文末也给大家带来了返场福利,欢迎大家进入原文参与~ 数据库监控是许 ...

  2. 使用 Debugger 断点 如果打开了断点调试 就会跳转空白页面

    <!DOCTYPE html> <html> <header> <title>test</title> </header> &l ...

  3. 01-react的基本使用

    // 导入react和react-dom包 类似 vue 中的 import vue from 'vue' import react from 'react' // 内部的组件 import reac ...

  4. kotlin函数和Lambda表达式——>函数

    函数: 1.函数声明 kotlin中的函数使用fun关键字声明: fun double(x: Int): Int { return 2 * x } 2.函数用法 调用函数使用传统的方法: val re ...

  5. KubeSphere 社区双周报|2024.09.13-09.26

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  6. KubeSphere 社区双周报 | Java functions framework 支持 SkyWalking | 2023.8.4-8.17

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  7. k8s 中的 Gateway API 的背景和简介【k8s 系列之四】

    〇.Gateway API 的背景 第一阶段:Service 初始的 Kubernetes 内部服务向外暴露,使用的是自身的 LoadBlancer 和 NodePort 类型的 Service. 在 ...

  8. 使用pandas进行数据分析

    目录 1.pandas的特点 2.Series 2.1新建Seriws 2.2使用标签来选择数据 2.3 通过指定位置选择数据 2.4 使用布尔值选择数据 2.5 其他操作 2.5.1 修改数据 2. ...

  9. 一文彻底熟练掌握并使用Java的NIO操作

    一.基本概念 Java NIO 是 Java 1.4 引入的,用于处理高速.高并发的 I/O 操作.与传统的阻塞 I/O 不同,NIO 支持非阻塞 I/O 和选择器,可以更高效地管理多个通道. 二.核 ...

  10. 初识GO语言--流程控制