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 圖片名稱(chēng) 生成文件名稱(chēng))
結(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實(shí)現(xiàn)文件只讀屬性的設(shè)置與取消
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)設(shè)置文件只讀與取消文件只讀的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-07-07Centos安裝python3與scapy模塊的問(wèn)題及解決方法
這篇文章主要介紹了Centos安裝python3與scapy模塊的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Python初學(xué)時(shí)購(gòu)物車(chē)程序練習(xí)實(shí)例(推薦)
下面小編就為大家?guī)?lái)一篇Python初學(xué)時(shí)購(gòu)物車(chē)程序練習(xí)實(shí)例(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08Python+Pandas 獲取數(shù)據(jù)庫(kù)并加入DataFrame的實(shí)例
今天小編就為大家分享一篇Python+Pandas 獲取數(shù)據(jù)庫(kù)并加入DataFrame的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07scrapy數(shù)據(jù)存儲(chǔ)在mysql數(shù)據(jù)庫(kù)的兩種方式(同步和異步)
這篇文章主要介紹了scrapy數(shù)據(jù)存儲(chǔ)在mysql數(shù)據(jù)庫(kù)的兩種方式(同步和異步),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02OpenCV中VideoCapture類(lèi)的使用詳解
這篇文章主要介紹了OpenCV中VideoCapture類(lèi)的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02python設(shè)計(jì)并實(shí)現(xiàn)平面點(diǎn)類(lèi)Point的源代碼
這篇文章主要介紹了python-設(shè)計(jì)并實(shí)現(xiàn)平面點(diǎn)類(lèi)Point,定義一個(gè)平面點(diǎn)類(lèi)Point,對(duì)其重載運(yùn)算符關(guān)系運(yùn)算符,關(guān)系運(yùn)算以距離坐標(biāo)原點(diǎn)的遠(yuǎn)近作為基準(zhǔn),需要的朋友可以參考下2024-05-05解決TensorFlow模型恢復(fù)報(bào)錯(cuò)的問(wèn)題
今天小編就為大家分享一篇解決TensorFlow模型恢復(fù)報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python列表list常用內(nèi)建函數(shù)實(shí)例小結(jié)
這篇文章主要介紹了Python列表list常用內(nèi)建函數(shù),結(jié)合實(shí)例形式總結(jié)分析了Python列表list常見(jiàn)內(nèi)建函數(shù)的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10