很多小伙伴在使用OCR时都希望能过采用API的方式调用,这样就可以跨端跨平台了。本文将介绍一种基于python的PaddleOCR识方案。喜欢的可以关注公众号,获取更多内容。
一、 Linux环境下部署
1.环境要求
操作系统:CenterOS7;
主要软件环境:python3.9X64、opencv4.5.5、PaddleOCR2.5、paddlepaddle2.2.1。python运行环境建议3.6-3.9
1. 环境安装
1.1 安装python3.9x64
运行以下命令,进行python3.9版本的安装
wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz&& yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel&& mkdir /usr/local/software&& mkdir /usr/local/software/tars&& mkdir /usr/local/software/python&& tar -zxvf Python-3.9.10.tgz -C /usr/local/software/tars/&& mv /usr/local/software/tars/Python-3.9.10 /usr/local/software/python&& cd /usr/local/software/python/Python-3.9.10&& # 指定安装目录为/usr/local/software/python/ ./configure --prefix=/usr/local/software/python/&& make&& make install
如果提示没有【wget】命令,请准备【wget】的安装。
修改环境变量:
vi /etc/profile
在末尾添加如下内容:
#python PATH=/usr/local/software/python/bin:$PATH
保存后执行
source /etc/profile
修改python的链接指向,用于修改默认的python命令版本
mv /usr/bin/python /usr/bin/python.bak ln -s /usr/local/software/python/bin/python3 /usr/bin/python
因为yum和firewall都依赖python,所以更改会导致它们不可用,需要修改配置。
编辑yum文件:
vi /usr/bin/yum
将第一行”#!/usr/bin/python” 改为 “#!/usr/bin/python2.7”即可。
编辑urlgrabber-ext-down文件:
vi /usr/libexec/urlgrabber-ext-down
将第一行”#!/usr/bin/python” 改为 “#!/usr/bin/python2.7”即可。
验证是否修改成功 执行 :
python -V
至此,python3.9安装成功。
1.2 安装opencv4.5.5
pip3 install opencv-python==4.5.5.64 pip3 install opencv-python-headless
1.3 安装PaddleOCR
pip3 install paddleocr
安装PaddleOCR的依赖预测库:
pip3 install paddlepaddle
1.4 安装其他依赖
pip3 install Flask pip3 install DateTime
1.5 安装libstdc++.so.6.0
下载安装libstdc++.so.6.0依赖库
然后上传到linux任意目录下,执行以下命令:
cp libstdc++.so.6.0.26 /usr/lib64/ cd /usr/lib64/ rm -rf libstdc++.so.6 ln -s libstdc++.so.6.0.26 libstdc++.so.6
至此基本环境搭建完成,接下来即可搭建WebAPI项目了。
用于定义WebAPI的IP地址和端口,可根据实际情况部署修改。
请求方式:POST
url地址:http://ip:port//WebAPI/PaddleOCR
数据格式:json
把下面代码另存为PaddleOCRWebAPI.py文件,并上传到linux系统,
import io from pickle import DICT import paddleocr import json import base64 import DateTime from flask import Flask, request,jsonify import numpy as np from PIL import Image app=Flask(__name__) app.config['JSON_AS_ASCII']=False @app.route("/WebAPI/PaddleOCR",methods=["POST"]) def PaddleOCR(): if(request.data==""): return APIResult.Error("request data is null") data=json.loads(request.data) imgbase64=data["image"]; imgbyte=base64.b64decode(imgbase64) image=io.BytesIO(imgbyte) temp= Image.open(image) img=np.array(temp)[:,:,:3] info= ppocr.ocr(img) result={"TextBlocks":[]} for textblocks in info: textBlock={"Points":[],"Text":""} for tk in textblocks[0]: point={"x":str(tk[0]),"y":str(tk[1])} textBlock["Points"].append(point) textBlock["Text"]=textblocks[1][0] result["TextBlocks"].append(textBlock) print(result) return jsonify(result) def main(): global ppocr; ppocr=paddleocr.PaddleOCR(use_gpu=False); app.run(debug=True,host="0.0.0.0",port=80) if __name__=="__main__": main();
启动服务:
python PaddleOCRWebAPI.py
windows下部署参考PaddleOCR在 windows下的webAPI部署方案 - 明月心技术学堂 - 博客园 (cnblogs.com)
更多技术学习请关注公众号【明月心技术学堂】或者加入QQ群了解。QQ群:318860399
标签:webAPI,bin,python,PaddleOCR,devel,usr,Linux,local,software From: https://www.cnblogs.com/raoyutian/p/16769761.html