CentOS7.6下安装PaddleOCR

2023-10-27

最近看到百度开源的OCR系统, 识别效果非常不错,故安装实验一把, 在此记录一下安装过程, 避免遗忘。

我做了一个干净的CentOS7系统,系统上没用docker服务, 先安装docker

1、curl -sSL https://get.daocloud.io/docker | sh                       使用国内镜像 daocloud 一键安装

2、systemctl  start  docker.service                                          启动docker服务

3、https://hub.docker.com/r/paddlepaddle/paddle/tags/         然后到这个URL下载官方上传的镜像

       我选择了最新的一个,执行命令  docker  pull  paddlepaddle/paddle:2.0.2-gpu-cuda11.0-cudnn8  下载镜像

                                                           docker  pull  paddlepaddle/paddle:2.0.0-gpu-cuda11.0-cudnn8

4、下载完毕后 用 docker  images 查看镜像信息

               REPOSITORY               TAG                                              IMAGE ID              CREATED       SIZE
               paddlepaddle/paddle      2.0.2-gpu-cuda11.0-cudnn8       832153938834       11 days ago     30.3GB

5、启动镜像

      # docker run -d -it   40aaf2b075cb    可以不加(  /bin/bash )

      docker run -d -v /home:/opt -it  -p 8999:8999   40aaf2b075cb     把主机中的/home目录映射到docker中的/opt目录

      docker  run  -d  -it  -p 8999:8999   40aaf2b075cb    

docker run -it -d -p 127.0.0.1:5000:5000 docker.io/centos:latest /bin/bash

6、查看容器   docker ps  ,  复制CONTAINER ID ,   然后执行下面的命令进入容器

[root@localhost home]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
ba64e9e7d706   832153938834   "/bin/bash"   3 minutes ago   Up 3 minutes   22/tcp    goofy_davinci

进入容器   docker   exec   -it   7a790cf75a51   /bin/bash     (必须加 /bin/bash), 进入容器后,cd  /opt目录,

修改/etc/profile文件,再文件末尾添加 

export JAVA_HOME=/opt/jdk1.8.0_144
export JRE_HOME=/opt/jdk1.8.0_144/jre    
export PATH=$PATH:/opt/jdk1.8.0_144/bin    
export CLASSPATH=./:/opt/jdk1.8.0_144/lib:/opt/jdk1.8.0_144/jre/lib


保存后执行 source   /etc/profile, 这样java运行环境就配置好了。

退出容器  exit

停止容器  docker stop 7a790cf75a51           删除容器 docker rm   7a790cf75a51

 

7、安装PaddlePaddle 2.0

     pip3 install --upgrade pip

     python3 -m pip install paddlepaddle==2.0.0  -i https://mirror.baidu.com/pypi/simple    安装最新的2.0.0稳定版

 

8、克隆PaddleOCR repo代码

      git clone https://gitee.com/paddlepaddle/PaddleOCR

9、安装第三方库

     cd PaddleOCR

     编辑文件  requirements.txt , 把里面的   scikit-image的版本号从0.17.2改为0.15.0,  然后再执行install
     pip3 install -r requirements.txt

10、下载超轻量级模型(也可以下载其他模型):

mkdir inference && cd inference
# 下载超轻量级中文OCR模型的检测模型并解压
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar && tar xf ch_ppocr_mobile_v2.0_det_infer.tar
# 下载超轻量级中文OCR模型的识别模型并解压
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar && tar xf ch_ppocr_mobile_v2.0_rec_infer.tar
# 下载超轻量级中文OCR模型的文本方向分类器模型并解压
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar && tar xf ch_ppocr_mobile_v2.0_cls_infer.tar
cd ..

 

# 预测image_dir指定的单张图像
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/"  --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True

然后把识别结果返回给java程序进行分析。

配置好之后制作自己的镜像  docker  commit   b63f82ca186b   paddle-java-2.0

 

  Collecting shapely
  Using cached Shapely-1.7.1-cp35-cp35m-manylinux1_x86_64.whl (1.0 MB)
