介紹
- 基于飛槳的OCR工具庫,包含總模型僅8.6M的超輕量級中文OCR,單模型支持中英文數字組合識別、豎排文本識別、長文本識別。同時支持多種文本檢測、文本識別的訓練算法。
相關鏈接
- PaddleOCR項目地址
- 飛槳開源深度學習平臺
- 效果展示頁面
- 中文OCR在線體驗地址
- 中文OCR模型快速使用
特性
- 超輕量級中文OCR模型,總模型僅8.6M
- 單模型支持中英文數字組合識別、豎排文本識別、長文本識別
- 檢測模型DB(4.1M)+識別模型CRNN(4.5M)
- 實用通用中文OCR模型
- 多種預測推理部署方案,包括服務部署和端側部署
- 多種文本檢測訓練算法,EAST、DB
- 多種文本識別訓練算法,Rosetta、CRNN、STAR-Net、RARE
- 可運行于Linux、Windows、MacOS等多種系統
算法介紹
文本檢測算法
- EAST
- DB
文本識別算法
- CRNN
- Rosetta
- STAR-Net
- RARE
文檔教程
快速安裝
? ?準備工作
- 快速安裝? 提煉最核心的代碼,此處僅僅使用最簡單的CPU的方式進行安裝,使用GPU的方式遇到了一些問題,需要解決
- 切換到工作目錄下面 cd /home/Projects? 只要是自己可以記住的文件夾就可以
- 如果先前沒有安裝過docker的需要先安裝docker 不同系統的命令不一樣,此處以centos為例子,yum install docker
- docker相關簡單命令 參考?我的博客?,需要執行?docker -v 驗證docker是否安裝成功,如果安裝成功,執行service docker start的命令,啟動docker,然后才可以執行下面的命令
(建議)準備docker環境
- 第一次使用這個鏡像,會自動下載該鏡像,請耐心等待
- 在CPU環境下使用docker,使用docker而不是nvidia-docker創建docker
sudo docker run --name ppocr -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda9.0-cudnn7-dev /bin/bash
- 小提示
# ctrl+P+Q可退出docker,重新進入docker使用如下命令
sudo docker container exec -it ppocr /bin/bash
- 然后就會進行鏡像的拉取操作,通過docker images檢查是否加載了下載的鏡像
docker images
- 執行docker images后如果有下面的輸出,則證明拉取鏡像成功
- hub.baidubce.com/paddlepaddle/paddle latest-gpu-cuda9.0-cudnn7-dev f56310dcc829
更改python3默認版本
- docker中的python默認使用python3.5,PaddleOCR需要在Python3.7下執行(該版本下,對于第三方依賴庫的兼容性更好一些)。進入docker后,可以編輯
/etc/profile
文件,但是你會發現docker鏡像里面沒有vim等編輯工具 - 先執行apt-get update命令,同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,這樣才能獲取到最新的軟件包,這個時候系統由先前的centos使用yum換成了apt-get內核
- 等更新完畢以后再敲命令:apt-get install vim,安裝vim
- 這次再編輯
/etc/profile,
在文件末尾添加
alias python3=python3.7
alias pip3=pip3.7
- 保存之后,使用
source /etc/profile
命令使設置的默認Python生效
安裝PaddlePaddle Fluid v1.7
- 更新pip,使用命令pip3 install --upgrade pip
- 如果您的機器是CPU,請運行以下命令安裝
python3 -m pip install paddlepaddle==1.7.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
克隆PaddleOCR repo代碼
git clone https://github.com/PaddlePaddle/PaddleOCR
安裝第三方庫
cd PaddleOCR
pip3 install -r requirments.txt
中文OCR模型快速使用
?inference模型下載
- 參考文檔
- ?模板樣例
mkdir inference && cd inference
# 下載檢測模型并解壓
wget {url/of/detection/inference_model} && tar xf {name/of/detection/inference_model/package}
# 下載識別模型并解壓
wget {url/of/recognition/inference_model} && tar xf {name/of/recognition/inference_model/package}
cd ..
- 以超輕量級模型為例
mkdir inference && cd inference
# 下載超輕量級中文OCR模型的檢測模型并解壓
wget https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar && tar xf ch_det_mv3_db_infer.tar
# 下載超輕量級中文OCR模型的識別模型并解壓
wget https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar && tar xf ch_rec_mv3_crnn_infer.tar
cd ..
- 解壓完畢后應有如下文件結構:
驗證結果
- 需要在home/PaddleOCR文件夾下面執行這些命令
單張圖片
- 以下代碼實現了文本檢測、識別串聯推理,在執行預測時,需要通過參數image_dir指定單張圖像或者圖像集合的路徑、參數det_model_dir指定檢測inference模型的路徑和參數rec_model_dir指定識別inference模型的路徑。可視化識別結果默認保存到 ./inference_results 文件夾里面
# 預測image_dir指定的單張圖像
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_det_mv3_db/" --rec_model_dir="./inference/ch_rec_mv3_crnn/"# 預測image_dir指定的圖像集合
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/" --det_model_dir="./inference/ch_det_mv3_db/" --rec_model_dir="./inference/ch_rec_mv3_crnn/"# 如果想使用CPU進行預測,需設置use_gpu參數為False
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_det_mv3_db/" --rec_model_dir="./inference/ch_rec_mv3_crnn/" --use_gpu=False
- 更為詳細的內容請參見官網
Q&A
- 參考網址
- 關于推理速度
圖片中的文字較多時,預測時間會增加,可以使用--rec_batch_num設置更小預測batch num,默認值為30,可以改為10或其他數值。 -
超輕量模型和通用OCR模型的區別
目前PaddleOCR開源了2個中文模型,分別是8.6M超輕量中文模型和通用中文OCR模型。兩者對比信息如下:- 相同點:兩者使用相同的算法和訓練數據;
- 不同點:不同之處在于骨干網絡和通道參數,超輕量模型使用MobileNetV3作為骨干網絡,通用模型使用Resnet50_vd作為檢測模型backbone,Resnet34_vd作為識別模型backbone,具體參數差異可對比兩種模型訓練的配置文件.