PaddleOCR提供2種服務部署方式:python
- 基於PaddleHub Serving的部署:代碼路徑爲"
./deploy/hubserving
",按照本教程使用; - 基於PaddleServing的部署:代碼路徑爲"
./deploy/pdserving
",使用方法參考文檔。
基於PaddleHub Serving的服務部署
hubserving服務部署目錄下包括檢測、識別、2階段串聯三種服務包,請根據需求選擇相應的服務包進行安裝和啓動。目錄結構以下:git
deploy/hubserving/ └─ ocr_det 檢測模塊服務包 └─ ocr_rec 識別模塊服務包 └─ ocr_system 檢測+識別串聯服務包
每一個服務包下包含3個文件。以2階段串聯服務包爲例,目錄以下:github
deploy/hubserving/ocr_system/ └─ __init__.py 空文件,必選 └─ config.json 配置文件,可選,使用配置啓動服務時做爲參數傳入 └─ module.py 主模塊,必選,包含服務的完整邏輯 └─ params.py 參數文件,必選,包含模型路徑、先後處理參數等參數
快速啓動服務
如下步驟以檢測+識別2階段串聯服務爲例,若是隻須要檢測服務或識別服務,替換相應文件路徑便可。json
1. 準備環境
克隆代碼:https://gitee.com/paddlepaddle/PaddleOCR.git,解壓並進入PaddleOCR文件夾併發
# 安裝paddlehub pip3 install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 下載推理模型
PaddleOCR下新建‘inference’文件夾,準備推理模型並放到‘inference’文件夾裏面,默認使用的是v1.1版的超輕量模型,ide
https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/quickstart.md 函數
默認模型路徑爲:測試
檢測模型:./inference/ch_ppocr_mobile_v1.1_det_infer/ 識別模型:./inference/ch_ppocr_mobile_v1.1_rec_infer/ 方向分類器:./inference/ch_ppocr_mobile_v1.1_cls_infer/
模型路徑可在params.py
中查看和修改。 更多模型能夠從PaddleOCR提供的模型庫下載,也能夠替換成本身訓練轉換好的模型。ui
3. 安裝服務模塊
PaddleOCR提供3種服務模塊,根據須要安裝所需模塊。url
- 在Linux環境下,安裝示例以下:
# 安裝檢測服務模塊: hub install deploy/hubserving/ocr_det/ # 或,安裝識別服務模塊: hub install deploy/hubserving/ocr_rec/ # 或,安裝檢測+識別串聯服務模塊: hub install deploy/hubserving/ocr_system/
- 在Windows環境下(文件夾的分隔符爲
\
),安裝示例以下:
# 安裝檢測服務模塊: hub install deploy\hubserving\ocr_det\ # 或,安裝識別服務模塊: hub install deploy\hubserving\ocr_rec\ # 或,安裝檢測+識別串聯服務模塊: hub install deploy\hubserving\ocr_system\
4. 啓動服務
方式1. 命令行命令啓動(僅支持CPU)
啓動命令: hub serving start -c D:\XHX\Develop\Paddale\PaddleOCR\deploy\hubserving\ocr_system\config.json
注意:若是啓動報錯xxx路徑找不到,去PaddleOCR\deploy\hubserving下的ocr_system、ocr_det、ocr_rec的params.py文件,將全部的model_dir
替換爲符合win格式的絕對路徑便可;
參數:
參數 | 用途 |
---|---|
--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。
方式2. 配置文件啓動(支持CPU、GPU)
啓動命令:
hub serving start -c config.json
其中,config.json
格式以下:
{ "modules_info": { "ocr_system": { "init_args": { "version": "1.0.0", "use_gpu": true }, "predict_args": { } } }, "port": 8868, "use_multiprocess": false, "workers": 2 }
init_args
中的可配參數與module.py
中的_initialize
函數接口一致。其中,當use_gpu
爲true
時,表示使用GPU啓動服務。predict_args
中的可配參數與module.py
中的predict
函數接口一致。
注意:
- 使用配置文件啓動服務時,其餘參數會被忽略。
- 若是使用GPU預測(即,
use_gpu
置爲true
),則須要在啓動服務以前,設置CUDA_VISIBLE_DEVICES環境變量,如:export CUDA_VISIBLE_DEVICES=0
,不然不用設置。 use_gpu
不可與use_multiprocess
同時爲true
。
如,使用GPU 3號卡啓動串聯服務:
export CUDA_VISIBLE_DEVICES=3 hub serving start -c deploy/hubserving/ocr_system/config.json
發送預測請求
配置好服務端,可以使用如下命令發送預測請求,獲取預測結果:
python tools/test_hubserving.py server_url image_path
須要給腳本傳遞2個參數:
- 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:8868/predict/ocr_system ./doc/imgs/
返回結果格式說明
返回結果爲列表(list),列表中的每一項爲詞典(dict),詞典一共可能包含3種字段,信息以下:
字段名稱 | 數據類型 | 意義 |
---|---|---|
text | str | 文本內容 |
confidence | float | 文本識別置信度 |
text_region | list | 文本位置座標 |
不一樣模塊返回的字段不一樣,如,文本識別服務模塊返回結果不含text_region
字段,具體信息以下:
字段名/模塊名 | ocr_det | ocr_rec | ocr_system |
---|---|---|---|
text | ✔ | ✔ | |
confidence | ✔ | ✔ | |
text_region | ✔ | ✔ |
說明: 若是須要增長、刪除、修改返回字段,可在相應模塊的module.py
文件中進行修改,完整流程參考下一節自定義修改服務模塊。
自定義修改服務模塊
若是須要修改服務邏輯,你通常須要操做如下步驟(以修改ocr_system
爲例):
-
一、 中止服務
hub serving stop --port/-p XXXX
-
二、 到相應的
module.py
和params.py
等文件中根據實際需求修改代碼。
例如,若是須要替換部署服務所用模型,則須要到params.py
中修改模型路徑參數det_model_dir
和rec_model_dir
,若是須要關閉文本方向分類器,則將參數use_angle_cls
置爲False
,固然,同時可能還須要修改其餘相關參數,請根據實際狀況修改調試。 強烈建議修改後先直接運行module.py
調試,能正確運行預測後再啓動服務測試。 -
三、 卸載舊服務包
hub uninstall ocr_system
-
四、 安裝修改後的新服務包
hub install deploy/hubserving/ocr_system/
-
五、從新啓動服務
hub serving start -m ocr_system