簡單二十行Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別技術(shù)锈锤!

一驯鳖、探討

識(shí)別圖形驗(yàn)證碼可以說是做爬蟲的必修課,涉及到計(jì)算機(jī)圖形學(xué)久免,機(jī)器學(xué)習(xí)浅辙,機(jī)器視覺,人工智能等等高深領(lǐng)域……

簡單地說阎姥,計(jì)算機(jī)圖形學(xué)的主要研究內(nèi)容就是研究如何在計(jì)算機(jī)中表示圖形记舆、以及利用計(jì)算機(jī)進(jìn)行圖形的計(jì)算、處理和顯示的相關(guān)原理與算法呼巴。圖形通常由點(diǎn)泽腮、線、面衣赶、體等幾何元素和灰度盛正、色彩、線型屑埋、線寬等非幾何屬性組成。計(jì)算機(jī)涉及到的幾何圖形處理一般有 2維到n維圖形處理痰滋,邊界區(qū)分摘能,面積計(jì)算,體積計(jì)算敲街,扭曲變形校正团搞。對(duì)于顏色則有色彩空間的計(jì)算與轉(zhuǎn)換,圖形上色多艇,陰影逻恐,色差處理等等。

學(xué)習(xí)中遇到問題有不明白的地方,推薦加小編python學(xué)習(xí)群:862703141即可獲取啦复隆!內(nèi)有視頻教程 拨匆,直播課程 ,等學(xué)習(xí)資料挽拂,期待你的加入

簡單二十行Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別技術(shù)惭每!

簡單二十行Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別技術(shù)!

簡單二十行Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別技術(shù)亏栈!

在破解驗(yàn)證碼中需要用到的知識(shí)一般是 像素台腥,線,面等基本2維圖形元素的處理和色差分析绒北。常見工具為:

支持向量機(jī)(SVM)

OpenCV

圖像處理軟件(Photoshop,Gimp…)

Python Image Library

二黎侈、PIL安裝

PIL: Python Imaging Library, 是Python平臺(tái)的圖像處理標(biāo)準(zhǔn)庫,功能非常強(qiáng)大闷游。

在Debian/Ubantu Linux下直接通過apt安裝:

$sudo apt-get install python-imaging

Max和其他版本的Linux可以直接使用easy_install或pip安裝峻汉,安裝前需要把編譯環(huán)境裝好:

$ sudo easy_install PIL

Windos平臺(tái)可以直接去PIL官網(wǎng)下載exe安裝包。

http://pythonware.com/products/pil/

注:官網(wǎng)提供的安裝包是32位的储藐,64位系統(tǒng)請前往這里

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow下載替代包pillow俱济。

三、一般思路

驗(yàn)證碼識(shí)別的一般思路為:

1钙勃、圖片降噪

2蛛碌、圖片切割

3、圖像文本輸出

3.1 圖片降噪

所謂降噪就是把不需要的信息通通去除辖源,比如背景蔚携,干擾線,干擾像素等等克饶,只剩下需要識(shí)別的文字酝蜒,讓圖片變成2進(jìn)制點(diǎn)陣最好。

對(duì)于彩色背景的驗(yàn)證碼:每個(gè)像素都可以放在一個(gè)5維的空間里矾湃,這5個(gè)維度分別是亡脑,X,Y,R,G,B,也就是像素的坐標(biāo)和顏色邀跃,在計(jì)算機(jī)圖形學(xué)中霉咨,有很多種色彩空間,最常用的比如RGB拍屑,印刷用的CYMK途戒,還有比較少見的HSL或者HSV,每種色彩空間的維度都不一樣僵驰,但是可以通過公式互相轉(zhuǎn)換喷斋。在RGB空間中不好區(qū)分顏色唁毒,可以把色彩空間轉(zhuǎn)換為HSV或HSL。色彩空間參見

http://baike.baidu.com/view/3427413.htm

驗(yàn)證碼圖片7039.jpg:

簡單二十行Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別技術(shù)星爪!

1浆西、導(dǎo)入Image包,打開圖片:

from PIL import Imageim = Image.open('7039.jpg')

2移必、把彩色圖像轉(zhuǎn)化為灰度圖像室谚。RBG轉(zhuǎn)化到HSI彩色空間,采用I分量:

imgry = im.convert('L')imgry.show()

灰度看起來是這樣的:

簡單二十行Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別技術(shù)崔泵!

3秒赤、二值化處理

二值化是圖像分割的一種常用方法。在二值化圖象的時(shí)候把大于某個(gè)臨界灰度值的像素灰度設(shè)為灰度極大值憎瘸,把小于這個(gè)值的像素灰度設(shè)為灰度極小值入篮,從而實(shí)現(xiàn)二值化(一般設(shè)置為0-1)。根據(jù)閾值選取的不同幌甘,二值化的算法分為固定閾值和自適應(yīng)閾值潮售,這里選用比較簡單的固定閾值。

把像素點(diǎn)大于閾值的設(shè)置,1锅风,小于閾值的設(shè)置為0酥诽。生成一張查找表,再調(diào)用point()進(jìn)行映射皱埠。

threshold = 140table = []for i in range(256): if i < threshold: table.append(0) else: table.append(1)out = imgry.point(table, '1')out.show()

處理結(jié)果看起來是這樣的:

簡單二十行Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別技術(shù)肮帐!

3.2 圖片切割

識(shí)別驗(yàn)證碼的重點(diǎn)和難點(diǎn)就在于能否成功分割字符,對(duì)于顏色相同又完全粘連的字符边器,比如google的驗(yàn)證碼训枢,目前是沒法做到5%以上的識(shí)別率的。不過google的驗(yàn)證碼基本上人類也只有30%的識(shí)別率忘巧。本文使用的驗(yàn)證碼例子比較容易識(shí)別恒界。可以不用切割砚嘴,有關(guān)圖片切割的方法參見這篇博客:

