驗證碼識別技術 Captcha Decode Technology

來源:互聯網
上載者:User
驗證碼識別技術 Captcha Decode Technology

        由於現在很多網站,為了加強安全性,以及防止程式的自動操作網站,都加入的了驗證碼技術。但卻給廣大站長推廣宣傳網站帶來的麻煩。所以我準備寫這篇關於驗證碼識別技術的文章,不足之處在所難免!本人從來不寫東西,今天為了想落伍才寫了!

        廣大站長宣傳推廣自己的網站,經常要發布一些宣傳廣告,如果靠人工,太慢太昂貴,所以理想的辦法是使用群發軟體,可現在很多網站都有驗證碼,這成為群發軟體的技術痛點,而識別也就痛點中的痛點,好的,閑話少說,言歸正傳!

        我舉的例子是比較難於識別的驗證碼,不討論不變形、不換字型、不換大小、不旋轉的驗證碼,這裡我可能不會寫出代碼,只是提供我編寫的思路,按照這個思路,我寫出的程式,比市場上出售的程式的識別率還要高很多。(有興趣的可以問我,我不想在這裡幫別人宣傳,呵呵~~)

        首先以數字驗證碼開始,字母的要比數字麻煩一些,不過搞清楚了數字驗證碼的識別,字母的也就不難了。

        驗證碼一般都是圖片,而且一般都是4位元,處理過程是:先分割為4個部分,然後逐一識別,由於分割比較簡單,我這裡就不說了,我這裡只說如何識別。

        我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,為什麼要劃分為15個塊呢?先看圖!

○■○
■○■
■○■
■○■
○■○

○■○
■■○
○■○
○■○
■■■

■■■
○○■
■■■
■○○
■■■

■■■
○○■
■■■
○○■
■■■

        我先舉這4個例子吧,其餘的大家可以自己畫出來。如果做過驗證碼識別的朋友,肯定很快就明白為什麼劃分為15個塊,其實主要就是因為這樣劃分更合理,也就更能提高識別率。

        我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,然後對每個塊進行計算,當每個塊裡的有效象素超過多少百分比的時候,就標記為 ■,如果沒超過就標記為○,(這裡為了顯示方便我使用了■,○,你完全可以把它標為1、0),這裡要注意一下,這裡的百分比根據字型的粗細可以取 67%,50%,33%,20%,為什麼要取這幾個數?主要和電腦的浮點數運算有關,選這幾個數,運算更快,且不容易出錯,否則電腦在進行大量計算時也是會出錯的!當然這裡,你完全可以選適合你的驗證碼圖片的百分比!!

        如果驗證碼不變形、不換字型、不換大小、不旋轉,我們的識別工作到這一步基本上就結束了,因為已經可以得到比較清晰的塊圖,對付大多數論壇,就已經足夠了。^_^

        如果驗證碼的變形比較大、且有很多字型、大小也不固定、且有旋轉,那麼我們經過劃分、取比率顯示後,可能會得到這樣一個圖:

○■○
○○■
○■○
■○○
■■■

        那麼這個數字應該是什麼數字,我們需要使用排除法!排除所有不可能,在0123456789中,這個圖不可能是013456789,他只能是 :2。

        寫過驗證碼識別的朋友可能已經明白了!是的,我們需要建立一個類似的資料庫,也就是識別庫,出現哪些圖,他就屬於那個數字。
  再舉一個例子:

○■○
■○○
■■■
■○■
○■○

        這是哪個數字呢??是6,沒錯

        我這裡我需要再說明一下為什麼要取5行,3列,15個塊,因為塊太多了你 的識別庫就會很大,塊太少了,就會出現很多分不清楚的塊圖。

        另外你取的百分比也需要注意,不能太大也不能太小。

        好了,等做好自己的資料庫,這時就可以識別大部分數字了。

        最後還有一個問題,就是重複的問題,比如,圖片上的數字,明明是 5,可由於它的字型不是常見的字型,且發生了旋轉,最後得到這樣一個圖:

■■■
■○○
■■■
■○■
■■■

        在我的資料庫裡,這個塊圖,是6,也是就說識別錯誤,怎麼辦?

        我的解決方案是,在資料庫裡先把這條資料刪除因為這個是錯誤的。

        遇到這種情況,就需要進行二次處理,我的方法是:降低百分比,這時就得到了:

■■○
■○○
■■○
○○■
■■○

        OK,經過降低百分比,圖片就由“6”又變為“5”了,呵呵~~~由於降低了百分比,我們需要再建立一個識別庫的來儲存這些資料。

        好了,我的文章就寫到這裡,只是給大家提供一個思路,可能還有一些細節我沒寫出來,但主要的方法都提供出來了,希望能起到拋磚引玉的作用,也希望能夠落伍!!!!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.