前提要求
- 服務器的部署需要鑒于先前安裝配置的docker環境,因此相關步驟查看我之前的博客? ??參考鏈接
服務部署
先前介紹
- 參考鏈接 官方推薦
- 本博客采用基于HubServing的部署,這種方式已經集成到PaddleOCR里面,在先前的docker鏡像里面就可以看到
- 如果已經推出了鏡像,請使用這個命令進入鏡像? ? sudo docker container exec -it ppocr /bin/bash
- 其中ppocr為容器的名字 使用docker ps -a的names一列就可以看到這個字段
種類劃分
- 檢測
- ?識別
- 2階段串聯
- 本博客以2階段串聯作為樣例進行講解,其余兩個模塊也是類似的
準備環境
- 安裝paddlehub
pip3 install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
- 安裝paddlepaddle
pip3 install paddlepaddle --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
- 在Linux下設置環境變量?
export PYTHONPATH=.
?安裝服務模塊
- 安裝檢測+識別串聯服務模塊
- 這條命令很麻煩,有時候會無緣無故的報錯,我也是嘗試了各種不同的安裝版本才不錯了,如果出現問題只能上GitHub的官方主頁去找答案,會有解決的辦法,祝你好運。
hub install deploy/hubserving/ocr_system/
- 這個過程會出現 缺失xxx模塊的問題
- 先前配置docker的時候已經指定了使用python=3.7,因此安裝缺失模塊的時候使用命令 pip3 install??
啟動服務
-
命令行命令啟動(僅支持CPU)
$ hub serving start --modules [Module1==Version1, Module2==Version2, ...] \--port XXXX \--use_multiprocess \--workers \
- 參數
參數 | 用途 |
---|---|
--modules/-m | PaddleHub Serving預安裝模型,以多個Module==Version鍵值對的形式列出當不指定Version時,默認選擇最新版本 |
--port/-p | 服務端口,默認為8866 |
--use_multiprocess | 是否啟用并發方式,默認為單進程方式,推薦多核CPU機器使用此方式Windows操作系統只支持單進程方式 |
--workers | 在并發方式下指定的并發任務數,默認為2*cpu_count-1 ,其中cpu_count 為CPU核數 |
-
如啟動串聯服務:?
hub serving start -m ocr_system
? ?這樣就完成了一個服務化API的部署,使用默認端口號8866
發送預測請求
- 配置好服務端,可使用以下命令發送預測請求,獲取預測結果:
- python tools/test_hubserving.py server_url image_path
? 參數
- server_url:服務地址,格式為
http://[ip_address]:[port]/predict/[module_name]
例如,如果使用配置文件啟動檢測、識別、檢測+識別2階段服務,那么發送請求的url將分別是:
http://127.0.0.1:8866/predict/ocr_det
http://127.0.0.1:8867/predict/ocr_rec
http://127.0.0.1:8868/predict/ocr_system
- image_path:測試圖像路徑,可以是單張圖片路徑,也可以是圖像集合目錄路徑
- 訪問示例?python tools/test_hubserving.py http://127.0.0.1:8866/predict/ocr_system ./doc/imgs/
返回結果格式說明
- 返回結果為列表(list),列表中的每一項為詞典(dict),詞典一共可能包含3種字段,信息如下:
字段名稱 | 數據類型 | 意義 |
---|---|---|
text | str | 文本內容 |
confidence | float | 文本識別置信度 |
text_region | list | 文本位置坐標 |
修改模塊
- 參考鏈接
啟動服務
檢測識別