python利用Tesseract識(shí)別驗(yàn)證碼的方法示例
無(wú)論是是自動(dòng)化登錄還是爬蟲(chóng),總繞不開(kāi)驗(yàn)證碼,這次就來(lái)談?wù)刾ython中光學(xué)識(shí)別驗(yàn)證碼模塊tesserocr和pytesseract。tesserocr和pytesseract是Python的一個(gè)OCR識(shí)別庫(kù),但其實(shí)是對(duì)tesseract做的一層Python API封裝,pytesseract是Google的Tesseract-OCR引擎包裝器;所以它們的核心是tesseract,因此在安裝tesserocr之前,我們需要先安裝tesseract。
下載安裝
下載地址:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.0.0.20181030.exe
下載完成后,雙擊安裝,可以勾選Additional language data(download)選項(xiàng)來(lái)安裝OCR識(shí)別支持的語(yǔ)言包,但下載語(yǔ)言包實(shí)在是慢,我們可以直接從https://github.com/tesseract-ocr/tessdata/下載zip的語(yǔ)言包壓縮文件,解壓后將tessdata-master中的文件復(fù)制到Tesseract的安裝目錄C:\Program Files (x86)\Tesseract-OCR\tessdata目錄下,最后我們配置下環(huán)境變量,我們將C:\Program Files (x86)\Tesseract-OCR添加到環(huán)境變量中。進(jìn)入命令提示符,輸入tesseract,顯示下圖結(jié)果,說(shuō)明配置完成

查看安裝了的語(yǔ)言包:tesseract --list-langs

顯示我一共安裝了167種語(yǔ)言包,里邊包含英文或者其他字符。
測(cè)試
實(shí)驗(yàn)用的二維碼

基本使用語(yǔ)法
tesseract image.png result (tesseract 圖片名稱 生成文件名稱)
結(jié)果

由結(jié)果來(lái)看,識(shí)別出來(lái)了P、2和X,但是把C識(shí)別成了G,識(shí)別度還是比較高,接下來(lái)看在python中的使用
python引入tesseract
在python下使用pip命令即可完成下載安裝 pip install pytesseract
識(shí)別驗(yàn)證碼腳本
import pytesseract
from PIL import Image
im=Image.open('pin.png')
print(pytesseract.image_to_string(im))
結(jié)果

這樣識(shí)別的結(jié)果同樣跟上文一樣,個(gè)別字符識(shí)別的不是很準(zhǔn)確
圖像處理
現(xiàn)在網(wǎng)站上的二維碼設(shè)計(jì)的通常很難復(fù)雜,如果直接識(shí)別的話很難識(shí)別出來(lái),下面這段代碼是進(jìn)行灰度處理和二值化
import pytesseract
from PIL import Image
im=Image.open('5.jpg')
#進(jìn)行置灰處理
im=im.convert('L')
#這個(gè)是二值化閾值
threshold=150
table=[]
for i in range(256):
if i<threshold:
table.append(0)
else:
table.append(1)
#通過(guò)表格轉(zhuǎn)換成二進(jìn)制圖片,1的作用是白色,0就是黑色
im=im.point(table,"1")
im.show()
print(pytesseract.image_to_string(im))
原圖

置灰和二值化后

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python可視化神器pyecharts之繪制地理圖表練習(xí)
這篇文章主要介紹了Python可視化神器pyecharts之繪制地理圖表,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
python實(shí)現(xiàn)的接收郵件功能示例【基于網(wǎng)易POP3服務(wù)器】
這篇文章主要介紹了python實(shí)現(xiàn)的接收郵件功能,結(jié)合實(shí)例形式分析了Python基于網(wǎng)易POP3服務(wù)器接收郵件相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
tensorflow實(shí)現(xiàn)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò)
這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn)
在接口測(cè)試的過(guò)程中,經(jīng)常會(huì)遇到有些接口需要在登錄的狀態(tài)下才能請(qǐng)求,本文主要介紹了python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn),感興趣的可以了解一下2022-06-06
Python入門(mén)教程(二十五)Python的作用域
這篇文章主要介紹了Python入門(mén)教程(二十五)Python的作用域,Python是一門(mén)非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門(mén)教程,需要的朋友可以參考下2023-04-04

