PaddleOCR在 Linux下的webAPI部署方案
很多小伙伴在使用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
PaddleOCR在 Linux下的webAPI部署方案的更多相关文章
- 莱特币ltc在linux下的多种挖矿方案详解
莱特币ltc在linux下的多种挖矿方案详解 4.0.1 Nvidia显卡Linux驱动Nvidia全部驱动:http://www.nvidia.cn/Download/index.aspx?lang ...
- 在linux下用tomcat部署java web项目的过程与注意事项
在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...
- linux下实现自动部署tomcat的脚本
linux下实现自动部署tomcat的脚本 由于经常部署war到tomccat上,经常有一些重复的工作要做:停服务.备份war包.上传新的war包.启动服务.索性就写了一个自动部署的脚本. 脚本如下a ...
- Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案
什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Po ...
- Linux下Tomcat同时部署两个工程然而只有一个能访问问题
Linux下Tomcat同时部署两个工程然而只有一个能访问问题 问题: Linux下单个部署到Tomcat下的时候都正常,两个一起部署,只有一个能访问: 解决方案: 由于采用#./shutdown.s ...
- 在linux下用tomcat部署java web项目的过程与注意事项(转)
在linux下用tomcat部署java web项目的过程与注意事项一.安装JDK到http://www.oracle.com/technetwork/java/javase/downloads/in ...
- Linux下Apache服务部署静态网站------网站服务程序
文章链接(我的CSDN博客): Linux下Apache服务部署静态网站------网站服务程序
- Linux下使用JDK11部署Nacos启动报错:Could not find or load main class
Linux下使用JDK11部署Nacos 错误日志 /nacos/jdk-11.0.12/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize ...
- .NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你
随着2020进入4季度,.NET5正式版也已经与大家见面了.不过,尽管 .NET Core发布已经有四五年的时间,但到目前为止,依旧有很多.NET开发者在坚守者.NET4,原因不尽相同,但最大的问题可 ...
- 如何在Linux下使用Tomcat部署Web应用(图文)
学习Java必不可少的视同Tomcat,但是如果不会使用tomcat部署项目,那也是白扯,在这里教大家如果在Linux系统下视同Tomcat部署Web应用. 工具/原料 Apache-tomc ...
随机推荐
- Web前端 -- 利用Babel来将ES6转化为ES5代码
一.简介 Babel用来将ES6代码转为ES5代码. 二.安装 安装命令行转码工具 Babel提供babel-cli工具,用于命令行转码.它的安装命令如下: npm install --global ...
- springboot 整合webservice 相关说明
1.环境依赖 jdk8, springboot 2.3.12.release,cxf版本需要根据springboot版本修改,方法:查看springboot版本的发布日期,然后根据日期找相近的两个版本 ...
- Node. js 有哪些全局对象?
一.是什么 在浏览器 JavaScript 中,通常window 是全局对象, 而 Nodejs中的全局对象是 global 在NodeJS里,是不可能在最外层定义一个变量,因为所有的用户代码都是当前 ...
- ajax,axios和fetch三者间的区别.
ajax: 1. 传统 Ajax 指的是 XMLHttpRequest(XHR), 最早出现的发送后端请求技术,隶属于原生js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的 ...
- 浅谈DDD中的聚合
简介: 在我看来并不是MVC的基础上增加领域层,使用充血模型,解耦基础服务,我的代码就符合DDD了. 作者 | 李宇飞(菜尊)来源 | 阿里开发者公众号 在我看来并不是MVC的基础上增加领域层,使用充 ...
- Dubbo-Admin 正式支持 3.0 服务治理
简介:Dubbo 相信大家并不陌生,是一款微服务开发框架,它提供了 RPC 通信与微服务治理两大关键能力.大家在日常开发中更多使用的是 Dubbo 提供的 RPC 通信这一部分能力,而对其提供的服务 ...
- 带你体验云原生场景下 Serverless 应用编程模型
简介: 阿里云 Knative 基于 ASK 之上,在完全兼容社区 Knaitve 的同时对 FC.ECI 工作负载进行统一应用编排,支持事件驱动.自动弹性,为您提供统一的 Serverless 应 ...
- [FE] Quasar BEX 所有位置类型 types
科普:[FE] Quasar BEX 预览版指南 New Tab Quasar BEX 的默认类型是 New Tab,在新 tab 栏里打开内容. Dev Tools 也就是在开发者栏里面的内容. O ...
- dotnet 6 为什么网络请求不跟随系统网络代理变化而动态切换代理
本文记录在 dotnet 6 的网络和在 .NET Framework 的行为的变更.在 dotnet 6 下,默认的网络请求在系统网络代理变更的时候,是不会动态切换代理的.例如在应用运行进行网络通讯 ...
- Treap,Splay & LCT 学习笔记
从二叉搜索树到平衡树 二叉搜索树(Binary Search Tree)是一种二叉树的树形数据结构,它维护一个集合,并保证它的中序遍历按照递增顺序给出了这个集合的所有元素.由此,可以完成插入,删除,查 ...