过期域名预定抢注

 找回密碼
 免费注册

驗證碼識別技術

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

& ~$ v8 m) @  z( n     廣大站長宣傳推廣自己的網站,經常要發佈一些宣傳廣告,如果人工,太慢太昂貴,所以理想的辦法是使用群發軟件,可現在很多網站都有驗證碼,這成為群發軟件的技術難點,而識別也就難點中的難點,好的,閒話少說,言歸正傳!: Z+ z1 ]- k( c1 E) `
9 P& z' m& c1 z
    我舉的例子是比較難於識別的驗證碼,不討論不變形、不換字體、不換大小、不旋轉的驗證碼,這裡我可能不會寫出代碼,只是提供我編寫的思路,按照這個思路,我寫出的程序,比市場上出售的程序的識別率還要高很多。(有興趣的可以問我,我不想在這裡幫別人宣傳,呵呵~~)
% l2 u9 h" L# G# X; T7 [4 ~4 o$ v5 |; {9 F3 s" j! j; l+ x
    首先以數字驗證碼開始,字母的要比數字麻煩一些,不過搞清楚了數字驗證碼的識別,字母的也就不難了。
% R0 }( z5 P! ^/ W, e* v6 Z$ ~; x1 J/ l# {- a4 U
    驗證碼一般都是圖片,而且一般都是4位數,處理過程是:先分割為4個部分,然後逐一識別,由於分割比較簡單,我這裡就不說了,我這裡只說如何識別。2 M3 T9 y* s, x9 w
4 f# s$ Q; Z) O
    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,為什麼要劃分為15個塊呢?先看圖!
& f- t7 [; ]4 P8 `, B% M5 G○■○
% u! F1 o9 R2 |% f5 v( i# y■○■
5 l. n0 v$ c. G, s■○■; D/ k, x9 t- U
■○■
6 [) y9 }9 x" \6 q% N+ ~' U○■○. X# d" O7 w  B8 K, d% \

! I# u/ |' U% K3 Q○■○
/ V, I9 G( O6 z8 ?! l■■○
- K' v  ]+ H* O* r: D/ Z- n( v○■○5 T/ D; }7 i# o
○■○2 Z# I: ?) z' I' r$ T
■■■* ?/ z( B# A: s7 p0 s5 H4 Q! }
" x2 x& q2 ^, i8 n+ ?/ J
■■■. q& b: O; s/ j) M# F
○○■4 J2 U6 N+ E4 k! q
■■■8 N5 O9 {& ]- O, z
■○○- w4 _# U3 c9 J/ G6 h7 G& j
■■■5 W; q  O' d, Z& u1 b
% ~, ~0 D5 W1 s1 [- I
■■■4 ]- M" V6 `' Y3 t. W
○○■
0 l* t8 n( o  d  ]' U8 q■■■
  c' G9 `2 {' J/ H/ B○○■
9 }! I, w& ^8 n2 n7 ~■■■
& F4 j4 v# w8 S" g5 N" N我先舉這4個例子吧,其餘的大家可以自己畫出來。如果做過驗證碼識別的朋友,肯定很快就明白為什麼劃分為15個塊,其實主要就是因為這樣劃分更合理,也就更能提高識別率。; S: ^4 d0 a3 I2 p

' a, ]8 U4 [+ J4 q' h    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,然後對每個塊進行計算,當每個塊裡的有效象素超過多少百分比的時候,就標記為 ■,如果沒超過就標記為○,(這裡為了顯示方便我使用了■,○,你完全可以把它標為1、0),這裡要注意一下,這裡的百分比根據字體的粗細可以取 67%,50%,33%,20%,為什麼要取這幾個數?主要和計算機的浮點數運算有關,選這幾個數,運算更快,且不容易出錯,否則計算機在進行大量計算時也是會出錯的!當然這裡,你完全可以選適合你的驗證碼圖片的百分比!!
4 n2 z% x& |/ R' a, M. m: Z# ~8 h2 a  y$ W! i9 s3 C7 x
    如果驗證碼不變形、不換字體、不換大小、不旋轉,我們的識別工作到這一步基本上就結束了,因為已經可以得到比較清晰的塊圖,對付大多數論壇,就已經足夠了。^_^9 K+ b- x! A5 D: c
