最近看到百度开源的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 , 顺利的就编译通过了。