PaddleOCR在 Linux下的webAPI部署方案

很多小伙伴在使用OCR時都希望能采用API的方式調用,這樣就可以跨端跨平臺了。本文將介紹一種基于python的PaddleOCR識別WebAPI部署方案。喜歡的可以關注公眾號,獲取更多內容。

55214532cc7d02d6216794686a3a4e87.jpeg

26e5b2b40b58f0ee77cb8ee26057a82c.png

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

更多技術學習請關注公眾號【明月心技術學堂】或者加入QQ群了解。QQ群:318860399

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282103.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

影響程序員生涯的三個錯誤觀念,你千萬不要犯!

程序員在社會上,到底是怎樣一個生活群體?是否能找到自己方向?其實,路一直都在那里,只是你看不到而已! 當初的你,可能一直被一些技術牽著鼻子走,并不是自己在做著自己想做的&#xff…

心電圖計算心率公式_心電圖到底能反應啥問題,看過之后你也能當“醫生”

只要是經歷過健康體檢的健康人,或者做過手術的患者,基本都做過心電圖檢查。都說久病成醫,所以有些人對血、尿常規等各項檢查的結果都門清兒得很,最起碼看一眼也能說出個大概齊。偏偏心電圖這種常做的檢查,不但老病號如…

獲取正在運行的服務

手機上安裝的App,在后臺運行著很多不同功能的服務,最常見的例如消息推送相關的服務。如何查看這些服務?如何判斷某個服務是否正在運行?如何停止某一個服務呢?請看下面的方法: package com.example.servicel…

openstack的vnc啟動ssl

1、制作ssl證書# cd /etc/pki/tls/certs [rootwww certs]# make vnc.key Enter pass phrase:# 輸入密碼 Verifying - Enter pass phrase:#確認# 從private key 中刪除密碼# openssl rsa -in vnc.key -out vnc.key # make vnc.csr Country Name (2 letter code) [XX]:CN# 國家 S…

開發composer包

一、初始化&#xff08;生成composer.json文件&#xff09; composer init#輸入你要創建的composer包項目命名空間 Package name (<vendor>/<name>) [root/tiny-laravel]: #haveyb/tiny-laravel #輸入composer包的描述 Description []:#this is a tiny laravel h…

Linux本地yum源配置以及使用yum源安裝gcc編譯環境

本文檔是圖文安裝本地yum源的教程&#xff0c;以安裝gcc編譯環境為例。 適用范圍&#xff1a;所有的cetos,紅帽,fedroa版本 適用人群&#xff1a;有一點linux基礎的小白 范例系統版本&#xff1a;CentOS Linux release 7.3.1611 (Core) 范例環境&#xff1a;vmware 虛擬機 安裝…

word如何設置上標形式_如何在word中設置特殊頁碼

獲取更多業界資訊和深度好文● 點擊藍字關注我們 ●在日常工作中&#xff0c;我們編輯的word文檔經常需要設置頁碼&#xff0c;但有時文檔的第一頁是封面&#xff0c;第二頁才是正文&#xff0c;或者第二頁是目錄&#xff0c;第三頁才是正文&#xff0c;如下圖所示&#xff0c;…

[cf797c]Minimal string(貪心+模擬)

題意&#xff1a; 給出了字符串s的內容&#xff0c;字符串t&#xff0c;u初始默認為空&#xff0c;允許做兩種操作&#xff1a; 1、把s字符串第一個字符轉移到t字符串最后 2、把t字符串最后一個字符轉移到u字符串最后 最后要求s、t字符串都為空&#xff0c;問u字符串字典序最小…

發布composer包到 Packagist,并設置自動同步(從github到Packagist)

一、發布composer包 1、將我們寫好的項目包發布到github上 這一步不贅述&#xff0c;應該都會。 但是需要注意的是&#xff0c;我們一定要為我們的項目包打上tag之后再提交&#xff0c;否則 我們composer require時可能會報錯 Could not find a version of package。 # 設置…

教你在CorelDRAW中導入位圖

