python驗(yàn)證碼識(shí)別的實(shí)例詳解
其實(shí)關(guān)于驗(yàn)證碼識(shí)別涉及很多方面的內(nèi)容,入手難度大,但是入手后,可拓展性又非常廣泛,可玩性極強(qiáng),成就感也很足,對(duì)這感興趣的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
依賴
sudo apt-get install python-imaging sudo apt-get install tesseract-ocr pip install pytesseract
利用google ocr來識(shí)別驗(yàn)證碼
from PIL import Image
import pytesseract
image = Image.open('v1.jpg')
vcode = pytesseract.image_to_string(image)
print vcode
但是pytesseract本身識(shí)別率不高,而且一般網(wǎng)站的驗(yàn)證碼都帶有大量干擾元素。( ̄▽ ̄)"
所以我們首先要對(duì)驗(yàn)證碼進(jìn)行去噪。
對(duì)于單像素干擾線、干擾點(diǎn)我們可以通過掃描整個(gè)圖像,考察每一個(gè)像素點(diǎn)所臨近的八個(gè)像素點(diǎn)的顏色,如果不同的個(gè)數(shù)大于一定的值,那就說明該點(diǎn)是離散點(diǎn),需要去除。
另外也可以嘗試設(shè)定閾值來直接將驗(yàn)證碼二值化。
下面是兩張學(xué)校網(wǎng)站上的驗(yàn)證碼


我們可以看到驗(yàn)證碼存在單像素干擾點(diǎn),所以我們需要設(shè)法去除。但是經(jīng)過反復(fù)刷新驗(yàn)證碼,發(fā)現(xiàn)這個(gè)驗(yàn)證碼
1. 只有加法運(yùn)算
2.至多兩位數(shù)的加法
3.文字部分一定是紅色(255,0,0)
有了上述的信息,可以判斷這個(gè)驗(yàn)證碼的生成算法是有缺陷的
import Image
from numpy import *
import pytesseract
im = Image.open('1.png')
im = im.convert('RGB')
#拉長圖像,方便識(shí)別。
im = im.resize((200,80))
a = array(im)
for i in xrange(len(a)):
for j in xrange(len(a[i])):
if a[i][j][0] == 255:
a[i][j]=[0,0,0]
else:
a[i][j]=[255,255,255]
im = Image.fromarray(a)
im.show()
vcode = pytesseract.image_to_string(im)
print vcode
利用上述腳本我們可以將圖像進(jìn)行二值化,利用google ocr進(jìn)行識(shí)別。再通過eval()來對(duì)表達(dá)式進(jìn)行求值。
總結(jié)
python驗(yàn)證碼識(shí)別的內(nèi)容到這就基本介紹了,希望這篇文章對(duì)大家的學(xué)習(xí)或者工作能有所幫助,如果有疑問大家可以留言交流。
相關(guān)文章
一文帶你探索Python中15個(gè)常見的魔術(shù)方法
在Python中,特殊方法(也稱為魔術(shù)方法)是由Python解釋器自動(dòng)調(diào)用的,我們不需要手動(dòng)調(diào)用它們,本文小編為大家整理了15個(gè)常見特殊方法的實(shí)現(xiàn),希望對(duì)大家有所幫助2024-01-01
python打印n位數(shù)“水仙花數(shù)”(實(shí)例代碼)
這篇文章主要介紹了python打印n位數(shù)“水仙花數(shù)”,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
對(duì)python中各個(gè)response的使用說明
今天小編就為大家分享一篇對(duì)python中各個(gè)response的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
TensorFlow可視化工具TensorBoard默認(rèn)圖與自定義圖
這篇文章主要介紹了TensorFlow可視化工具TensorBoard默認(rèn)圖與自定義圖的使用操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10
python光學(xué)仿真實(shí)現(xiàn)光線追跡之空間關(guān)系
這篇文章主要介紹了python光學(xué)仿真中實(shí)現(xiàn)光線追跡的空間關(guān)系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
Python利用多線程枚舉實(shí)現(xiàn)獲取wifi信息
這篇文章主要為大家詳細(xì)介紹了Python如何利用枚舉字典的方式來實(shí)現(xiàn)獲取wifi信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12
解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 d
這篇文章主要介紹了解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 dimensional. Got 4 dimensions.具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02

