paddleocr圖片文字識別

wancy發表於2024-04-17

1. paddleocr  

  PaddleOCR 是一個基於 PaddlePaddle 深度學習框架的開源 OCR(Optical Character Recognition,光學字元識別)工具。它提供了一系列的預訓練模型和工具,可以用於文字檢測、文字識別和文字方向檢測等任務。 提供了易於使用的 Python API,可以輕鬆地在你的專案中整合和使用。它還支援 CPU 和 GPU 加速,並且提供了一些預訓練模型供你選擇使用,或者你也可以根據自己的需求訓練自定義的模型。

  PaddleOCR 的功能包括:

  文字檢測:檢測影像中的文字區域,並給出其邊界框。
  文字識別:識別文字區域中的文字內容。
  文字方向檢測:檢測文字區域的方向(水平、垂直、逆時針旋轉、順時針旋轉等)。

2. paddleocr安裝

  paddleocr是基於 PaddlePaddle 框架開發的,因此在使用 PaddleOCR 之前是需要先安裝paddlepaddle的。

pip install paddleocr

3. 識別圖片文字

import cv2
#2使用ocr
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang='ch')#第一次執行會自動下載模型,預設下載到工作目錄的,ch是中文模型,也能檢測英文
# 讀取圖片
img_path = 'ocr.jpeg'#帶文字的圖片
img = cv2.imread(img_path)
# 執行文字檢測和識別
result = ocr.ocr(img)
# 繪製結果
for line in result:print(line)#如[[[[13.0, 15.0], [261.0, 8.0], [262.0, 51.0], [14.0, 58.0]], ('CMIITTD', 0.8830805420875549)]],文字區域的框的四個頂點座標,文字內容及置信度
    for word in line:
        print(word[-1][0])#CMIITTD
        print(word[-1][1])#0.8830805420875549

  如果已經下載好了模型,直接例項化PaddleOCR時,指定模型路徑

import cv2
from paddleocr import PaddleOCR
'''
程式碼中,如果沒有明確指定儲存路徑,模型檔案將被儲存在user/admin目錄的 .paddleocr 資料夾下。
'''
det_model_dir=r'C:\Users\admin\.paddleocr\whl\det\ch\ch_PP-OCRv4_det_infer'#文字位置檢測模型
rec_model_dir=r'C:\Users\admin\.paddleocr\whl\rec\ch\ch_PP-OCRv4_rec_infer'#文字識別模型
cls_model_dir=r'C:\Users\admin\.paddleocr\whl\cls\ch_ppocr_mobile_v2.0_cls_infer'#文字方向分類模型
#2使用ocr
from paddleocr import PaddleOCR
# 建立 PaddleOCR 例項
ocr = PaddleOCR(use_angle_cls=True, lang='ch', det_model_dir=det_model_dir, rec_model_dir=rec_model_dir, cls_model_dir=cls_model_dir)
# 讀取圖片
img_path = 'ocr.jpeg'#帶文字的圖片
img = cv2.imread(img_path)
# 執行文字檢測和識別
result = ocr.ocr(img)
# 繪製結果
for line in result:print(line)#如[[[[13.0, 15.0], [261.0, 8.0], [262.0, 51.0], [14.0, 58.0]], ('CMIITTD', 0.8830805420875549)]]
    for word in line:
        print(word[-1][0])#CMIITTD
        print(word[-1][1])#0.8830805420875549

  具體其他更多詳細資訊可以下載專案後,看裡面的文件介紹,地址如下:

  PaddleOCR的GitHub地址:https://github.com/PaddlePaddle/PaddleOCR
  PaddleOCR的Gitee地址:https://gitee.com/paddlepaddle/PaddleOCR

  關於更多的其他語言或版本的模型下載地址可以下載github專案後,找到paddleocr.py檔案,裡面列出了很多,比如部分如下:

MODEL_URLS = {
    'OCR': {
        'PP-OCRv4': {
            'det': {
                'ch': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar',
                },
                'en': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_det_infer.tar',
                },
                'ml': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/Multilingual_PP-OCRv3_det_infer.tar'
                }
            },
            'rec': {
                'ch': {
                    'url':
                    'https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar',

小結:簡單使用paddleocr及官方自帶的預訓練模型來識別印刷體的文字,識別結果較好。如果識別結果不滿意或是存在錯誤,自己可以在此基礎上取訓練自己的資料集,這裡不講解,另外paddleocr檢測的邊界框位置資訊是整個文字區域的邊界框,好像不能得到單個字元的邊界框資訊,如果有知道如何得到單個字元邊界資訊,可以留言。

  不足或錯誤之處,歡迎指正與評論,謝謝!

參考資料:

https://www.cnblogs.com/xiaoxia722/p/14627482.html

相關文章