过期域名预定抢注

 找回密碼
 免费注册

驗證碼識別技術

[複製鏈接]
發表於 2007-12-10 16:15:54 | 顯示全部樓層 |閱讀模式
由於現在很多網站,為了加強安全性,以及防止程序的自動操作網站,都加入的了驗證碼技術。但卻給廣大站長推廣宣傳網站帶來的麻煩。所以我準備寫這篇關於驗證碼識別技術的文章,不足之處在所難免!本人從來不寫東西,今天為了想落伍才寫了!
1 u! h' H/ J7 J9 N* y  Q; O+ A
9 \9 q" p: A" y# X     廣大站長宣傳推廣自己的網站,經常要發佈一些宣傳廣告,如果人工,太慢太昂貴,所以理想的辦法是使用群發軟件,可現在很多網站都有驗證碼,這成為群發軟件的技術難點,而識別也就難點中的難點,好的,閒話少說,言歸正傳!
) w8 j$ c' |9 J/ M6 ^1 h% e) s; z
    我舉的例子是比較難於識別的驗證碼,不討論不變形、不換字體、不換大小、不旋轉的驗證碼,這裡我可能不會寫出代碼,只是提供我編寫的思路,按照這個思路,我寫出的程序,比市場上出售的程序的識別率還要高很多。(有興趣的可以問我,我不想在這裡幫別人宣傳,呵呵~~)
) u* m1 b; i7 Q* t( {1 |- @% U) o
    首先以數字驗證碼開始,字母的要比數字麻煩一些,不過搞清楚了數字驗證碼的識別,字母的也就不難了。; L9 {0 M) O8 x: \; C
2 b; a7 Z+ R: @
    驗證碼一般都是圖片,而且一般都是4位數,處理過程是:先分割為4個部分,然後逐一識別,由於分割比較簡單,我這裡就不說了,我這裡只說如何識別。9 ~* @; ]2 l* k  H& Q) r, ~0 T) G
6 u$ O2 v7 D  f. f0 [9 k4 K. R/ z
    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,為什麼要劃分為15個塊呢?先看圖!* p6 T: v$ z* J" _7 X% G) X
○■○
& e2 |+ J7 R: a■○■
7 t& @0 p9 k8 m& D2 t■○■+ i& L9 P5 l" J+ y2 X
■○■, Q7 }3 _3 k  W* f* c
○■○& n6 ]8 G% S' P% z# J
  x3 `/ V( r5 M
○■○, }; _5 H8 a0 k3 K/ E9 N. I$ j
■■○
- A( U- l% d7 L2 {5 \& N& [, Q○■○
% {) w" G( C- r2 [○■○
! V- `1 ~8 ?- q# J■■■
# b/ P2 c& w) H- C& w* J. w8 V- s4 @0 S( M) K
■■■; p5 {1 R- }. |3 F) q3 [9 D
○○■
# H. z6 q# c8 z; q! e■■■
! ]% J0 N6 ^' y9 A■○○
* Y8 @( G4 H) Z5 Y! r+ I■■■5 s" y' S0 w1 E" _/ m% s% X5 q

( h6 D* @+ w+ h■■■% W" t+ [! x# F9 ]. L3 B
○○■9 H  f4 }" N0 _: A0 m% t! Q
■■■
  _- |+ a5 K6 p○○■
