Centos7下飞桨机器学习库ocr安装使用
飞桨(https://www.paddlepaddle.org.cn)是一个非常实用方便的机器学习库,今天实验了一下ocr功能。
记录一下安装过程:
安装python3:
yum -y install python3
python -V
修改python的软链接为python3:
rm -rf /usr/bin/python
rm -rf /usr/bin/pip
ln -s /usr/bin/python3 /usr/bin/python
ln -s /usr/bin/pip3 /usr/bin/pip
安装完python3会导致防火墙firewalld和yum运行报错,只需要手工修改脚本中第一行的python为python2即可:
vim /usr/sbin/firewalld
修改 /usr/bin/python 为 /usr/bin/python2
vim /usr/bin/firewall-cmd
同上
vim /usr/bin/yum
同上
安装基础环境:
yum install gcc g++ make cmake automake zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make mysql-devel gcc-devel python-devel -y
安装Anaconda3(安装目录为:/usr/local/etc/anaconda3):
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
chmod +x Anaconda3-2020.11-Linux-x86_64.sh
./Anaconda3-2020.11-Linux-x86_64.sh
修复CXXABI版本过低的问题:
yum install -y bzip2
cp /usr/local/etc/anaconda3/lib/libstdc++.so.6.0.26 /usr/lib64
strings /usr/lib64/libstdc++.so.6.0.26 |grep 'CXXABI'
cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.26 libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI'
安装python的模块:
python -m pip install --upgrade pip
pip install shapely pyclipper dataclass pyclipper
yum install libffi-devel wget libxml2-devel libxslt-devel -y
pip install lxml requests
安装飞桨:
pip install hub
pip install paddlepaddle -U
pip install paddlehub
如果提示“spyder 4.1.5 requires pyqt5<5.13”,使用下面两条命令安装:
pip install --user pyqt5==5.12.0
pip install --user pyqtwebengine==5.12.0
安装ocr:
hub install chinese_ocr_db_crnn_mobile==1.1.1
hub install chinese_ocr_db_crnn_server==1.1.1
安装ocr3.0:
hub install ch_pp-ocrv3
解决intel mkl的问题:
conda install nomkl
如果无法解决,尝试:
sudo yum-config-manager --add-repo https://yum.repos.intel.com/setup/intelproducts.repo
yum install intel-mkl
测试ocr:
hub run chinese_ocr_db_crnn_server --input_path "/root/test.jpg" --output_dir /root/output_ocr --visualization 1
测试ocr3.0:
hub run ch_pp-ocrv3 --input_path "/PATH/TO/IMAGE"
测试分词:
hub run lac --input_text "在世界上,有五百多万中动物。"
四、服务部署
-
PaddleHub Serving 可以部署一个目标检测的在线服务。
-
第一步:启动PaddleHub Serving
- 运行启动命令:
-
$ hub serving start -m ch_pp-ocrv3
-
这样就完成了一个目标检测的服务化API的部署,默认端口号为8866。
-
NOTE: 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。
-
第二步:发送预测请求
-
配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
-
import requests import json import cv2 import base64 def cv2_to_base64(image): data = cv2.imencode('.jpg', image)[1] return base64.b64encode(data.tostring()).decode('utf8') # 发送HTTP请求 data = {'images':[cv2_to_base64(cv2.imread("/PATH/TO/IMAGE"))]} headers = {"Content-type": "application/json"} url = "http://127.0.0.1:8866/predict/ch_pp-ocrv3" r = requests.post(url=url, headers=headers, data=json.dumps(data)) # 打印预测结果 print(r.json()["results"])
-
////////////////////////////////
////////Sixi. Let it be.../////
//////////////////////////////