在CorelDRAW軟件中不能直接打開位圖圖像&#xff0c;在實際操作中&#xff0c;用戶需要使用導入位圖圖像的方法進行操作。導入位圖圖像時&#xff0c;可以導入整幅圖像&#xff0c;也可以在導入的過程中對圖像進行裁剪&#xff0c;或重新取樣圖像&#xff0c;導入整幅位圖圖像時…

.NET 6 中將 ASP.NET Core 注冊成 Windows Service

前言使用 Visual Studio 中的 Worker Service項目模板:我們很容易創建出 Windows Service&#xff1a;IHost host Host.CreateDefaultBuilder(args).UseWindowsService().ConfigureServices(services >{services.AddHostedService<Worker>();}).Build();await host.R…

19.12 添加自定義監控項目 配置郵件告警 測試告警

9月12日任務19.12 添加自定義監控項目19.13/19.14 配置郵件告警19.15 測試告警19.16 不發郵件的問題處理19.12 添加自定義監控項目需求&#xff1a;監控某臺web的80端口連接數&#xff0c;并出圖兩步&#xff1a;1&#xff09;zabbix監控中心創建監控項目&#xff1b;2&#xf…

wab框架

http協議 一、http簡介 1.HTTP是一個基于TCP/IP通信協議來傳遞數據&#xff08;HTML 文件, 圖片文件, 查詢結果等&#xff09;。 2.HTTP是一個屬于應用層的面向對象的協議&#xff0c;由于其簡捷、快速的方式&#xff0c;適用于分布式超媒體信息系統。它于1990年提出&#xff0…

c++ 二維矩陣 轉vector_Python線性代數學習筆記——矩陣的基本運算和基本性質,實現矩陣的基本運算...

當學習完矩陣的定義以后&#xff0c;我們來學習矩陣的基本運算&#xff0c;與基本性質矩陣的基本運算&#xff1a;矩陣的加法&#xff0c;每一個對應元素相加&#xff0c;對應結果的矩陣例子&#xff1a;矩陣A和矩陣B表示的是同學上學期和下學期的課程的成績&#xff0c;兩個矩…

android 4.4以上能夠實現的沉浸式狀態欄效果

僅僅有android4.4以及以上的版本號才支持狀態欄沉浸效果 先把程序執行在4.4下面的手機上,看下效果: 在4.4以上的效果: 當然圖片也是能夠作為背景的.效果: 代碼: if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {Window window getWindow();window.setFlags(Wind…

為abp vnext生成C#客戶端給非abp第三方net程序使用

abp vnext提供了動態C#API客戶端和靜態C#API客戶端來調用abp項目的接口&#xff0c;但是有局限性&#xff1b;要使用動態C#API客戶端的項目必須也是ABP vnext的項目。靜態C#API客戶端也依賴abp的包&#xff0c;如下圖為的靜態客戶端依賴于 Volo.Abp.DependencyInjection、Volo.…

項目中引入composer包

假如在云服務器上&#xff0c;項目根目錄在 /data/shop&#xff0c;則 示例&#xff1a; cd /data/shop響應的結果可能會有兩種: 1、第一種是直接require成功 示例&#xff1a; composer require haveyb/tiny-laravel #響應結果 ./composer.json has been created Loading …

圓的擬合

1.三點求圓心和半徑 https://blog.csdn.net/liyuanbhu/article/details/52891868 2.最小二乘擬合圓轉載于:https://www.cnblogs.com/yhlx125/p/9671641.html

printf()函數不能直接輸出string類型

因為string不是c語言的內置數據&#xff0c;所以直接printf輸出string類型的是辦不到的。 要這樣輸出: printf("%s\n",a.c_str()); 舉例: #include<bits/stdc.h> using namespace std; int main(){string a"人生";printf("%s\n",a.c_str()…

C#項目代碼規范

目的 1.方便代碼的交流和維護。 2.不影響編碼的效率&#xff0c;不與大眾習慣沖突。 3.使代碼更美觀、閱讀更方便。 4.使代碼的邏輯更清晰、更易于理解。 在C#中通常使用的兩種編碼方式如下 Camel(駝峰式)&#xff1a; 大小寫形式&#xff0d;除了第一個單詞&#xff0c;所有單…