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