最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python PaddleOCR模型訓練及使用超詳細教程

 更新時間:2024年06月04日 15:37:45   作者:ElaineTiger  
OCR英文全稱是Optical Character Recognition,中文叫做光學字符識別,是通過掃描等光學技術與計算機技術結合的方式直接從影像中提取各類數(shù)據(jù),省去人工錄入,節(jié)約成本,這篇文章主要介紹了Python PaddleOCR模型訓練及使用超詳細教程,需要的朋友可以參考下

Part1. OCR原理及開源項目對比

OCR英文全稱是Optical Character Recognition,中文叫做光學字符識別。是通過掃描等光學技術與計算機技術結合的方式直接從影像中提取各類數(shù)據(jù),省去人工錄入,節(jié)約成本。

原理:
為了識別一張圖片中的文字,通常包含兩個步驟:
1)文本檢測:檢測出圖片中文字所在的位置;
2)文字識別:識別包含文字的圖片局部,預測具體的文字。

以下為對Github上幾個開源ocr項目的對比,主要分為幾個方面:新手友好度、使用便捷性、OCR識別效果。

項目名稱優(yōu)點缺點
1.cnocr安裝使用方便,對環(huán)境的要求不高,檢測精準度和識別準確率較高語言方面有局限性,僅能識別中文簡體繁體、英文、數(shù)字等,如需識別更高專業(yè)度的公式或其他語言需要進行自己的訓練。
2.easyocr安裝調用方便,支持識別監(jiān)測多種語言,識別的精確度尚可對中文檢測的準確度一般,對排版規(guī)整的印刷體都有較好的表現(xiàn),但對于稍有畸變或包含其他字體的圖像其效果一般;識別的速度較慢,模型較大,EasyOCR的內存占用較高。
3.mmocr功能完善,包括文本檢測、文本識別、以及端到端的文本識別任務都有給出對應的方法以及詳細的說明文檔基于openmmlab的環(huán)境安裝配置較為繁瑣,不適合快速上手
4.paddleocr方便進行自己的訓練:官方給到的訓練集非常全,也有常用的合成、標注工具?;緷M足個性化訓練的場景應用,不需要再自己花時間找,一鍵下載就行,文檔中也有詳細的說明;識別準確率較高、速度快基于paddle框架,并不是目前所使用的主流框架,對未使用過的小白或是需要進行后續(xù)開發(fā)可能不是很友好,項目整體比較復雜,學習成本較高
5.tesseracttesseract具有良好的可擴展性,用戶可以使用自定義訓練數(shù)據(jù)來訓練和優(yōu)化OCR模型,Tesseract還提供了API和接口,方便用戶進行二次開發(fā)和集成不是專門針對中文場景且相關文檔主要是英文,經(jīng)過測試感覺其對于復雜字形和字體的識別準確性較低,與其他OCR相比,Tesseract的準確率可能相對較低

Part2. PaddleOCR介紹

官方網(wǎng)址:https://github.com/PaddlePaddle/PaddleOCR

PaddleOCR是基于PaddlePaddle深度學習框架的開源OCR工具,但它提供了推理模型/訓練模型/預訓練模型,用戶可以直接使用推理模型進行識別,也可以對訓練模型或預訓練模型進行再訓練。支持約80種語言的文本識別,并具有較高的準確性和速度。

PaddleOCR的官方文檔就更加的友好,有好幾種語言可供選擇,講述的也更為詳細,包括從什么是ocr開始到模型的各種細節(jié)都有提到。也經(jīng)常有更新和維護。

PaddleOCR其技術體系包括文字檢測、文字識別、文本方向檢測和圖像處理等模塊。以下是其優(yōu)點:

  • 高精度:PaddleOCR采用深度學習算法進行訓練,可以在不同場景下實現(xiàn)高精度的文字檢測和文字識別。
  • 多語種支持:PaddleOCR支持多種語言的文字識別,包括中文、英文、日語、韓語等。同時,它還支持多種不同文字類型的識別,如手寫字、印刷體、表格等。
  • 高效性:PaddleOCR的訓練和推理過程都采用了高效的并行計算方法,可大幅提高處理速度。同時,其輕量化設計也使得PaddleOCR能夠在移動設備上進行部署,適用于各種場景的應用。
  • 易用性:PaddleOCR提供了豐富的API接口和文檔說明,用戶可以快速進行模型集成和部署,實現(xiàn)自定義的OCR功能。同時,其開源代碼也為用戶提供了更好的靈活性和可擴展性。
  • 魯棒性:PaddleOCR采用了多種數(shù)據(jù)增強技術和模型融合策略,能夠有效地應對圖像噪聲、光照變化等干擾因素,并提高模型的魯棒性和穩(wěn)定性。