ERROR: Could not find a version that satisfies the requirement scikit-image==0.17.2
ERROR: No matching distribution found for scikit-image==0.17.2

ERROR: Could not find a version that satisfies the requirement scikit-image==0.17.2 (from -r requirements.txt (line 2)) (from versions: 0.7.2, 0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.9.1, 0.9.3, 0.10.0, 0.10.1, 0.11.2, 0.11.3, 0.12.0, 0.12.1, 0.12.2, 0.12.3, 0.13.0, 0.13.1, 0.14.0, 0.14.1, 0.14.2, 0.14.3, 0.14.4, 0.15.0)
ERROR: No matching distribution found for scikit-image==0.17.2 (from -r requirements.txt (line 2))

pip install --upgrade pip setuptools==45.2.0

 

 pip3 install scikit-image

 

 

ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

pip install --ignore-installed PyYAML

 

如果提示  Levenshtein/_levenshtein.c:99:10: fatal error: Python.h: No such file or directory 这个错误

则 yum install platform-python-devel 或者 yum install Python-devel

执行  pip install -r requirements.txt 成功后,参考下面的网址操作:

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_ch/quickstart.md

ImportError: libSM.so.6: cannot open shared object file: No such file or directory 

则执行  yum install libSM

python -m SimpleHTTPServer 8069        

python3  -m  http.server  8069

至此PaddleOCR安装好了,也制作了新的镜像,下来就是要解决远程控制的问题了。

 

手机上的远程控制:本来使用adb.exe就可以操控的, 不过此法需要使用USB数据线连接Android手机,App会监测USB数据线的连接,禁止使用。后来想到手机上安装一个App,用此App控制彼App,开干, 找到github上的uiautomator2软件,安装测试还算顺利。

下面讲解一下如何安装配置 uiautomator2,官网:https://github.com/openatx/uiautomator2 , 安装主要参考的文章: https://zhuanlan.zhihu.com/p/128058291

1、先保证adb.exe  devices 能显示设备,如果不显示,请查看开发者选项中是否允许调试

2、执行 pip3 install -U uiautomator2       安装uiautomator2

3、运行 python -m uiautomator2 init  安装包含httprpc服务的apk到手机。

4、安装  pip3 install --pre -U weditor          一个类似 D:\BPlan\android-sdk-windows\tools\bin\uiautomatorviewer.bat 的工具。

5、命令行直接输入 weditor 会自动打开浏览器(http://localhost:17310/),输入设备的ip或者序列号,点击Connect即可。

点评:这个工具做的还是不错的,不过可惜的是我要控制的App会检测USB连接的调试模式,无法再有USB数据线连接的情况下运行,文档说支持wifi连接,测试了多次没有解决WIFI情况下连接atx-agent的问题。

           看来这个工具也不得不放弃。

 

我还是寻求Windows下的远程控制方法吧,Python有相关的库可以直接发送鼠标键盘事件,准备开干。

我本机安装的python是3.9的, sourceforge.net 上的版本最高支持到Py3.5的, 从github上 https://github.com/mhammond/pywin32/releases 下载Release 300的可以支持Py3.9, 下载后安装即可。

安装上之后, 在pycharm中import不起作用, 导入不进来。直接下载源码编译,源码下载好之后,设置环境变量PATH,增加搜索路径 C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64,因为要用到此路径中的mc.exe    rc.exe

下来再源码目录的控制台执行   python .\setup.py -q build  , 顺利的就编译通过了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS7.6下安装PaddleOCR 的相关文章

  • Java中方法的学习

    目录 Java中的方法定义 设计方法的原则 方法的命名规则 代码实现 方法调用 方法的重载 方法学习不知死过多少次 还让我学是吧 你没完了哈 来 来 来 咱们一起来分析 老师 前面的关键字我讲过吧 数据类型还用说嘛 方法的定义格式我说过吧
  • 2023推免夏令营末班车

    南航 清华大学预推免全面开放 目录 曲阜师范大学 活动内容 哈工大预推免 学校 学院 网址 ddl result schedule 河海大学 人工智能与自动化学院 河海大学人工智能与自动化学院2023年全国优秀大学生夏令营活动有关安排的通知
  • React Hooks 入门下

    前面的话 上篇介绍了 useState 和 useEffect 两个钩子函数 这篇将接着介绍其他常用的钩子函数 1 useCallback 作用 该 hooks 返回一个 memoized 回调函数 根据依赖项来决定是否更新函数 其依赖项可
  • VsCode写Python代码!这代码简直和大神一样规范!太漂亮了!

    VsCode虽然没有Pycharm的功能齐全 但是也是有他的独特之处 今天就让大家见识一下 用VsCode写出的代码是怎么样的吧
  • 【Shell编程】Shell中Bash变量-位置参数变量

    目录 系列文章 位置参数变量 实例 理解参数 实例 剩余参数 实例 区别整体对待和单独对待 系列文章 Shell编程 Shell基本概述与脚本执行方式 Shell编程 Shell中Bash基本功能 Shell编程 Bash变量 用户自定义变
  • Linux驱动开发(十六)---块设备驱动

    前文回顾 Linux驱动开发 一 环境搭建与hello world Linux驱动开发 二 驱动与设备的分离设计 Linux驱动开发 三 设备树 Linux驱动开发 四 树莓派内核编译 Linux驱动开发 五 树莓派设备树配合驱动开发 Li
  • 算法(1) MST - 最小生成树

    最小生成树 算法 概念 生成树 如果连通网G的一个子图是一棵包含G的所有顶点的树 则该子图称为G的生成树 最小生成树 在连通网G的所有生成树中 所有边的代价和最小的生成树 称为最小生成树 Kruskal 算法 又称为加边法 将边排序后从小到
  • 清除css的display属性

    今天在项目中遇到了一个要清除display属性的问题 整了半天才搞好 给大家分享一下 var b obj attr id var a document getElementsByName b for var i 0 i
  • Spring Cloud Ribbon的使用详解

    目录 一 概述 1 Ribbon是什么 2 Ribbon能干什么 3 Ribbon现状 4 未来替代方案 5 架构说明 二 RestTemplate 用法详解 三 Ribbon核心组件IRule 四 实战项目 1 回顾之前的项目 2 Rib
  • win7右键打开方式添加应用程序无法设置

    针对某些绿色软件包 当我们移动软件包的位置时 再次设置默认打开方式会出现无法设置的情况 如下图 选择要设置的文件 gt 右击 gt 打开方式 gt 选择默认程序 浏览选择默认打开方式的应用 点击打开设置默认程序 结果是打开方式中并没有Not
  • 【点击按钮 复制文本】实现点击按钮复制文本内容(vue和uniapp两种方式实现)

    一 Vue使用clipboard实现点击按钮复制文本内容 1 安装clipboard js npm install clipboard save 2 具体代码 div class copybox 复制 div
  • Redis高并发缓存架构实战

    示例代码 Service public class ProductService Autowired private ProductDao productDao Autowired private RedisUtil redisUtil A
  • 拉勾教育

    开篇词 开篇词 Java 性能优化 是进阶高级架构师的炼金石 你好 我是李国 作为 Java 性能优化与面试 21 讲 这个课程的作者 我先来简单介绍下自己 我曾任京东金融 陌陌科技高级架构师 工作期间 我接触的都是比较底层的中间件和操作系
  • Redis学习笔记7:Redis持久化-RDB、AOF

    一 什么是RDB 1 Redis DataBase 在指定的时间间隔内将内存中的数据集快照写入磁盘 也就是行话讲的Snapshot快照 它恢复时是将快照文件直接读到内存里 Redis会单独创建 fork 一个子进程来进行持久化 会先将数据写
  • 软件测试经验分享

    软件测试 一个熟悉又略显陌生的词汇 不同人对软件测试有不同的理解 如果把软件比作一片辽阔的区域 地形复杂 设置有许多个目的地 每个目的地都有多条道路可以到达 每条道路上都可能埋藏了威力不一的地雷 测试人员的职责就是在用户进入这片区域之前 试
  • BroadcastChannel:weex跨页面通信

    场景如下 一个列表页面用于展示所有未完成的作业 点击列表的某一项 会跳转到该项作业的详细信息界面 可以在这里将作业标记为已完成 一旦标记后 列表中就不应该再存在此作业了 在这里 列表相当于一个主页面 详细信息界面是子页面 主界面浏览到第10
  • 如何使用Java反射机制获取类的所有构造函数呢?

    转自 如何使用Java反射机制获取类的所有构造函数呢 下文讲述使用Java反射获取一个类的所有构造方法分享 如下所示 实现思路 1 forName 获取指定的Class对象 2 getConstructors 可返回一个构造函数对象数组 例
  • 自定义maven插件 Hello, mojo.

    文章目录 pom xml GreetingMojo java 运行 install install 报错 配置代理 pom xml 中添加配置 参考文档 https maven apache org guides plugin guide
  • CSS3 transition 属性过渡效果 详解

    CSS3 transition 允许 CSS 元素的属性值在一定的时间区间内平滑地过渡 我们可以在不使用 Flash 动画或 JavaScript 的情况下 在元素从一种样式变换为另一种样式时为元素添加效果 这种效果可以在鼠标单击 获得焦点
  • mmcv与cuda,pytorch版本匹配要求

    mmcv与cuda pytorch版本兼容要求 见mmcv官方文档 https mmcv readthedocs io zh CN latest get started installation html pip 安装部分 目前网页上默认最

随机推荐

  • 【SQL注入13】referer注入基础及实践(基于BurpSuite工具和Sqli-labs-less19靶机平台)

    目录 1 概述 2 实验简介 2 1 实验平台 2 2 实验目标 3 实验过程 3 1 前戏 3 2 判断注入点及注入类型 3 3 获取库名表名字段名字段内容 3 4 实验结果 4 总结 1 概述 Referer 是 HTTP 请求头的一部
  • 小程序能当成 App 吗?FinCip:能

    如果早些年提问 把小程序当成 App 使用 本身就是一件天方夜谭的问题 好像业务人员不再关注研发工程师是否能够按期交付代码 而是想自己在屏幕上点击几下光标 编程软件就能快速生成无数个页面和应用 时光荏苒一去不返 如今的低代码产品早都把 拖拉
  • Google 的开源技术protobuf 简介与例子

    今天来介绍一下 Protocol Buffers 以下简称protobuf 这个玩意儿 本来俺在构思 生产者 消费者模式 系列的下一个帖子 关于生产者和消费者之间的数据传输格式 由于里面扯到了protobuf 想想干脆单独开一个帖子算了 p
  • 登录注册代码

    服务器的建立 服务器中的代码 浏览器代码 MyHttpManager代码 Main代码 注册界面的代码 文本文档流程图 服务器的建立 1 右键在web里面找到Dynamic web project 建立一个服务器 在Java Resourc
  • Error: JAVA_HOME is not set and java could not be found in PATH.

    CSDN话题挑战赛第2期 参赛话题 学习笔记 目录 前言 问题 解决办法 测试 启动成功 查看状态 关闭服务 前言 因为zookeeper服务器多 每一次启动 关闭和查看状态都很麻烦 所以通过shell脚本启动zookeeper集群 写完的
  • 二叉树、队列、栈、广义表(二)数据结构与算法(十八)

    数据结构与算法 一 软件设计 十七 https blog csdn net ke1ying article details 129220378 线性表 队列与栈 队列 先进先出 栈 先进后出 循环队列 队投和队尾连接起来 队空的条件 Hea
  • sqlserver跨服务器查询性能,sqlserver 多表查询不同数据库服务器上的表

    第一种方法 创建链接服务器 exec sp addlinkedserver srv lnk sqloledb 条码数据库IP地址 exec sp addlinkedsrvlogin srv lnk false null 用户名 密码 go
  • Android Studio 升级 Flamingo 后 Gradle 又挂了

    1 Gradle 7 2 才支持 Java 17 Unsupported Java Your build is currently configured to use Java 17 0 6 and Gradle 5 0 Possible
  • 求最小素因子和最大素因子

    转载自 https blog csdn net wsniyufang article details 6623576 include
  • ERR_UNKNOWN_URL_SCHEME 导致的可能问题

    今晚在做跨域测试的时候 明明已经用了 jsoup去处理 但却一直报 ERR UNKNOWN URL SCHEME 错误 然后就是百度找答案 但是也没有解决问题 然后看了一下自己请求的地址是下面这样的 前面没有加上 http 所以我在前面加上
  • Docker+Nginx:实现网站部署的灵活性与高效性

    Hi I m Huuuui 这次为大家简单介绍一下docker环境中去部署nginx 希望能够帮到大家 环境 1 拉取nginx镜像 拉取镜像 docker pull nginx 查看镜像 docker images 2 本地创建映射文件夹
  • E罗斯宝藏网站,收藏起来一定用的到!

    网站叫做https rutracker org 收藏起来总有一天你会用得到 你可以在这里获取各种资源 例如Adobe全家桶 Windows系统 以及各种游戏和3a大作电影等 当初为了打击盗版被封禁 现在因为各大公司对E罗斯的制裁 该网站已被
  • 数据库开发技术

    第一次作业 一 单选题 共40题 80分 1 单选题 2分 单选题 在E R模型中 实体间的联系用 图标来表示 A 矩形 B 直线 C 菱形 D 椭圆 我的答案 C 菱形 正确答案 C 菱形 2分 2 单选题 2分 单选题 设R是一个关系模
  • antd中form表单的正则校验

    以下面input为例
  • 数仓及其维度(分层)建模(ODS DWD DWS DWT ADS)

    一 数仓及其维度 1 什么是数仓 数据仓库 简称数仓 Data Warehouse 从逻辑上理解 数据库和数仓没有区别 都是通过数据库软件实现存放数据的地方 只不过从数据量来说 数据仓库要比数据库更庞大 数仓主要是为企业制定决策 提供数据支
  • 小白入门区块链(通俗易懂)

    区块链基础入门 什么是区块链 科技层面解释 数学 密码学 互联网 计算机编程 官方解释 区块链是一个分布式的共享账本和数据库 具有去中心化 不可篡改 全程留痕 可以追溯 集体维护 公开通明的特点分布式数字账簿 加密技术 不可篡改 通证 一种
  • C++中的基本语句

    C 程序由很多明确表达的语句组成 其中常见的语句包含声明语句 赋值语句 消息语句 函数调用 函数原型和返回语句 其中声明语句和赋值语句中的核心就是变量 变量的声明语句 也称为定义 使用一个简单的标识符来描述计算机存储空间中一定位置的存储单元
  • Python生成requestment.txt文件

    python中通过requirements txt来记录项目所有的依赖包及其版本号 以便在其他的环境中部署 pip freeze gt requirements txt python中通过requirements txt来记录项目所有的依赖
  • 详细聊聊Vue中设计的computed和watch

    一 定义 它们都提供了一种在响应式数据变化时执行响应操作的机制 computed 计算属性 是基于其他数据进行计算得到的 依赖于其他数据 只有当依赖的数据发生变化时 计算属性才会自动更新 并当作普通属性进行访问 computed 当firs
  • CentOS7.6下安装PaddleOCR

    最近看到百度开源的OCR系统 识别效果非常不错 故安装实验一把 在此记录一下安装过程 避免遗忘 我做了一个干净的CentOS7系统 系统上没用docker服务 先安装docker 1 curl sSL https get daocloud