OCR 識別案例
注意點:輸入圖像尺寸比例盡量和參與模型訓練的數據集比例相似,識別效果會更好。
1、pytesseract
Pytesseract是一個Python的光學字符識別(OCR)工具,它作為Tesseract OCR引擎的封裝,允許你在Python程序中直接使用Tesseract的功能。通過Pytesseract,你可以從圖像文件中提取文本數據。這使得它成為處理需要從圖片、截圖或其他圖像格式中讀取文字信息任務的理想選擇。
通常情況下,Pytesseract會與Pillow庫一起使用,后者用于圖像處理。這樣組合使用可以先對圖像進行必要的預處理(如轉換為灰度圖、二值化等),然后利用Pytesseract識別圖像中的文字內容。
要使用Pytesseract,你需要首先安裝Tesseract OCR引擎以及pytesseract包。可以通過pip命令pip install pytesseract
來安裝Pytesseract。同時,別忘了從Tesseract的GitHub頁面下載并安裝Tesseract OCR引擎,并確保其正確配置在系統的環境變量中,以便pytesseract能夠調用它。
sudo apt-get update
sudo apt install tesseract-ocr
from PIL import Image
import pytesseract# 如果沒有將Tesseract加入系統路徑,需要指定完整路徑
# linux 安裝 sudo apt install
# pytesseract.pytesseract.tesseract_cmd = r'path_to_tesseract.exe'image = Image.open('image_containing_digits.png')
text = pytesseract.image_to_string(image, config='--psm 6 digits')
dict = pytesseract.image_to_data(large_matrix, output_type=Output.DICT)print(text)
print(dict)
2、EasyOCR
EasyOCR 是一個易于使用且功能強大的光學字符識別(OCR)Python 庫,能夠從圖像中提取文本。它由微軟亞洲研究院(MSRA)開源,支持超過80種語言的識別,包括但不限于中文、英文、日文、韓文等。EasyOCR 的主要優點是它的易用性和高性能,即使在處理復雜背景或低質量圖像時也能提供良好的識別準確率。
使用 EasyOCR 進行文字識別非常簡單,只需要幾行代碼即可完成。首先,你需要通過 pip 安裝 EasyOCR 庫:
pip install easyocr
import easyocr
# ocr model path: ~/.EasyOCR/model
easyocr_tool = easyocr.Reader(['en']) # 'en'代表英文,'ch_sim'代表簡體中文
# # 手動指定模型
# reader = easyocr.Reader(['en'], model_storage_directory='/path/to/your/custom/model')
img_path = 'ocr_recognition.jpg'
img = cv2.imread(img_path)
result = easyocr_tool.readtext(img)import easyocr
reader = easyocr.Reader(['en']) # 初始化時指定語言
result = reader.readtext('image_containing_digits.png')
for (bbox, text, prob) in result:print(f"文本: {text}, 置信度: {prob}")
3、ModelScope
modelscope項目地址
pip install modelscope
pip install modelscope[cv] -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import cv2ocr_recognition = pipeline(Tasks.ocr_recognition, model='iic/cv_convnextTiny_ocr-recognition-general_damo')### 使用url
img_url = 'http://duguang-labelling.oss-cn-shanghai.aliyuncs.com/mass_img_tmp_20220922/ocr_recognition.jpg'
result = ocr_recognition(img_url)
print(result)### 使用圖像文件
### 請準備好名為'ocr_recognition.jpg'的圖像文件
# img_path = 'ocr_recognition.jpg'
# img = cv2.imread(img_path)
# result = ocr_recognition(img)
# print(result)
# # result 格式是字典形式,{'text':['001']}