PIL驗(yàn)證碼圖片預(yù)處理

PIL驗(yàn)證碼圖片預(yù)處理

概論

在用tesseract進(jìn)行驗(yàn)證碼識別之前骑疆,我們首先需要對驗(yàn)證碼圖片進(jìn)行預(yù)處理,盡量去除噪聲坎匿,而只保留有驗(yàn)證碼信息的像素奈惑。本文主要介紹一些基本的驗(yàn)證碼預(yù)處理方法。

通常驗(yàn)證碼圖像預(yù)處理可見下圖(第二步驟):


圖像預(yù)處理流程

驗(yàn)證碼噪聲分析

通常驗(yàn)證碼噪聲主要有以下:

  • 變色:
    對驗(yàn)證碼字符像素進(jìn)行變色陌选,但一般而言為了可以辨認(rèn)都是和圖像底色有一定差別的理郑。這就可以通過二值圖像,把驗(yàn)證碼字符和底色進(jìn)行鮮明的區(qū)分咨油。

    比如以下兩種驗(yàn)證碼您炉,字體像素和背景差別很明顯,通過PIL庫二值化基本就能分理出字符像素:


    處理后:



  • 干擾點(diǎn)
    干擾點(diǎn)基本上可以算是椒鹽噪聲役电,即離散的單獨(dú)存在的噪點(diǎn)赚爵。這種噪聲,一般噪點(diǎn)像素和周圍像素差別較大,可以簡單地用中值濾波處理(如果遇到高斯噪聲的可以用高斯濾波)冀膝。
    另外也可以遍歷像素唁奢,計算一個像素4領(lǐng)域或者8領(lǐng)域的像素是否跟圖像底色近似(用一個閾值做判斷),如果超過一定數(shù)量則判斷該像素為噪聲窝剖,將此像素設(shè)為背景色麻掸。
  • 干擾線:
    干擾線依賴于繪制方式,分曲線和直線赐纱。但不管如何论笔,其主要特點(diǎn)是像素是線性連接的,這就可以通過Flood Fill進(jìn)行著色千所,并統(tǒng)計著色面積(一般都是驗(yàn)證碼像素的著色面積最大)狂魔,最后把那些著色面積小的噪聲像素刪除。
  • 文字傾斜:
    再去除噪聲之后淫痰,可以把傾斜的文字像素通過仿射變換變成正體字最楷。或者干脆直接用斜體的字建立訓(xùn)練模型(如果驗(yàn)證的字體傾斜方向比較單一的話還是可行的)待错。

去噪實(shí)例

驗(yàn)證碼獲取&噪聲分析

驗(yàn)證碼地址:
http://scm.sf-express.com/isc-vmi/loginmgmt/imgcode?a=0.18090831750297091

該驗(yàn)證碼主要是增加了不同顏色的干擾線籽孙,并且干擾線比較細(xì)短。因此考慮先用PIL庫將其轉(zhuǎn)換成二值圖火俄,之后通過遍歷每個像素點(diǎn)犯建,判斷鄰域像素來刪除多余噪聲。

PIL二值圖處理

灰度圖轉(zhuǎn)換:

img = Image.open(loadpath+file).convert("L")

PIL二值圖算法:

手動遍歷像素瓜客,以一定閾值為界限适瓦,把圖片變成二值圖像。

def binarizing(img,threshold): #input: gray image
    pixdata = img.load()
    w, h = img.size
    for y in range(h):
        for x in range(w):
            if pixdata[x, y] < threshold:
                pixdata[x, y] = 0
            else:
                pixdata[x, y] = 255
    return img

結(jié)果:

可見二值化的圖像并不能去除干擾線谱仪,這樣的圖像直接用tesseract做識別成功機(jī)會不會超過5%玻熙。因此需要把這些干擾線去除,這就需要用一定的算法來處理像素疯攒。

干擾線去噪算法

如圖嗦随,對于以上直線行干擾線而言,從左到右的像素遍歷會把干擾線的起點(diǎn)像素識別為噪聲(3鄰域像素都是背景色)敬尺,然后繼續(xù)遍歷下去干擾線就清除了枚尼。當(dāng)然對于較粗的2像素、3像素噪聲砂吞,也是同樣道理署恍。

4鄰域像素算法:

對于像素值>245的鄰域像素,判別為屬于背景色呜舒,如果一個像素上下左右4各像素值有超過2個像素屬于背景色锭汛,那么該像素就是噪聲笨奠。

def depoint(img):   #input: gray image
    pixdata = img.load()
    w,h = img.size
    for y in range(1,h-1):
        for x in range(1,w-1):
            count = 0
            if pixdata[x,y-1] > 245:
                count = count + 1
            if pixdata[x,y+1] > 245:
                count = count + 1
            if pixdata[x-1,y] > 245:
                count = count + 1
            if pixdata[x+1,y] > 245:
                count = count + 1
            if count > 2:
                pixdata[x,y] = 255
    return img

處理結(jié)果:

可見第二幅圖像有一處黑線噪聲未去除,這是因?yàn)槲也捎昧擞勺笙蛴一脚梗缮舷蛳卤闅v像素法般婆,而仔細(xì)觀察該驗(yàn)證碼像素還是有黑色邊框的,因此通過去除邊框或者改變遍歷方向就能去除該噪聲朵逝。

tesseract測試

用默認(rèn)的tesseract進(jìn)行20個樣本的測試(沒有自己訓(xùn)練數(shù)據(jù)),限定參數(shù) -psm 7表示識別單行字符蔚袍,并限定字符集為數(shù)字和大寫字母。
結(jié)果其中有15個樣本識別正確配名,成功率大概75%
主要問題集中在tesseract默認(rèn)識別容易把G識別成6啤咽,把Y識別成V,因此為了提高識別率自己訓(xùn)練數(shù)據(jù)還是必要的渠脉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宇整,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芋膘,更是在濱河造成了極大的恐慌鳞青,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件为朋,死亡現(xiàn)場離奇詭異臂拓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)习寸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門胶惰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霞溪,你說我怎么就攤上這事孵滞。” “怎么了威鹿?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵剃斧,是天一觀的道長。 經(jīng)常有香客問我忽你,道長,這世上最難降的妖魔是什么臂容? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任科雳,我火速辦了婚禮,結(jié)果婚禮上脓杉,老公的妹妹穿的比我還像新娘糟秘。我一直安慰自己,他們只是感情好球散,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布尿赚。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凌净。 梳的紋絲不亂的頭發(fā)上悲龟,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音冰寻,去河邊找鬼须教。 笑死,一個胖子當(dāng)著我的面吹牛斩芭,可吹牛的內(nèi)容都是我干的轻腺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼划乖,長吁一口氣:“原來是場噩夢啊……” “哼贬养!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起琴庵,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤误算,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后细卧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尉桩,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年贪庙,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜘犁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡止邮,死狀恐怖这橙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情导披,我是刑警寧澤屈扎,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站撩匕,受9級特大地震影響鹰晨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜止毕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一模蜡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扁凛,春花似錦忍疾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甥绿。三九已至,卻和暖如春则披,著一層夾襖步出監(jiān)牢的瞬間共缕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工收叶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骄呼,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓判没,卻偏偏與公主長得像蜓萄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子澄峰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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