PaddleOCR,一款文本識別效果不輸於商用的Python庫!


1、前言

Hello 大家好呀,我是小張~

本期將給大家介紹一個 Github 項目,用於OCR文本識別的;在之前的教程中,關於用 Python 實現OCR 識別,寫過兩篇文章:

一篇是關於 python 與 Tesseract ,詳情可參考:介紹一個Python 包 ,幾行代碼可實現 OCR 文本識別; tesseract 是基於傳統機器學習方法實現的, 對於英文字符識別還是挺棒的,但中文字符的識別效果就差強人意了~~

image-20210610235454924

還有一篇是介紹了一個用於文本識別的 Github 項目Easy-OCR,相關用法詳情可參考:關於文本OCR檢測、分享一個基於深度學習技術的Python庫

Easy-OCR 是基於深度學習技術開發的,識別效果要優於 Tesserart,支持識別70+個國家語言,除了文本識別之外還能對文本塊區域完成檢測功能,並用線框將相關區域標注在原圖上

image-20210611125533811

但測試后發現,該庫對於某些路標識別效果並不是很精確~

2 PaddleOCR 介紹

這篇文章呢,將介紹一個新的 Github 項目,同樣用於 OCR 識別、該項目名叫 PaddleOCR,是 Paddle 的一個分支;PaddleOCR 基於深度學習技術實現的, 所以使用時需要訓練好的權重文件,但這個不需要我們擔心,因為官方提供的有~

本小節是對 PaddleOCR 項目的簡單介紹,如果只對使用步驟感興趣的同學可以跳過本小節看第三節部分~~~

經測試 PaddleOCR 識別效果非常優秀,下面兩張圖片是從官網介紹中截取的幾張圖片

圖一

image-20210611133307828

圖二

image-20210611155047042

為了測試該項目的識別性能、隨后我在網上找了一張關於優惠卷的圖片,圖片中文字情況比較復雜,垂直、斜體等;還有中英文相結合,甚至還有小數點

image-20210611142827342

最終測試效果如下,無論左邊圖片文本復雜度有多高,圖中文字基本都能識別到,非常Nice 👍

image-20210611140629321

關於 PaddleOCR 模型 ,有以下幾個特點

  • PaddleOCR 從 2020.5.14 發布,項目迭代到現在,功能一直處於在不斷完善的過程;

image-20210611145124039

  • 在 PaddleOCR 識別中,會依次完成三種任務:檢測、方向分類及文本識別;

  • 關於預訓練權重,PaddleOCR 官網根據提供權重文件大小分為兩類:

    • 一類為輕量級,(檢測+分類+識別)三類權重加起來大小一共才 9.4 M,適用於手機端和服務器部署;
    • 另一類(檢測+分類+識別)三類權重內存加起來一共 143.4 MB ,適用於服務器部署;
    • 無論模型是否輕量級,識別效果都能與商業效果相比,在本期教程中將選用輕量級權重用於測試;
  • 支持多語言識別,目前能夠支持 80 多種語言;

  • 除了能對中文、英語、數字識別之外,還能應對字體傾斜、文本中含有小數點字符等復雜情況

  • 提供有豐富的 OCR 領域相關工具供我們使用,方便我們制作自己的數據集、用於訓練

    • 半自動數據標注工具;
    • 數據合成工具;
  • 支持 pip 安裝,簡單上手;

3 PaddleOCR 使用

簡單介紹完之后,下面將手把手教大家怎么去使用 PaddleOCR,

3.1 環境介紹

介紹一下本次所用的測試環境

  • os:Win10;
  • Python:3.7.9;

3.2 安裝 PaddlePaddle2.0

PaddleOCR 需在 PaddlePaddle2.0 下才可以正常運行,開始之前請確保 PaddlePaddle2.0 已經安裝,

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 命令

image-20210611160450954

3.3 安裝PaddleOCR 第三方依賴包

命令行進入 PaddleOCR 文件夾下

cd PaddleOCR

安裝第三方依賴項

pip3 install -r requirements.txt

這一步驟如果報錯的話,建議把改項目放置在一個虛擬環境中再進行安裝,如果用虛擬環境的話,記得還需要安裝一下 PaddlePaddle 包

python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple

3.4 下載權重文件

權重鏈接地址分別貼在下方,需依次下載到本地;檢測權重

https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar

方向分類權重

https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar

識別權重

https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar

下載到本地之后分別進行解壓,創建一個 inference 文件夾,把前面解壓后的三個文件夾放入 inference 中,再把 inference 文件夾放入 PaddleOCR 中,最終樹形目錄結構效果如下:

image-20210611164010448

**3.5 PaddleOCR 使用 **

以上環境配置好之后,就可以使用 PaddleOCR 進行識別了,在PaddleOCR 項目環境下打開終端,根據自己情況,輸入下面三種類型中的一種即可完成文本識別

**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

里面有兩個參數需要自己配置一下,參數說明:

  • image_dir -> 為需要識別圖片路徑或文件夾;
  • det_model_dir -> 存放識別后圖片路徑或文件夾;

PaddleOCR 識別一張圖片很快,只用 CPU 的話,也只需要兩三秒

image-20210611165420623

4. 數據、源碼獲取

為了方便,我已經把測試數據、項目代碼都打包在一起了,下載后完成以下兩個步驟即可正常使用(使用方法參考章節 3.5 部分)

  • 創建虛擬環境;
  • pip 工具安裝依賴項;
python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple


# 依賴項
pip3 install -r requirements.txt

獲取方式:關注微信公號:程序員大飛 (本號),后台回復關鍵字:210612 即可

5 小總結

Paddle-OCR 屬於Paddle 框架其中的一個應用,Paddle 除了 OCR 之外還有許多其它好玩的模型,關鍵開發者提供有訓練好的預權重文件、降低了使用門檻

后期呢,我也打算將從中挑一些好玩的項目,通過博文的方式手把手教大家跑起來

好了,關於 PaddleOCR 的使用就介紹到這里了,如果內容對你有幫助的話不妨點個贊來鼓勵一下我~

最后感謝大家的閱讀,我們下期見


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM