首页 > 系统相关 >PaddleOCR在 Linux下的webAPI部署方案

PaddleOCR在 Linux下的webAPI部署方案

时间:2022-10-08 18:15:38浏览次数:90  
标签:webAPI bin python PaddleOCR devel usr Linux local software

很多小伙伴在使用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

相关文章

  • Linux综合记录
    目录CentOS7.xUbuntu/Mint服务安装报错Ubuntu20/Mint21安装KDEPlasma触摸板设置中存在手指动作但无法选中无wifi图标解决CentOS7.xUbuntu/Mint服务安......
  • Linux引导过程及排除故障
    一、Linux引导过程1、引导过程2、引导过程详解2.1开机自检服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设......
  • Linux CMake 指定gcc编译版本
    背景:无root下手动升级gcc版本为5.5之后,但是由于默认目录/usr/bin下的gcc是4.8.5,在cmake默认使用老版本的gcc,导致cmake失败。解决方案:注意!将下面的yourpath替换成新的gc......
  • Linux中检测进程/程序的资源使用情况(CPU、内存等)
    Linuxtop工具中各字段的含义:top输出信息:jackie@jackie-lenovo:~$toptop-09:19:00up2days,14:46,5users,loadaverage:0.46,0.57,0.48Tasks:621tota......
  • Linux 简单的Java sh脚本启动jar包
    123projectName="你的项目名"45#提醒功能6help(){7echo"help:sh${projectName}.sh[start|stop|restart]"8exit19}1011#判断项......
  • 【Linux】解压分卷压缩的zip文件
    由于文件大小限制,先对文件进行了100MB的分卷压缩,得到文件:test.zip、test.z01、test.z02上传至linux系统后,对文件进行解压:#1.先合并文件cattest.z*>testall.zip#2.......
  • 非root权限升级(修改当前用户)Linux gcc版本
    参考链接:非root权限升级(修改当前用户)Linuxgcc版本没有root权限,Linux离线升级gcc......
  • linux 前端 jenkins打包失败 permission 权限安装 root 安装nodejs,没有权限,另一个账号
    linux前端jenkins打包失败permission权限安装root安装nodejs,没有权限,另一个账号,需要chkmod将文件权限打开开始以为nodejs版本问题最后发现是安装nodejs是一个账......
  • Linux驱动编写之PWM驱动配置
    简介I.MX6ULL有8路PWM输出,因此对应8个PWM控制器,所有在设备树下就有8个PWM控制器节点。而GPIO1_IO08就是PWM1的输出引脚,所以这里是基于IMX6ULLPWM1......
  • linux常用设置命令
    常用指令mkdir创建目录touch创建空文件echo创建带有内容的文件。cat查看文件内容cp拷贝mv移动或重命名rm......