Part3. PaddleOCR模型訓練環(huán)境搭建

語言環(huán)境:python

PaddleOCR可通過CPU或GPU進行訓練,對應環(huán)境配置如下:

安裝模塊列表(win11):

① 安裝PaddlePaddle:pip install PaddlePaddle
先安裝PaddlePaddle再安裝PaddleOCR
需要注意的是:
如果機器安裝的是 CUDA,執(zhí)行:pip install paddlepaddle-gpu
如果機器是 CPU,執(zhí)行: pip install PaddlePaddle

② 安裝PaddleOCR whl包:pip install PaddleOCR

③ 安裝圖形標注工具:pip install PPOCRLabel 或在官網(wǎng)下載
https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7

如果用GPU訓練,還需安裝CUDA和CUDNN:

④ 安裝CUDA:訓練中用于加速GPU功能使用和計算
打開終端輸入nvidia-smi,看CUDA Version的版本,只要下載這個版本或者這個以下的就可以
NVIDIA官網(wǎng)(https://developer.nvidia.com/cuda-toolkit-archive)
下載CUDA Toolkit并安裝

⑤ 安裝CUDNN : 進入以下網(wǎng)址,需要進行注冊下載
NVIDIA官網(wǎng)(https://developer.nvidia.com/cudnn)

下載后將cudnn解壓為一個文件夾,將以下文件復制到cuda的根目錄下

在系統(tǒng)高級設置中添加如下環(huán)境變量:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin 
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include 
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib 
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp

Part4. 制作數(shù)據(jù)集

PPOCRLabel就是跟PaddleOCR配套的標注工具
前面在介紹環(huán)境搭建過程中已下載,直接可以使用

1. 先查看下載的ppocrlabel庫所在位置:pip show ppocrlabel

2. 在PPOCRLabel文件夾下有兩個.py文件是制作數(shù)據(jù)集所需的

3. PPOCRLabel根目錄下,終端運行: python PPOCRLabel.py --lang ch
python PPOCRLabel.py --lang ch # 啟動【普通模式】,用于打【檢測+識別】場景的標簽
python PPOCRLabel.py --lang ch --kie True # 啟動【KIE 模式】,用于打【檢測+識別+關鍵字提取】場景的標簽

4. 打開后點擊文件,點擊打開目錄選擇需要打標簽的數(shù)據(jù)集文件夾,點擊左下角自動標注

5. 然后從第一張開始檢查。漏打標的按下Q框出字體;打標文字錯誤的,點擊方框,在右邊框里修改,并對每一個方框給出關鍵詞列表(點擊編輯點擊更改box關鍵詞信息)。支持矩形標注和多點標注,最后刪除無用信息,點確認后,切換下一張快捷鍵為D,如下圖所示。

相關快捷鍵:

6. 導出標記結果及識別結果
全部打標完成之后,點擊文件選擇導出標記結果,再點擊文件選擇導出識別結果,完成后文件夾里多出四個文件crop_img、fileState、Label、rec_gt。

  • crop_img中的圖片用來訓練文字識別模型
  • fileState記錄圖片的打標完成與否
  • Label為訓練文字檢測模型的標簽
  • rec_gt為訓練文字識別模型的標簽

命名為train_data文件夾存放的是打標簽生成的文件和圖片
其結構如下圖所示

7. 將數(shù)據(jù)集劃分(訓練集/驗證集/測試集)
PPOCRLabel根目錄下,終端運行:python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 –-datasetRootPath xx --detRootPath xx --recRootPath xx

參數(shù)說明:

  • trainValTestRatio 是訓練集、驗證集、測試集的圖像數(shù)量劃分比例,根據(jù)實際情況設定,默認是6:2:2
  • datasetRootPath 是PPOCRLabel標注的完整數(shù)據(jù)集存放路徑。默認路徑是 …/train_data/
  • 就是步驟6的結果文件夾train_data文件夾。
  • detRootPath 是輸出訓練文字檢測的數(shù)據(jù)集存放路徑。默認路徑是 …/train_data/det
  • recRootPath 是輸出訓練文字識別的數(shù)據(jù)集存放路徑。默認路徑是 …/train_data/rec

輸入指令之后,在train_data文件夾下會出現(xiàn)兩個文件:
其中det是用來訓練文字檢測的數(shù)據(jù)集,
rec是用來訓練文字識別的數(shù)據(jù)集。

Part5. 訓練模型

1. 按需下載文本檢測、文本識別的配置文件和訓練模型
官方網(wǎng)址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/models_list.md

2. 在PaddleOCR-release-2.7目錄下新建pretrain_models文件夾,存放前面下載的配置文件和訓練模型

3. 訓練文字檢測模型

3.1 手動修改配置文件ch_PP-OCRv3_det_cml.yml
已列出需要修改的參數(shù),完整參數(shù)説明請參考
官方文檔https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/config.md

3.2 開始訓練
在PaddleOCR-release-2.7根目錄下,執(zhí)行命令開始訓練:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_det_cml.yml
模型訓練完之后會在文件夾下保存訓練好的模型,具體保存的文件夾路徑依據(jù)配置文件:
save_model_dir: ./output/ch_PP-OCR_v3_det/ # 設置輸出訓練模型路徑

訓練過程中產(chǎn)生的模型稱為檢查點(checkpoints)模型,包含完整參數(shù),用于恢復訓練及二次訓練。一 個檢查點模型包含三個文件:
.pdopt:訓練優(yōu)化器參數(shù)
.pdparams:訓練網(wǎng)絡參數(shù)
.states:訓練狀態(tài)

4. 訓練文字識別模型(跟訓練文字檢測模型步驟幾乎一樣)

4.1 手動修改配置文件ch_PP-OCRv3_rec_distillation.yml
下面列出需要修改的參數(shù),修改的地方和文字檢測修改的類似。

4.2 開始訓練
在PaddleOCR-release-2.7根目錄下,執(zhí)行命令開始訓練:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml
模型訓練完之后會在文件夾下保存訓練好的模型,具體保存的文件夾路徑依據(jù)配置文件:
save_model_dir: ./output/rec_ppocr_v3_distillation/

5. 斷點訓練
如果訓練程序中斷,希望加載訓練中斷的模型從而恢復訓練,可以通過指定Global.checkpoints指定要加載的模型路徑:
python tools/train.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml -o Global.checkpoints=./your/trained/model
注意:Global.checkpoints的優(yōu)先級高于Global.pretrained_model的優(yōu)先級,即同時指定兩個參數(shù)時,優(yōu)先加載Global.checkpoints指定的模型

6. 模型微調
官方講解較詳細:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/finetune.md

Part6. 轉換成推理模型并應用

1. 轉換成推理模型

推理模型是可以直接被調用進行識別和檢測。推理模型體積更小,在預測部署、加速推理上性能優(yōu)越、靈活方便,但不能用于恢復訓練及二次訓練。

執(zhí)行以下命令將訓練好的檢測、識別模型導出為推理模型:

python tools/export_model.py -c pretrain_models/ch_PP-OCRv3_det_cml.yml -o Global.pretrained_model=./output/ch_PP-OCR_v3_det/latest Global.save_inference_dir=./inference_model/det_model/

python tools/export_model.py -c pretrain_models/ch_PP-OCRv3_rec_distillation.yml -o Global.pretrained_model=./output/rec_ppocr_v3_distillation/latest Global.save_inference_dir=./inference_model/rec_model/

參數(shù)說明:

  • -c 指定導出模型使用的配置文件,需與訓練時使用的配置文件相同
  • -o 指定配置文件中的某個參數(shù),即在不修改配置文件的情況下修改參數(shù)
  • Global.pretrained_model 此處是指要導出模型的參數(shù)文件路徑
  • Global.save_inference_dir 指導出模型的保存路徑

結果:

2. 模型使用

import cv2
from paddleocr import PaddleOCR
paddleocr = PaddleOCR(lang='ch', show_log=False, enable_mkldnn=True,
                      det_model_dir=f'D:\\PaddleOCR-release-2.7\\inference_model\\det_model\\Teacher',
                      rec_model_dir=f'D:\\PaddleOCR-release-2.7\\inference_model\\rec_model\\Teacher') # 推理模型路徑
img = cv2.imread('ch2.jpg')  # 打開需要識別的圖片
result = paddleocr.ocr(img)
for i in range(len(result[0])):
    print(result[0][i][1][0])   # 輸出識別結果

識別結果:

以上就是PaddleOCR模型訓練及使用方法,如有錯處歡迎指正!

到此這篇關于PaddleOCR模型訓練及使用詳細教程的文章就介紹到這了,更多相關PaddleOCR模型訓練內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python爬蟲之獲取心知天氣API實時天氣數(shù)據(jù)并彈窗提醒

    Python爬蟲之獲取心知天氣API實時天氣數(shù)據(jù)并彈窗提醒

    今天我們來學習如何獲取心知天氣API實時天氣數(shù)據(jù),制作彈窗提醒,并設置成自啟動項目.文中有非常詳細的代碼示例及介紹,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • 一文搞懂霍夫曼樹原理及C++/Python/Java實戰(zhàn)實現(xiàn)

    一文搞懂霍夫曼樹原理及C++/Python/Java實戰(zhàn)實現(xiàn)

    霍夫曼樹是一種用于數(shù)據(jù)壓縮的樹形結構,通過構建具有最小帶權路徑長度的二叉樹,實現(xiàn)高效的數(shù)據(jù)編碼,這篇文章主要介紹了霍夫曼樹原理及C++/Python/Java實戰(zhàn)實現(xiàn)的相關資料,需要的朋友可以參考下
    2025-11-11
  • python實現(xiàn)固定尺寸圖像拼接

    python實現(xiàn)固定尺寸圖像拼接

    這篇文章主要為大家詳細介紹了python實現(xiàn)固定尺寸圖像拼接,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 基于Python編寫一個PDF清晰度增強工具全解析(附完整源碼)

    基于Python編寫一個PDF清晰度增強工具全解析(附完整源碼)

    在日常辦公和學習中,我們經(jīng)常會遇到掃描版PDF文件模糊不清的問題,本文將介紹一款基于Python開發(fā)的PDF智能增強工具,它能夠通過多維度圖像處理算法自動提升PDF文件的清晰度和可讀性,有需要的小伙伴可以了解下
    2026-03-03
  • 使用python和yolo方法實現(xiàn)yolo標簽自動標注

    使用python和yolo方法實現(xiàn)yolo標簽自動標注

    本文介紹了基于YOLOv10的自動標注方法,從初階的固定標注到高階的基于YOLO檢測結果的自動標注,兩者相比,高階方法顯著提高了標注的準確性,并減少了人工操作的時間,</P><P>
    2024-11-11
  • pygame實現(xiàn)貪吃蛇游戲(下)

    pygame實現(xiàn)貪吃蛇游戲(下)

    這篇文章主要為大家介紹了pygame實現(xiàn)貪吃蛇游戲的下篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 關于Django Models CharField 參數(shù)說明

    關于Django Models CharField 參數(shù)說明

    這篇文章主要介紹了關于Django Models CharField 參數(shù)說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 零基礎也能看懂的python內置csv模塊教程

    零基礎也能看懂的python內置csv模塊教程

    這篇博客就為你介紹一個知識點,python 內置模塊 csv 。讓大家一文就看懂csv csv(Comma-Separated Values)文件是什么?以及python 中的 csv 文件清晰解法讀取文件寫入文件 csv 文件其它說明
    2021-11-11
  • python 性能提升的幾種方法

    python 性能提升的幾種方法

    本篇文章主要介紹python 性能提升的幾種方法,并附有代碼參考示例,有需要的小伙伴可以參考下
    2016-07-07
  • Python數(shù)據(jù)結構與算法中的隊列詳解(2)

    Python數(shù)據(jù)結構與算法中的隊列詳解(2)

    這篇文章主要為大家詳細介紹了Python中的隊列,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論

泸州市| 长顺县| 崇州市| 天津市| 湘潭市| 沙湾县| 南昌县| 阳新县| 湘乡市| 宁陵县| 黄山市| 四子王旗| 宁都县| 萝北县| 调兵山市| 满城县| 儋州市| 瓦房店市| 达日县| 佛教| 谢通门县| 同德县| 赞皇县| 绩溪县| 收藏| 武宁县| 乡城县| 石家庄市| 黄冈市| 德昌县| 长治市| 托克托县| 富平县| 任丘市| 逊克县| 丁青县| 莱阳市| 卢氏县| 密云县| 永仁县| 镇远县|