1、前言
Hello 大家好呀轰绵,我是小張~
本期將給大家介紹一個 Github 項目粉寞,用于OCR文本識別的;在之前的教程中左腔,關(guān)于用 Python 實現(xiàn)OCR 識別唧垦,寫過兩篇文章:
一篇是關(guān)于 python 與 Tesseract ,詳情可參考:介紹一個Python 包 液样,幾行代碼可實現(xiàn) OCR 文本識別振亮; tesseract 是基于傳統(tǒng)機(jī)器學(xué)習(xí)方法實現(xiàn)的, 對于英文字符識別還是挺棒的鞭莽,但中文字符的識別效果就差強(qiáng)人意了~~
還有一篇是介紹了一個用于文本識別的 Github 項目Easy-OCR坊秸,相關(guān)用法詳情可參考:關(guān)于文本OCR檢測、分享一個基于深度學(xué)習(xí)技術(shù)的Python庫
Easy-OCR 是基于深度學(xué)習(xí)技術(shù)開發(fā)的澎怒,識別效果要優(yōu)于 Tesserart褒搔,支持識別70+個國家語言,除了文本識別之外還能對文本塊區(qū)域完成檢測功能,并用線框?qū)⑾嚓P(guān)區(qū)域標(biāo)注在原圖上
但測試后發(fā)現(xiàn)星瘾,該庫對于某些路標(biāo)識別效果并不是很精確~
2 PaddleOCR 介紹
這篇文章呢走孽,將介紹一個新的 Github 項目,同樣用于 OCR 識別琳状、該項目名叫 PaddleOCR融求,是 Paddle 的一個分支;PaddleOCR 基于深度學(xué)習(xí)技術(shù)實現(xiàn)的算撮, 所以使用時需要訓(xùn)練好的權(quán)重文件生宛,但這個不需要我們擔(dān)心,因為官方提供的有~
本小節(jié)是對 PaddleOCR 項目的簡單介紹肮柜,如果只對使用步驟感興趣的同學(xué)可以跳過本小節(jié)看第三節(jié)部分~~~
經(jīng)測試 PaddleOCR 識別效果非常優(yōu)秀陷舅,下面兩張圖片是從官網(wǎng)介紹中截取的幾張圖片
圖一
圖二
為了測試該項目的識別性能、隨后我在網(wǎng)上找了一張關(guān)于優(yōu)惠卷的圖片审洞,圖片中文字情況比較復(fù)雜莱睁,垂直、斜體等芒澜;還有中英文相結(jié)合仰剿,甚至還有小數(shù)點
最終測試效果如下,無論左邊圖片文本復(fù)雜度有多高痴晦,圖中文字基本都能識別到南吮,非常Nice ??
關(guān)于 PaddleOCR 模型 ,有以下幾個特點
- PaddleOCR 從 2020.5.14 發(fā)布,項目迭代到現(xiàn)在誊酌,功能一直處于在不斷完善的過程部凑;
在 PaddleOCR 識別中,會依次完成三種任務(wù):檢測碧浊、方向分類及文本識別涂邀;
-
關(guān)于預(yù)訓(xùn)練權(quán)重,PaddleOCR 官網(wǎng)根據(jù)提供權(quán)重文件大小分為兩類:
一類為輕量級箱锐,(檢測+分類+識別)三類權(quán)重加起來大小一共才 9.4 M比勉,適用于手機(jī)端和服務(wù)器部署;
另一類(檢測+分類+識別)三類權(quán)重內(nèi)存加起來一共 143.4 MB 驹止,適用于服務(wù)器部署浩聋;
無論模型是否輕量級,識別效果都能與商業(yè)效果相比幢哨,在本期教程中將選用輕量級權(quán)重用于測試赡勘;
支持多語言識別嫂便,目前能夠支持 80 多種語言捞镰;
除了能對中文、英語、數(shù)字識別之外岸售,還能應(yīng)對字體傾斜践樱、文本中含有小數(shù)點字符等復(fù)雜情況
-
提供有豐富的 OCR 領(lǐng)域相關(guān)工具供我們使用,方便我們制作自己的數(shù)據(jù)集凸丸、用于訓(xùn)練
半自動數(shù)據(jù)標(biāo)注工具拷邢;
數(shù)據(jù)合成工具;
支持 pip 安裝屎慢,簡單上手瞭稼;
3 PaddleOCR 使用
簡單介紹完之后,下面將手把手教大家怎么去使用 PaddleOCR腻惠,
3.1 環(huán)境介紹
介紹一下本次所用的測試環(huán)境
os:Win10环肘;
Python:3.7.9;
3.2 安裝 PaddlePaddle2.0
PaddleOCR 需在 PaddlePaddle2.0 下才可以正常運行集灌,開始之前請確保 PaddlePaddle2.0
已經(jīng)安裝悔雹,
pip3 install --upgrade pip
python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple
3.2 克隆 PaddleOCR 倉庫
用 git clone
命令或者 Download
把項目倉庫直接下載到本地
git clone https://github.com/PaddlePaddle/PaddleOCR
這里我用的是 git 命令
3.3 安裝PaddleOCR 第三方依賴包
命令行進(jìn)入 PaddleOCR
文件夾下
cd PaddleOCR
安裝第三方依賴項
pip3 install -r requirements.txt
這一步驟如果報錯的話,建議把改項目放置在一個虛擬環(huán)境中再進(jìn)行安裝欣喧,如果用虛擬環(huán)境的話腌零,記得還需要安裝一下 PaddlePaddle 包
python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple
3.4 下載權(quán)重文件
權(quán)重鏈接地址分別貼在下方,需依次下載到本地唆阿;檢測權(quán)重
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar
方向分類權(quán)重
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
識別權(quán)重
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar
下載到本地之后分別進(jìn)行解壓益涧,創(chuàng)建一個 inference
文件夾,把前面解壓后的三個文件夾放入 inference 中驯鳖,再把 inference
文件夾放入 PaddleOCR 中饰躲,最終樹形目錄結(jié)構(gòu)效果如下:
3.5 PaddleOCR 使用
以上環(huán)境配置好之后,就可以使用 PaddleOCR 進(jìn)行識別了臼隔,在PaddleOCR 項目環(huán)境下打開終端嘹裂,根據(jù)自己情況,輸入下面三種類型中的一種即可完成文本識別
1摔握,使用 gpu寄狼,識別單張圖片
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/" --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True
2,使用 gpu 氨淌,識別多張圖片
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/" --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True
3泊愧,不使用gpu,識別單張圖片
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/" --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True --use_gpu=False
里面有兩個參數(shù)需要自己配置一下盛正,參數(shù)說明:
image_dir
-> 為需要識別圖片路徑或文件夾删咱;det_model_dir
-> 存放識別后圖片路徑或文件夾;
PaddleOCR 識別一張圖片很快豪筝,只用 CPU 的話痰滋,也只需要兩三秒
4. 數(shù)據(jù)摘能、源碼獲取
為了方便,我已經(jīng)把測試數(shù)據(jù)敲街、項目代碼都打包在一起了团搞,下載后完成以下兩個步驟即可正常使用(使用方法參考章節(jié) 3.5 部分)
創(chuàng)建虛擬環(huán)境;
pip 工具安裝依賴項多艇;
python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple
依賴項
pip3 install -r requirements.txt
獲取方式:關(guān)注微信公號:小張Python (本號)逻恐,后臺回復(fù)關(guān)鍵字:210612 即可
5 小總結(jié)
Paddle-OCR 屬于Paddle 框架其中的一個應(yīng)用,Paddle 除了 OCR 之外還有許多其它好玩的模型峻黍,關(guān)鍵開發(fā)者提供有訓(xùn)練好的預(yù)權(quán)重文件复隆、降低了使用門檻
后期呢,我也打算將從中挑一些好玩的項目姆涩,通過博文的方式手把手教大家跑起來
好了昏名,關(guān)于 PaddleOCR 的使用就介紹到這里了,如果內(nèi)容對你有幫助的話不妨點個贊來鼓勵一下我~
最后感謝大家的閱讀阵面,我們下期見