使用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. 更新预警(bushi)

    一回首,上次更新已经是将近3个月前了.但是博主不是似了,也不是逍遥快活游山玩水纸醉金迷乐不思蜀,而是上班太忙还是单休,所以没什么时间更新博客.但是今天我要开始忏悔了!预计更新以下几个专题(不一定真的会 ...

  2. iOS比较枚举NSOrderedSame NSOrderedAscending NSOrderedDescending使用小结

    项目开发中偶然间看到这种比较枚举,之前没注意过,仔细研究了一下结果还挺有意思,我们可以用升降序相等来帮助理解比较结果. NSString 两个字符串的比较,用 a compare:b 来比,得出的结果 ...

  3. KubeSphere v4 开源并发布全新可插拔架构 LuBan

    2024 年 10 月 10 日,KubeSphere 开源社区激动地向大家宣布,KubeSphere v4(开源版)已正式发布,同时发布全新可插拔架构 KubeSphere LuBan. 相较于 K ...

  4. 一文搞定 KubeKey 3.1.1 离线部署 KubeSphere 3.4.1 和 Kubernetes v1.28

    本文将详细介绍,如何基于操作系统 openEuler 22.03 LTS SP3,利用 KubeKey 制作 KubeSphere 和 Kubernetes 离线安装包,并实战部署 KubeSpher ...

  5. KubeSphere 3.2.1 正式发布,多项功能优化来袭!

    KubeSphere 从诞生第一天起就 100% 开源,并以社区的方式成长,在各位社区小伙伴的共同努力下,KubeSphere 迅速走向全球,成为全世界最受欢迎的开源容器平台之一. 经过 3 年的发展 ...

  6. 云原生周刊:开发人员使用 GPT-4 的 30 种重要方法 | 2023-6-5

    OpenAI 最新的大型语言模型 GPT-4 有非常多的用途,那么,作为开发人员,应该如何去使用它,来帮助自己工作呢? 在最近的 Hacker News 问答中,很多开发人员参与了讨论和分享. 也有人 ...

  7. C#常见的四种经典查找算法

    前言 在编程领域,数据结构与算法是构建高效.可靠和可扩展软件系统的基石.它们对于提升程序性能.优化资源利用以及解决复杂问题具有至关重要的作用.今天大姚给大家分享四种C#中常见的经典查找算法. C#数据 ...

  8. TCP-UDP-Socket调试工具以及使用教程(亲测好用!)

    前言 TCP-UDP老程序都不陌生吧,面试常问.所以在网络编程与网络应用开发的过程中,调试是一个至关重要的环节,它帮助开发者确保数据能够准确无误地在不同节点之间传输.尤其当涉及到TCP/IP.UDP等 ...

  9. Flask常用插件

    Flask特点: 1.小而精的代表 2.基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的Web小应用 3.灵活,核心思想是Flask只完成基本的功能,别的功能都是 ...

  10. 5.9 Linux Vim批量注释和自定义注释

    使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符#再退回命令模式,非常麻烦. 连续行的注释其实可以用替换命令来完成.换句话说,在指定范 ...