当前位置:首页 » 《休闲阅读》 » 正文

PaddleOCR在 Linux下的webAPI部署笔记

9 人参与  2024年11月20日 16:01  分类 : 《休闲阅读》  评论

点击全文阅读


 一、 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

在末尾添加如下内容:

#pythonPATH=/usr/local/software/python/bin:$PATH

保存后执行

source /etc/profile

修改python的链接指向,用于修改默认的python命令版本

mv /usr/bin/python /usr/bin/python.bakln -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.64pip3 install opencv-python-headless

1.3 安装PaddleOCR

pip3 install  paddleocr

安装PaddleOCR的依赖预测库:

pip3 install paddlepaddle

1.4 安装其他依赖

pip3 install fastapi  pip3 install uvicornpip3 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.6ln -s libstdc++.so.6.0.26 libstdc++.so.6

至此基本环境搭建完成,接下来即可搭建WebAPI项目了。

用于定义WebAPI的IP地址和端口,可根据实际情况部署修改。

请求方式:POST
url地址:http://ip:port//WebAPI/PaddleOCR

数据格式:json

把下面代码另存为 PaddleOCRFastWebAPI.py文件,并上传到linux系统,

import io
import base64
import numpy as np
from PIL import Image
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import paddleocr

app = FastAPI()

# 定义请求数据模型
class ImageData(BaseModel):
    image: str

# 初始化PaddleOCR
ppocr = paddleocr.PaddleOCR(use_gpu=False)

@app.post("/PaddleOCR")
async def PaddleOCR(image_data: ImageData):
    if not image_data.image:
        raise HTTPException(status_code=400, detail="Image data is null")

    imgbyte = base64.b64decode(image_data.image)
    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)
    
    return result

# 主函数,用于启动服务器
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=3336)
 

启动服务:

nohup python PaddleOCRFastWebAPI.py &

查看服务进程ID:

ps aux | grep PaddleOCRFastWebAPI.py

或者:

ps aux | grep python

结束 服务

sudo kill -9 15235

#3.2接口文档
##基本信息
请求方式:POST
url地址:`http://ip:port/PaddleOCR`
数据格式:json
##### 输入参数

变量名            描述是否必填类型备注
image 需要识别文字的图像base64 是 string


 

##### 输入示例:

{"image": "xxxxxxxxx"}


###输出参数
数据格式:json字符串
输出示例:

{"TextBlocks"://识别出来的文本块数组,[{"Points"://该数组固定四个大小,为一个识别区域的四个顶点坐标,从左上角开始,顺时针方向。[{"x":0,"y":0},{"x":100,"y":0},{"x":100,"y":50},{"x":0,"y":50}],"Text":"中国ABC123"//一个文本区域识别出来的文字},{"Points":[{"x":0,"y":0},{"x":100,"y":0},{"x":100,"y":50},{"x":0,"y":50}],"Text":"中国ABC123"},{"Points":[{"x":0,"y":0},{"x":100,"y":0},{"x":100,"y":50},{"x":0,"y":50}],"Text":"中国ABC123"},......]}

其它

获取paddleocr安装目录

pip3 show paddleocr


点击全文阅读


本文链接:http://zhangshiyu.com/post/189331.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1