; T8 b& B4 V: |( I■■■8 @0 q% ^9 m( }& P6 I
我先舉這4個例子吧,其餘的大家可以自己畫出來。如果做過驗證碼識別的朋友,肯定很快就明白為什麼劃分為15個塊,其實主要就是因為這樣劃分更合理,也就更能提高識別率。
0 x; {! F5 [9 j& k4 ]& a: e% C/ a. K0 e% t; \6 ^- ~" b3 e: Z% f
    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,然後對每個塊進行計算,當每個塊裡的有效象素超過多少百分比的時候,就標記為 ■,如果沒超過就標記為○,(這裡為了顯示方便我使用了■,○,你完全可以把它標為1、0),這裡要注意一下,這裡的百分比根據字體的粗細可以取 67%,50%,33%,20%,為什麼要取這幾個數?主要和計算機的浮點數運算有關,選這幾個數,運算更快,且不容易出錯,否則計算機在進行大量計算時也是會出錯的!當然這裡,你完全可以選適合你的驗證碼圖片的百分比!!  M8 v* ~/ S3 \
  s- _+ C- ]/ t6 S9 v
    如果驗證碼不變形、不換字體、不換大小、不旋轉,我們的識別工作到這一步基本上就結束了,因為已經可以得到比較清晰的塊圖,對付大多數論壇,就已經足夠了。^_^
: L& @* F' U& _& Z5 x4 ?
) `* Y+ b! ]; |! S3 K! a" b+ a, Z   如果驗證碼的變形比較大、且有很多字體、大小也不固定、且有旋轉,那麼我們經過劃分、取比率顯示後,可能會得到這樣一個圖:% u- j' Z0 u& x# P1 @/ ]9 A2 C
○■○
" x2 l; Q6 d- Y& {$ I○○■' T- G: t; p6 C3 |' j  a3 C
○■○9 C! X' r" q/ \' k
■○○2 l. o! d, L/ s5 h5 k) s" \% \
■■■
& J: a3 k$ U- Y5 i: @8 x    那麼這個數字應該是什麼數字,我們需要使用排除法!排除所有不可能,在0123456789中,這個圖不可能是013456789,他只能是 :2。; Z* h& H- v. F7 X
7 Y6 k! t4 w0 x; w0 }$ S4 H
    寫過驗證碼識別的朋友可能已經明白了!是的,我們需要建立一個類似的數據庫,也就是識別庫,出現哪些圖,他就屬於那個數字。( F0 F$ h- ^- H( [' I1 x
   再舉一個例子:
* N6 U% }9 c8 s○■○
9 d" S0 t" d% k  Z# f- q■○○
! ]  U/ ?: U$ A+ ?9 s- X■■■
! R$ |, K: m) j. {■○■
/ \9 Z7 b# {- O( }1 j3 T○■○' N& q, }: W" r" u2 w
     這是哪個數字呢??是6,沒錯
& w8 {' Z8 [7 s+ A2 T0 q: C. z+ v6 y% K1 h
     我這裡我需要再說明一下為什麼要取5行,3列,15個塊,因為塊太多了你 的識別庫就會很大,塊太少了,就會出現很多分不清楚的塊圖。2 y, F, P) S" X  e# g0 q- H

+ Y% [) j; i; ]! c. q6 h* s    另外你取的百分比也需要注意,不能太大也不能太小。2 U$ `5 l) y* Q; h4 n- J  Z' E
( x7 ?) k# k% }' B5 u2 `  y, O
     好了,等做好自己的數據庫,這時就可以識別大部分數字了。
& D* N% i( O- l* n9 m
; e2 H5 G% a$ @; W% W1 i* D0 L    最後還有一個問題,就是重複的問題,比如,圖片上的數字,明明是 5,可由於它的字體不是常見的字體,且發生了旋轉,最後得到這樣一個圖:
( u6 d6 j; Z! G2 C■■■
5 Z( u+ ^: e, q3 H& a( O6 ]3 u5 A■○○. W8 }0 c5 d" m% T) v7 Z7 Y8 M
■■■
" \" R5 w, s# U5 N■○■* B: G% d; ]6 G) b% p: j0 X+ Z( o
■■■/ u* {4 l- F- G4 b9 F2 ~
   在我的數據庫裡,這個塊圖,是6,也是就說識別錯誤,怎麼辦?  B! \& `6 q, b9 J
1 k& D* B$ |/ e
    我的解決方法是,在數據庫裡先把這條數據刪除因為這個是錯誤的。
9 Y9 W' O4 O/ Z' J7 C/ @" Q) I6 j2 G3 q; c( j0 o
    遇到這種情況,就需要進行二次處理,我的方法是:降低百分比,這時就得到了:
) S' [& U" b2 M* p7 {' ^/ W■■○
' Z; S2 b) k' U9 I7 Y8 O■○○4 U5 U5 J: {; e4 P: B
■■○" ?" ~/ v' `$ s
○○■4 l% [8 U! s  e' d% r0 p
■■○
0 b6 ^  ?6 f# d8 D. x! N& W% p     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 N9 u3 n6 ]  F5 E# F" M做驗證的最後一道門檻了
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

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

GMT+8, 2025-4-4 10:44

By DZ X3.5

小黑屋

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