过期域名预定抢注

 找回密碼
 免费注册

驗證碼識別技術

[複製鏈接]
發表於 2007-12-10 16:15:54 | 顯示全部樓層 |閱讀模式
由於現在很多網站,為了加強安全性,以及防止程序的自動操作網站,都加入的了驗證碼技術。但卻給廣大站長推廣宣傳網站帶來的麻煩。所以我準備寫這篇關於驗證碼識別技術的文章,不足之處在所難免!本人從來不寫東西,今天為了想落伍才寫了!3 K3 l/ v  U# _, B5 u2 z( A: `

7 o1 r; a& Z8 [0 X/ h  |+ g( F     廣大站長宣傳推廣自己的網站,經常要發佈一些宣傳廣告,如果人工,太慢太昂貴,所以理想的辦法是使用群發軟件,可現在很多網站都有驗證碼,這成為群發軟件的技術難點,而識別也就難點中的難點,好的,閒話少說,言歸正傳!
4 l# f  }6 \. ~, ^) W
2 k* X) F. o; R5 E# m# o/ A    我舉的例子是比較難於識別的驗證碼,不討論不變形、不換字體、不換大小、不旋轉的驗證碼,這裡我可能不會寫出代碼,只是提供我編寫的思路,按照這個思路,我寫出的程序,比市場上出售的程序的識別率還要高很多。(有興趣的可以問我,我不想在這裡幫別人宣傳,呵呵~~)
' z, d. m$ E6 I: v6 {$ N- A+ c3 }6 J; y) {% Y5 h1 g# h
    首先以數字驗證碼開始,字母的要比數字麻煩一些,不過搞清楚了數字驗證碼的識別,字母的也就不難了。
7 s/ h7 A: I$ U
# m/ i' U4 _1 d    驗證碼一般都是圖片,而且一般都是4位數,處理過程是:先分割為4個部分,然後逐一識別,由於分割比較簡單,我這裡就不說了,我這裡只說如何識別。! R0 R  y8 E9 L; a. ]
- k! l( B: |- [/ q
    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,為什麼要劃分為15個塊呢?先看圖!+ t9 {* g" ]% {/ R# V
○■○ 9 f, X4 o( D1 N$ }+ }8 @
■○■
( |0 k, }, }( y0 M$ z, F# a0 K■○■5 i+ k9 p' F) T( Y6 G: z
■○■; T' A) u- F/ i7 V
○■○  E4 |3 M: u3 k
$ \$ C% n) S! I; T
○■○4 }; t2 @1 n! b  m- @$ T3 e. C& P3 |
■■○
3 E$ [8 W3 W7 ^- P! B○■○
( R3 r6 l0 i) W! a$ D○■○* C. i5 w2 n$ Y, t3 F/ \% T
■■■% n/ U3 f& w  d) j7 L" n
9 a* z/ y# x; _" x- p
■■■
; }& C# h2 c  C* K% z+ A# w/ C○○■+ N: \+ }4 ~) k7 ]6 J) I
■■■
& u/ E! j9 u' T0 G/ F* ]& Q7 D■○○) F- f$ h3 c5 ^8 b4 i
■■■
! w0 i0 h" x! ^& y% @+ L" N$ ^" I( m* \/ i1 ^1 g1 X
■■■
! N- {% n+ B# F$ }$ n& g○○■, b' B: ?& {! \7 R) W
■■■4 l* T% A" f* T5 B  r
○○■
- ^+ A$ p$ E1 q■■■
; Y8 x( R' B8 N# @: W我先舉這4個例子吧,其餘的大家可以自己畫出來。如果做過驗證碼識別的朋友,肯定很快就明白為什麼劃分為15個塊,其實主要就是因為這樣劃分更合理,也就更能提高識別率。
, D- U/ Z& W& L
1 }7 t3 g! x# c, M& ?' F    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,然後對每個塊進行計算,當每個塊裡的有效象素超過多少百分比的時候,就標記為 ■,如果沒超過就標記為○,(這裡為了顯示方便我使用了■,○,你完全可以把它標為1、0),這裡要注意一下,這裡的百分比根據字體的粗細可以取 67%,50%,33%,20%,為什麼要取這幾個數?主要和計算機的浮點數運算有關,選這幾個數,運算更快,且不容易出錯,否則計算機在進行大量計算時也是會出錯的!當然這裡,你完全可以選適合你的驗證碼圖片的百分比!!8 _  T% Y0 H1 q+ E! u% V7 g

( _% G8 k' f0 q0 l* m) r( c1 h    如果驗證碼不變形、不換字體、不換大小、不旋轉,我們的識別工作到這一步基本上就結束了,因為已經可以得到比較清晰的塊圖,對付大多數論壇,就已經足夠了。^_^- y$ J- _* a" ^# G8 A. u4 T+ s

2 g2 x  f* w) o0 M# |   如果驗證碼的變形比較大、且有很多字體、大小也不固定、且有旋轉,那麼我們經過劃分、取比率顯示後,可能會得到這樣一個圖:8 R# Z5 Z8 p% q
○■○
3 [# U: T$ r% Y0 K7 o% ]- K○○■
2 X4 P+ R: h& ]8 [/ |2 n○■○
- F* V4 f8 U+ x. [2 C2 L  {4 I■○○+ I- e" l8 I% L- Q
■■■
6 [7 n8 R/ G' E( f    那麼這個數字應該是什麼數字,我們需要使用排除法!排除所有不可能,在0123456789中,這個圖不可能是013456789,他只能是 :2。
* x1 e9 U$ ~  H8 b4 j! {, B" X/ n, k8 j, s& W( R( @: k
    寫過驗證碼識別的朋友可能已經明白了!是的,我們需要建立一個類似的數據庫,也就是識別庫,出現哪些圖,他就屬於那個數字。+ _3 s; E' n5 L5 {% a
   再舉一個例子:
! N* K: O' e; u- i7 G5 t* ~5 d○■○
  [8 J; S2 D, Q( t  C■○○
0 K: n7 Y0 @$ z$ W) P■■■% F9 G/ S0 O- |; u( D) Q& J
■○■4 V# j, {! N9 U$ O: k4 \0 W# a
○■○
$ P4 `- A1 }7 Q3 V" w. @     這是哪個數字呢??是6,沒錯
- n; c2 {- T7 T) X# g* t6 ]( `. c
% R6 s4 R( W! c) e- Z5 K0 f. ?     我這裡我需要再說明一下為什麼要取5行,3列,15個塊,因為塊太多了你 的識別庫就會很大,塊太少了,就會出現很多分不清楚的塊圖。
- s$ \9 w: V  e" f
% R2 n) e4 x' X7 g" q8 C2 \/ [    另外你取的百分比也需要注意,不能太大也不能太小。1 t# W' }- @* e2 g

  `' O; u( C: L: V+ c5 W! x/ p     好了,等做好自己的數據庫,這時就可以識別大部分數字了。
% ~/ T9 N  b% t- w+ i% a/ ?: T0 T9 P! C4 S' I) ~
    最後還有一個問題,就是重複的問題,比如,圖片上的數字,明明是 5,可由於它的字體不是常見的字體,且發生了旋轉,最後得到這樣一個圖:
$ |3 v8 f4 [7 u/ B, x; U4 q4 b■■■: X" P. [, U8 a5 r
■○○4 J$ f; s# Q; V% E8 {8 }8 y7 y& t$ P
■■■, s" ?, d$ D* n% A" N) P
■○■* o4 n( O2 h$ z5 P0 n" Z: v2 O- P
■■■' }& s' S! ?) j9 _7 i$ E, G
   在我的數據庫裡,這個塊圖,是6,也是就說識別錯誤,怎麼辦?
( F; m) r% W. ~( s" G+ `7 a# \* N! c# Y8 [! ^; G! [7 n" X. y+ S
    我的解決方法是,在數據庫裡先把這條數據刪除因為這個是錯誤的。' |" ~5 i# X5 V
. t0 a' ?( c& ]9 I
    遇到這種情況,就需要進行二次處理,我的方法是:降低百分比,這時就得到了:0 {" ?6 B& C$ j; V5 d- a
■■○9 E% M4 \8 F. ]# Y
■○○2 e5 Z, z3 c# }- ~
■■○
; l: @9 E. M; r( O5 c5 n+ h: [' `○○■* t* r9 g3 t7 g2 {% ^) _3 n* v3 J
■■○  u# j' V6 ]; [! `
     OK,經過降低百分比,圖片就由「6」又變為「5」了,呵呵~~~由於降低了百分比,我們需要再建立一個識別庫的來存儲這些數據。
發表於 2007-12-10 16:25:19 | 顯示全部樓層
呵呵  學習了
回復 给力 爆菊

使用道具 舉報

發表於 2007-12-14 10:32:54 | 顯示全部樓層
: 不明白,不過學習了...
回復 给力 爆菊

使用道具 舉報

發表於 2008-1-6 15:33:26 | 顯示全部樓層
學習:
回復 给力 爆菊

使用道具 舉報

發表於 2008-1-6 15:57:26 | 顯示全部樓層
不明白誒
回復 给力 爆菊

使用道具 舉報

發表於 2008-1-7 19:53:47 | 顯示全部樓層
寫的很不錯的.
回復 给力 爆菊

使用道具 舉報

發表於 2008-1-7 20:05:05 | 顯示全部樓層
驗證碼識別技術; i" [. O5 [! H6 ?1 W
做驗證的最後一道門檻了
回復 给力 爆菊

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

4um點基跨境網編創業社區

GMT+8, 2024-11-24 03:27

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表