沒(méi)看錯(cuò)!一行Python代碼就可以幫您獲取圖片中的文字信息
最近工作中有需求需要用python對(duì)圖片中的文字進(jìn)行識(shí)別,調(diào)研了一下,選擇了tesseract,
目前在github上有50.5k個(gè)star!python可以調(diào)用,安裝也十分方便,pip install pytesseract 即可。如果沒(méi)有Pillow 包,還需要執(zhí)行pip install Pillow。
核心代碼
讀取圖片中文字信息的核心api如下:
from PIL import Image
import pytesseract
captcha_text = pytesseract.image_to_string(Image.open("d:/tmp/img4.png"), lang='chi_sim')
print(captcha_text)
上面這段代碼中需要解釋的是如果圖片中有中文字符則需要添加參數(shù)lang='chi_sim',并在安裝的過(guò)程中添加識(shí)別中文的字符庫(kù),后面會(huì)講到!
運(yùn)行代碼遇到的問(wèn)題
直接運(yùn)行上面的代碼,會(huì)遇到下面的問(wèn)題
raise TesseractNotFoundError()
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.
我們來(lái)分析一下這個(gè)錯(cuò)誤!錯(cuò)誤提示tesseract沒(méi)有安裝,但是我們明明已經(jīng)執(zhí)行了pip install pytesseract,那么問(wèn)題會(huì)出在哪里呢?
我們需要先了解一下pytesseract,它是一款用于光學(xué)字符識(shí)別(OCR)的python工具,即從圖片中識(shí)別出和“讀取”其中嵌入的文字,底層使用的是Google的Tesseract-OCR 引擎,pytesseract只是對(duì)Tesseract-OCR的一層封裝!看到這里我們就能夠理解 ,運(yùn)行python代碼
pytesseract.image_to_string() 報(bào)錯(cuò)的原因了!因?yàn)槲业腜C上并沒(méi)有安裝Tesseract-OCR,pytesseract是無(wú)法調(diào)用Tesseract-OCR的api為我們干活的!
安裝Tesseract-OC
Tesseract-OCR windows 版本的下載鏈接如下:https://github.com/UB-Mannheim/tesseract/wiki
下載成功后,只需默認(rèn)安裝,在安裝的過(guò)程中,如果想對(duì)其他國(guó)家語(yǔ)言文字識(shí)別可以選擇相對(duì)應(yīng)的語(yǔ)言包,如下圖
安裝成功后配置路徑 C:\Program Files\Tesseract-OCR 到環(huán)境變量中即可。
再次運(yùn)行,正常執(zhí)行!大家可以自己做一張文字圖片的截圖查看效果。
復(fù)雜的登錄校驗(yàn)碼無(wú)法識(shí)別
另外我測(cè)試了Tesseract-OCR對(duì)復(fù)雜校驗(yàn)碼的識(shí)別情況,如下圖:
結(jié)論是:復(fù)雜的校驗(yàn)碼仍然無(wú)法識(shí)別。