http://www.cnblogs.com/apexchu/p/4231041.html

四十酣、利用pytesser模塊實(shí)現(xiàn)識(shí)別

pytesser是谷歌OCR開源項(xiàng)目的一個(gè)模塊,在python中導(dǎo)入這個(gè)模塊即可將圖片中的文字轉(zhuǎn)換成文本际长。

鏈接:

https://code.google.com/p/pytesser/

pytesser 調(diào)用了 tesseract婆誓。在python中調(diào)用pytesser模塊,pytesser又用tesseract識(shí)別圖片中的文字也颤。

4.1 pytesser安裝

如果沒有安裝PIL,請到這里下載安裝:

http://www.pythonware.com/products/pil/

安裝pytesser郁轻,下載地址:http://code.google.com/p/pytesser/翅娶,下載后直接將其解壓到項(xiàng)目代碼下文留,或者解壓到python安裝目錄的Libsite-packages下,并將其添加到path環(huán)境變量中竭沫,不然在導(dǎo)入模塊時(shí)會(huì)出錯(cuò)燥翅。

下載Tesseract OCR engine:http://code.google.com/p/tesseract-ocr/,下載后解壓蜕提,找到tessdata文件夾森书,用其替換掉pytesser解壓后的tessdata文件夾即可。

另外如果現(xiàn)在都是從PIL庫中運(yùn)入Image谎势,沒有使用Image模塊凛膏,所以需要把pytesser.py中的import Image改為from PIL import Image, 其次還需要在pytesser文件夾中新建一個(gè)init.py的空文件。

ps:如果覺得后面兩步比較麻煩脏榆,可以直接到云盤中下載

http://yun.baidu.com/s/1jHJvNiI猖毫,操作如步驟2。

4.2 調(diào)用pytesser識(shí)別

pytesser提供了兩種識(shí)別圖片方法须喂,通過image對(duì)象和圖片地址吁断,代碼判斷如下:

from PIL import Imagefrom pytesser import pytesserimage = Image.open('7039.jpg')print pytesser.image_file_to_string('7039.jpg')print pytesser.image_to_string(image)

同時(shí)pytesser還支持其他語言的識(shí)別,比如中文坞生。具體參見:

http://blog.csdn.net/hk_jh/article/details/8961449

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仔役,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子是己,更是在濱河造成了極大的恐慌又兵,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃泡,死亡現(xiàn)場離奇詭異寒波,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)升熊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門俄烁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人级野,你說我怎么就攤上這事页屠。” “怎么了蓖柔?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵辰企,是天一觀的道長。 經(jīng)常有香客問我况鸣,道長牢贸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任镐捧,我火速辦了婚禮潜索,結(jié)果婚禮上臭增,老公的妹妹穿的比我還像新娘。我一直安慰自己竹习,他們只是感情好誊抛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著整陌,像睡著了一般拗窃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泌辫,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天随夸,我揣著相機(jī)與錄音,去河邊找鬼甥郑。 笑死逃魄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的澜搅。 我是一名探鬼主播伍俘,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勉躺!你這毒婦竟也來了癌瘾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤饵溅,失蹤者是張志新(化名)和其女友劉穎妨退,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕企,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咬荷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轻掩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幸乒。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唇牧,靈堂內(nèi)的尸體忽然破棺而出罕扎,到底是詐尸還是另有隱情,我是刑警寧澤丐重,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布腔召,位于F島的核電站,受9級(jí)特大地震影響扮惦,放射性物質(zhì)發(fā)生泄漏臀蛛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一崖蜜、第九天 我趴在偏房一處隱蔽的房頂上張望浊仆。 院中可真熱鬧烙肺,春花似錦、人聲如沸氧卧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沙绝。三九已至,卻和暖如春鼠锈,著一層夾襖步出監(jiān)牢的瞬間闪檬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工购笆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粗悯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓同欠,卻偏偏與公主長得像样傍,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铺遂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 分享一篇文章衫哥,原文來自:j_hao104的個(gè)人頁面。 一襟锐、探討 識(shí)別圖形驗(yàn)證碼可以說是做爬蟲的必修課撤逢,涉及到計(jì)算機(jī)...
    妄心xyx閱讀 768評(píng)論 1 9
  • 春風(fēng)來 滿園桃花開 把酒當(dāng)歌論豪邁 秋葉落 大雁南歸去 舉杯望月憶相思 相關(guān)作品: 風(fēng)雪夜歸人(石頭畫) 月亮與雪...
    韓小冰閱讀 585評(píng)論 15 13
  • 年少無為”的他,卻總不忘記每次回來給我一塊錢硬幣粮坞。我數(shù)著硬幣蚊荣,也在數(shù)著時(shí)間。 很抱歉莫杈,我起了這一個(gè)奇怪的名字互例。在這...
    荒誕的時(shí)間故事閱讀 312評(píng)論 0 7
  • 《情書》 To木子琴語 我生在這個(gè)年代, 心中卻有從前悠然慢姓迅, 我不能說是唯一的癡情兒敲霍, 只是不突兀地能把你...
    木子愛若閱讀 443評(píng)論 4 3
  • 文章傳送門: 西小麥《恐懼》 池魚著火點(diǎn)評(píng): “我受不了那種大城市窒息的恐懼感。我回來了丁存〖玷荆”小麥的文章有一種小鎮(zhèn)和...
    池魚著火閱讀 252評(píng)論 0 7