前言
??之前使用C++部署了自己的OCR識別服務器,Socket網絡傳輸部分是自己寫的,回過頭來一看,自己犯傻了,PaddleOCR本來就有自己的OCR服務器項目,叫PaddleServing,這里記錄一下部署過程。
1 下載依賴環境
1.1 下載python
官網要求是python3.6之上就行,我這里下載python3.8。
conda create -n pdsrv python=3.8
注:這里用不用conda都可以,我這里是習慣用conda,只要有python環境就行.
下載完成之后,加到環境變量里面去,并且優先級設置成最高:
1.2 下載wget和git(可選)
- wget下載網址為:wget下載
下載解壓(安裝)完成后,同樣將其添加到系統變量中,如步驟1.1的圖最后一行所示,我已經添加上去了,優先級無所謂。
wget驗證: 打開powershell直接打wget,訪問成功即可,如圖所示:
- git下載網址為:git下載
git的使用就不贅述,有手就行。
如果選擇了步驟1.2,下載git和wget,則需要下載模型和項目,使用以下命令下載:
# 使用git下載PaddleServing項目
git clone https://github.com/paddlepaddle/Serving
# 使用wget下載模型
cd Serving/examples/C++/PaddleOCR/ocr/
python -m paddle_serving_app.package --get_model ocr_rec
tar -xzvf ocr_rec.tar.gz
python -m paddle_serving_app.package --get_model ocr_det
tar -xzvf ocr_det.tar.gz
1.3 下載PaddleServing依賴
# CPU用戶下載命令
python -m pip install -U paddle_serving_server paddle_serving_client paddle_serving_app paddlepaddle`
# GPU用戶下載命令
python -m pip install -U paddle_serving_server_gpu paddle_serving_client paddle_serving_app paddlepaddle-gpu
# 下載其依賴
cd Serving
pip install -r python/requirements_win.txt
之所以說步驟1.2是可選
,是因為我上傳了源碼(需要使用git下載的部分)和模型(需要使用wget下載的部分),驚不驚喜,意不意外!!!
2 運行OCR識別服務器
2.1 啟動OCR識別服務器:
# 啟動服務器
python ocr_debugger_server.py cpu/gpu
啟動界面大概是這樣的:
2.2 啟動OCR客戶端:
python ocr_web_client.py
可以看到結果與imgs路徑下的圖片對比:
如果不想使用這個腳本,也可以使用我寫的python腳本測試:
import requests
import json
import base64def cv2_to_base64(image):"""將圖片轉換為Base64編碼"""return base64.b64encode(image).decode('utf8')def ocr_prediction(image_path):"""接受圖片文件的絕對路徑,發送OCR請求并返回結果"""# 設置請求頭和URLheaders = {"Content-type": "application/json"}url = "http://127.0.0.1:9292/ocr/prediction"# 打開圖片文件并進行Base64編碼with open(image_path, 'rb') as file:image_data = file.read()image_base64 = cv2_to_base64(image_data)# 構造請求數據data = {"feed": [{"x": image_base64}], "fetch": ["res"]}print(type(data))data2 = json.dumps(data)print(type(data2))print(data2)# 發送POST請求try:r = requests.post(url=url, headers=headers, data=data2)r.raise_for_status() # 如果請求失敗,拋出異常return r.json() # 返回OCR結果except requests.exceptions.RequestException as e:print(f"請求失敗: {e}")return None# 這里替換為你的圖片文件絕對路徑
image_path = "xxx/imgs/bbb.jpg"
result = ocr_prediction(image_path)
if result:print(result)
總結
本文主要簡要記錄了PaddleServing項目的部署過程,旨在幫助讀者快速了解如何搭建和配置PaddleServing服務。PaddleServing是一個基于PaddlePaddle的高效推理服務框架,能夠幫助用戶便捷地將訓練好的模型部署為可供實時預測的服務。本文將詳細介紹部署過程的步驟,包括環境配置、服務啟動、模型加載以及API調用等方面的內容。