& R& p4 T* d% g! X; z
   如果驗證碼的變形比較大、且有很多字體、大小也不固定、且有旋轉,那麼我們經過劃分、取比率顯示後,可能會得到這樣一個圖:
# S8 _4 q# L; b7 n: `3 H○■○
. n3 Q$ D7 V; q! p8 F○○■
7 e( {$ F! ]) e5 ^) y# Y) K○■○4 u& c2 e+ r4 [6 w& D4 A
■○○
4 _- s$ {3 H' o9 i) n* `2 V7 ^# d■■■$ {) n: t* S+ a1 w- i! U
    那麼這個數字應該是什麼數字,我們需要使用排除法!排除所有不可能,在0123456789中,這個圖不可能是013456789,他只能是 :2。2 g- G6 l5 f0 f+ a6 V

5 f7 f2 h+ n" L" W, G! n' M! _    寫過驗證碼識別的朋友可能已經明白了!是的,我們需要建立一個類似的數據庫,也就是識別庫,出現哪些圖,他就屬於那個數字。
+ L& v$ K$ ~& u/ b   再舉一個例子:
8 }5 x% T. o6 t) ~0 R○■○4 _9 a9 Y7 w1 u  u: v: ~+ i
■○○
- J. ^7 V7 [) `; P. N- ]■■■
! i. H& n$ ^8 x" [■○■
, T& O9 }8 I* ]2 ^' p; Z; A○■○
9 U: f0 w# I& n% ?     這是哪個數字呢??是6,沒錯! X8 x' F5 J5 f. ]* W' P  C9 W

1 V- C: e! l0 h4 m3 E- N     我這裡我需要再說明一下為什麼要取5行,3列,15個塊,因為塊太多了你 的識別庫就會很大,塊太少了,就會出現很多分不清楚的塊圖。( z$ E) X! m7 V

8 y- ^6 v) p) `8 X2 ?    另外你取的百分比也需要注意,不能太大也不能太小。
/ `5 y$ K( }. _( Y7 }1 j4 ?/ n& e  Y! c  |0 p
     好了,等做好自己的數據庫,這時就可以識別大部分數字了。
6 ^6 q" d4 ~+ g3 E+ I7 q* [) R; w+ P4 D! ~2 J2 A$ j5 _8 \1 s
    最後還有一個問題,就是重複的問題,比如,圖片上的數字,明明是 5,可由於它的字體不是常見的字體,且發生了旋轉,最後得到這樣一個圖:
" z4 F# H# Q& R- q9 p! c/ D. i■■■+ L, `- X& ^5 w. E* V% k, d  `% w
■○○
! b" f2 ~8 a3 v8 S. v8 g■■■
( h* t6 ~9 j2 q, v' V$ Y' R■○■
# ^- a* M: i8 i/ I7 D9 G. B% z■■■+ M0 {1 c8 r( C1 \3 D
   在我的數據庫裡,這個塊圖,是6,也是就說識別錯誤,怎麼辦?  b- z- n6 W7 z! @+ G0 `
: g- T) y( B# ?0 E/ {2 G* `
    我的解決方法是,在數據庫裡先把這條數據刪除因為這個是錯誤的。
- W$ c$ _! f9 m  P1 Y$ Y  g* G5 e7 v0 d* a
    遇到這種情況,就需要進行二次處理,我的方法是:降低百分比,這時就得到了:4 o* a7 T: X" a# v0 p
■■○: @) k( R3 W; F  R
■○○
0 o: ^7 r$ Y8 X- }: x! J■■○
, t1 @5 Z# y+ V, H+ r) M) C○○■. _7 a" T: v7 L, `2 v" j0 M
■■○
0 Z% j4 M; u/ F% h, v     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 | 顯示全部樓層
驗證碼識別技術
4 e2 z& d/ R( ]; V! ]( ~7 W做驗證的最後一道門檻了
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

过期高净值品牌域名预定抢注

點基跨境 數位編輯創業論壇

GMT+8, 2025-6-6 16:28

By DZ X3.5

小黑屋

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