四個(gè)Python常用OCR庫的用法詳解
在接口自動(dòng)化工作中,經(jīng)常需要處理文字識(shí)別的任務(wù),而OCR(Optical Character Recognition,光學(xué)字符識(shí)別)庫能夠幫助我們將圖像中的文字提取出來。Python中有幾個(gè)常用的OCR庫,包括pyocr、pytesseract和python- tesseract、EasyOCR。
本文將對(duì)它們進(jìn)行比較,并提供一些示例代碼來演示它們?cè)趯?shí)際接口自動(dòng)化工作中的應(yīng)用。
1、pyocr
PyOCR是一個(gè)Python庫,提供了對(duì)多個(gè)OCR引擎的封裝。它可以方便地在Python中使用不同的OCR引擎進(jìn)行文本識(shí)別。
PyOCR支持以下OCR引擎:
- Tesseract:Tesseract是一個(gè)開源的OCR引擎,由Google開發(fā)。它支持多種語言,并且在OCR準(zhǔn)確性方面表現(xiàn)良好。
- Cuneiform:Cuneiform是一個(gè)開源的OCR引擎,支持多種語言和字體。
- GOCR:GOCR是一個(gè)開源的OCR引擎,主要用于識(shí)別簡(jiǎn)單的文本和數(shù)字。
適用場(chǎng)景:
- 文字識(shí)別和提取:用于將印刷體文字從圖像中提取出來,以便進(jìn)行文本處理、搜索和分析。
- 文檔掃描和轉(zhuǎn)換:用于將掃描的紙質(zhì)文檔轉(zhuǎn)換為可編輯的電子文檔。
- 自動(dòng)化數(shù)據(jù)錄入:用于將圖像中的數(shù)據(jù)轉(zhuǎn)換為計(jì)算機(jī)可讀的格式,以便進(jìn)行數(shù)據(jù)處理和分析。
- 圖像標(biāo)注和分類:用于從圖像中提取文本信息,以便對(duì)圖像進(jìn)行標(biāo)注和分類。
使用PyOCR進(jìn)行文本識(shí)別的步驟如下:
- 安裝PyOCR庫和相應(yīng)的OCR引擎:
pip install pyocr
- 導(dǎo)入PyOCR庫和所需的OCR引擎。
- 初始化OCR引擎。
- 打開圖像文件或者將圖像轉(zhuǎn)換為PIL圖像對(duì)象。
- 使用OCR引擎的image_to_string方法進(jìn)行文本識(shí)別。
示例:以下是一個(gè)使用Tesseract庫進(jìn)行文字識(shí)別的示例:
import pyocr import pyocr.builders from PIL import Image # 初始化OCR引擎 tools = pyocr.get_available_tools() if len(tools) == 0: print("No OCR tool found") exit(1) ocr_tool = tools[0] # 打開圖像文件 image = Image.open('image.jpg') # 使用OCR引擎進(jìn)行文本識(shí)別 text = ocr_tool.image_to_string( image, lang='eng', builder=pyocr.builders.TextBuilder() ) # 打印識(shí)別結(jié)果 print(text)
在這個(gè)示例中,首先使用pyocr.get_available_tools()獲取可用的OCR引擎列表,然后選擇第一個(gè)可用的引擎進(jìn)行初始化。接著使用PIL庫打開圖像文件,然后使用OCR引擎的image_to_string方法進(jìn)行文本識(shí)別,同時(shí)指定識(shí)別語言和文本構(gòu)建器。最后打印識(shí)別結(jié)果。
2、pytesseract
pytesseract是一個(gè)Python庫,它提供了對(duì)Tesseract OCR引擎的封裝。Tesseract是一個(gè)開源的OCR引擎,由Google開發(fā)。pytesseract可以方便地在Python中使用Tesseract進(jìn)行文本識(shí)別。
pytesseract具有以下特點(diǎn):
- 支持多種語言:pytesseract可以識(shí)別多種語言的文字,包括英語、中文、日語等。
- 支持多種圖像格式:pytesseract可以處理多種常見的圖像格式,如JPEG、PNG、TIFF等。
- 簡(jiǎn)單易用:pytesseract提供了一個(gè)簡(jiǎn)單的API,只需幾行代碼即可完成文本識(shí)別。
使用pytesseract進(jìn)行文本識(shí)別的步驟如下:
- 安裝pytesseract庫和Tesseract OCR引擎。
- 導(dǎo)入pytesseract庫。
- 打開圖像文件或者將圖像轉(zhuǎn)換為PIL圖像對(duì)象。
- 使用pytesseract庫的image_to_string方法進(jìn)行文本識(shí)別。
以下是一個(gè)使用pytesseract進(jìn)行文本識(shí)別的示例:
import pytesseract from PIL import Image # 打開圖像文件 image = Image.open('image.jpg') # 使用pytesseract進(jìn)行文本識(shí)別 text = pytesseract.image_to_string(image) # 打印識(shí)別結(jié)果 print(text)
在這個(gè)示例中,首先使用PIL庫打開圖像文件,然后使用pytesseract庫的image_to_string方法將圖像中的文字識(shí)別為文本,最后打印識(shí)別結(jié)果。
需要注意的是,使用pytesseract進(jìn)行文本識(shí)別前,需要確保已經(jīng)正確安裝了Tesseract OCR引擎,并將其配置為系統(tǒng)環(huán)境變量之一。這樣pytesseract才能找到并使用Tesseract引擎進(jìn)行識(shí)別。
3、python-tesseract
python-tesseract是一個(gè)Python庫,它提供了對(duì)Tesseract OCR引擎的封裝。Tesseract是一個(gè)開源的OCR引擎,由Google開發(fā)。python-tesseract庫可以方便地在Python中使用Tesseract進(jìn)行文本識(shí)別。
python-tesseract具有以下特點(diǎn):
- 支持多種語言:python-tesseract可以識(shí)別多種語言的文字,包括英語、中文、日語等。
- 支持多種圖像格式:python-tesseract可以處理多種常見的圖像格式,如JPEG、PNG、TIFF等。
- 簡(jiǎn)單易用:python-tesseract提供了一個(gè)簡(jiǎn)單的API,只需幾行代碼即可完成文本識(shí)別。
使用python-tesseract進(jìn)行文本識(shí)別的步驟如下:
- 安裝python-tesseract庫和Tesseract OCR引擎。
- 導(dǎo)入python-tesseract庫。
- 打開圖像文件或者將圖像轉(zhuǎn)換為PIL圖像對(duì)象。
- 使用python-tesseract庫的image_to_string方法進(jìn)行文本識(shí)別。
以下是一個(gè)使用python-tesseract進(jìn)行文本識(shí)別的示例:
import pytesseract from PIL import Image # 打開圖像文件 image = Image.open('image.jpg') # 使用pytesseract進(jìn)行文本識(shí)別 text = pytesseract.image_to_string(image) # 打印識(shí)別結(jié)果 print(text)
在這個(gè)示例中,首先使用PIL庫打開圖像文件,然后使用python-tesseract庫的image_to_string方法將圖像中的文字識(shí)別為文本,最后打印識(shí)別結(jié)果。
需要注意的是,使用python-tesseract進(jìn)行文本識(shí)別前,需要確保已經(jīng)正確安裝了Tesseract OCR引擎,并將其配置為系統(tǒng)環(huán)境變量之一。這樣python-tesseract才能找到并使用Tesseract引擎進(jìn)行識(shí)別。
以下是一個(gè)更為復(fù)雜的例子,展示了如何使用python-tesseract進(jìn)行文本識(shí)別,并對(duì)識(shí)別結(jié)果進(jìn)行一些后處理:
import pytesseract from PIL import Image import re # 打開圖像文件 image = Image.open('image.jpg') # 使用python-tesseract進(jìn)行文本識(shí)別 text = pytesseract.image_to_string(image) # 去除識(shí)別結(jié)果中的非法字符 cleaned_text = re.sub(r'[^a-zA-Z0-9\s]', '', text) # 將識(shí)別結(jié)果按行分割成列表 lines = cleaned_text.split('\n') # 去除空行 lines = [line.strip() for line in lines if line.strip()] # 打印識(shí)別結(jié)果 for line in lines: print(line)
在這個(gè)例子中,我們首先使用PIL庫打開圖像文件,然后使用python-tesseract庫的image_to_string方法將圖像中的文字識(shí)別為文本。接下來,我們使用正則表達(dá)式去除識(shí)別結(jié)果中的非法字符,只保留字母、數(shù)字和空格。然后,我們將識(shí)別結(jié)果按行分割成列表,并去除空行。最后,我們逐行打印識(shí)別結(jié)果。
這個(gè)例子展示了如何對(duì)識(shí)別結(jié)果進(jìn)行一些后處理操作,以獲得更干凈和可讀性更高的文本。根據(jù)實(shí)際需求,你可以根據(jù)需要進(jìn)行更多的后處理操作,如去除特定的字符、提取關(guān)鍵信息等。
4、EasyOCR
EasyOCR是一個(gè)功能強(qiáng)大且開源、易于使用的OCR庫,適用于各種文字識(shí)別任務(wù),包括文檔掃描、圖像處理、自然語言處理等。它可以幫助開發(fā)者快速實(shí)現(xiàn)文字識(shí)別功能,并應(yīng)用于各種應(yīng)用領(lǐng)域。與其他OCR庫相比,EasyOCR具有以下特點(diǎn):
- 多語言支持:EasyOCR支持超過80種語言的文字識(shí)別,包括中文、英文、日文、韓文等。它可以處理多種語言混合的文本,適用于全球范圍的應(yīng)用。
- 高精度識(shí)別:EasyOCR使用了深度學(xué)習(xí)模型和先進(jìn)的OCR技術(shù),能夠提供高精度的文字識(shí)別結(jié)果。它在多個(gè)公開數(shù)據(jù)集上進(jìn)行了訓(xùn)練和測(cè)試,具有較高的準(zhǔn)確率和魯棒性。
- 簡(jiǎn)單易用:EasyOCR提供了一個(gè)簡(jiǎn)單的API,使得文字識(shí)別變得容易。只需幾行代碼,即可將圖像中的文字轉(zhuǎn)換為可用的文本。
- 跨平臺(tái)支持:EasyOCR可以在多個(gè)平臺(tái)上運(yùn)行,包括Windows、Linux和Mac OS。它支持Python和命令行界面,可以與其他編程語言和工具集成。
使用EasyOCR進(jìn)行文字識(shí)別的步驟如下:
- 安裝EasyOCR庫:可以使用pip命令安裝EasyOCR庫,例如pip install easyocr。
- 導(dǎo)入EasyOCR庫:在Python代碼中導(dǎo)入EasyOCR庫,例如import easyocr。
- 創(chuàng)建OCR對(duì)象:創(chuàng)建一個(gè)OCR對(duì)象,例如reader = easyocr.Reader(['en', 'zh']),指定要識(shí)別的語言。
- 識(shí)別文字:使用OCR對(duì)象的readtext方法對(duì)圖像中的文字進(jìn)行識(shí)別,例如result = reader.readtext('image.jpg')。
- 處理識(shí)別結(jié)果:根據(jù)需要處理識(shí)別結(jié)果,例如提取文字內(nèi)容、位置和置信度等。
以下是一個(gè)使用EasyOCR進(jìn)行文字識(shí)別的簡(jiǎn)單示例:
import easyocr # 創(chuàng)建OCR對(duì)象 reader = easyocr.Reader(['en', 'zh']) # 識(shí)別文字 result = reader.readtext('image.jpg') # 處理識(shí)別結(jié)果 for (text, bbox, confidence) in result: print(f'Text: {text}, Bbox: {bbox}, Confidence: {confidence}')
在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)OCR對(duì)象,指定了要識(shí)別的語言為英文和中文。然后,我們使用OCR對(duì)象的readtext方法對(duì)圖像文件進(jìn)行文字識(shí)別,返回一個(gè)包含識(shí)別結(jié)果的列表。最后,我們遍歷識(shí)別結(jié)果,打印每個(gè)文字的內(nèi)容、位置和置信度。
5、小結(jié)
本文介紹了Python中幾個(gè)常用的OCR庫,并提供了相應(yīng)的代碼示例。這些庫都可以幫助我們?cè)诮涌谧詣?dòng)化工作中進(jìn)行文字識(shí)別,從而實(shí)現(xiàn)更多的自動(dòng)化功能和任務(wù)。根據(jù)實(shí)際需求,您可以選擇適合自己的OCR庫,并結(jié)合其他工具和技術(shù)來完成更復(fù)雜的接口自動(dòng)化工作。
以上就是四個(gè)Python常用OCR庫的用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python OCR庫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在Python的Flask框架下使用sqlalchemy庫的簡(jiǎn)單教程
這篇文章主要介紹了在Python的Flask框架下使用sqlalchemy庫的簡(jiǎn)單教程,用來簡(jiǎn)潔地連接與操作數(shù)據(jù)庫,需要的朋友可以參考下2015-04-04如何實(shí)現(xiàn)Django Rest framework版本控制
這篇文章主要介紹了如何實(shí)現(xiàn)Django Rest framework版本控制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07ruff check文件目錄檢測(cè)--exclude參數(shù)設(shè)置路徑詳解
這篇文章主要為大家介紹了ruff check文件目錄檢測(cè)exclude參數(shù)如何設(shè)置多少路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10初探利用Python進(jìn)行圖文識(shí)別(OCR)
這篇文章主要介紹了初探利用Python進(jìn)行圖文識(shí)別(OCR),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02GPU排隊(duì)腳本實(shí)現(xiàn)空閑觸發(fā)python腳本實(shí)現(xiàn)示例
有的服務(wù)器是多用戶使用,GPU的資源常常被占據(jù)著,很可能在夜間GPU空閑了,但來不及運(yùn)行自己的腳本。如果沒有和別人共享服務(wù)器的話,自己的多個(gè)程序想排隊(duì)使用GPU,也可以用這個(gè)腳本2021-11-11