过期域名预定抢注

 找回密碼
 免费注册

驗證碼識別技術

[複製鏈接]
發表於 2007-12-10 16:15:54 | 顯示全部樓層 |閱讀模式
由於現在很多網站,為了加強安全性,以及防止程序的自動操作網站,都加入的了驗證碼技術。但卻給廣大站長推廣宣傳網站帶來的麻煩。所以我準備寫這篇關於驗證碼識別技術的文章,不足之處在所難免!本人從來不寫東西,今天為了想落伍才寫了!/ g/ @( O* O, O  p8 H' \
. U8 _3 m! Q6 p$ M
     廣大站長宣傳推廣自己的網站,經常要發佈一些宣傳廣告,如果人工,太慢太昂貴,所以理想的辦法是使用群發軟件,可現在很多網站都有驗證碼,這成為群發軟件的技術難點,而識別也就難點中的難點,好的,閒話少說,言歸正傳!5 [2 X  J8 }) G* u, `& p1 q- u

1 k5 O7 r( I# _  s    我舉的例子是比較難於識別的驗證碼,不討論不變形、不換字體、不換大小、不旋轉的驗證碼,這裡我可能不會寫出代碼,只是提供我編寫的思路,按照這個思路,我寫出的程序,比市場上出售的程序的識別率還要高很多。(有興趣的可以問我,我不想在這裡幫別人宣傳,呵呵~~)- l9 J$ _9 s3 Z8 e6 {. P
/ B: o' u" F. @( |* L8 N
    首先以數字驗證碼開始,字母的要比數字麻煩一些,不過搞清楚了數字驗證碼的識別,字母的也就不難了。
- d$ v) m& X9 ^& o: B" [3 a
3 \5 N) q# P: O6 d& C    驗證碼一般都是圖片,而且一般都是4位數,處理過程是:先分割為4個部分,然後逐一識別,由於分割比較簡單,我這裡就不說了,我這裡只說如何識別。
  U% ]9 n( {0 I  \" {+ R% _" s1 n: |7 P: P" @9 q9 j  ~
    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,為什麼要劃分為15個塊呢?先看圖!( e) ^3 S! L* S* `/ k3 F0 q7 O
○■○
  q8 V5 E' @% q+ U* i■○■- l* H' t  R- ^2 \  v
■○■
/ o* d$ ^- a5 j- j■○■
, V$ N! @( i; N0 F1 @○■○. R6 T4 \3 n( R% O, `* p
2 y4 A" h  F8 T+ _4 s2 n
○■○5 G+ X; e, s0 i" W6 x* B2 a* k. J
■■○
, d/ j; E8 _; o& H/ S○■○
9 P# N4 ~8 v! a" ^) H( p, F7 X○■○$ w0 j# G9 q# k; C9 C/ z9 M9 ~
■■■
; o- L7 p1 a& m# A$ `. u: o+ [" g. k1 a
■■■  F0 x8 S& ?( ^! C5 z, Z- t' z$ M
○○■
: [) q: S. [: r1 K8 V, W5 f) v9 T■■■+ {% p, p* Y4 |9 i3 n4 j
■○○
- {2 Y. S5 Y" S1 m1 E, b7 m■■■8 d( {) u9 z% @# L
: J  {+ x# Z  B
■■■( U& M0 d7 t9 i+ O+ h! P" j2 p+ m
○○■; j" B; F; M; j, a2 J" ^9 Y! d
■■■
1 I" `" b8 x- w0 `1 S# k○○■
7 N. n5 F$ V, w  f■■■( f) Q3 v  h2 {$ b
我先舉這4個例子吧,其餘的大家可以自己畫出來。如果做過驗證碼識別的朋友,肯定很快就明白為什麼劃分為15個塊,其實主要就是因為這樣劃分更合理,也就更能提高識別率。
- M3 {. b, M  v& C' W. N: g6 y+ n& N6 R# i
    我的方法是把需要識別的圖片,劃分為 5 行,3 列,15個塊,然後對每個塊進行計算,當每個塊裡的有效象素超過多少百分比的時候,就標記為 ■,如果沒超過就標記為○,(這裡為了顯示方便我使用了■,○,你完全可以把它標為1、0),這裡要注意一下,這裡的百分比根據字體的粗細可以取 67%,50%,33%,20%,為什麼要取這幾個數?主要和計算機的浮點數運算有關,選這幾個數,運算更快,且不容易出錯,否則計算機在進行大量計算時也是會出錯的!當然這裡,你完全可以選適合你的驗證碼圖片的百分比!!
0 _- l, }) t* y$ E# _  L& a. \, S) R$ h4 M( e6 I
    如果驗證碼不變形、不換字體、不換大小、不旋轉,我們的識別工作到這一步基本上就結束了,因為已經可以得到比較清晰的塊圖,對付大多數論壇,就已經足夠了。^_^" @6 x; @* w% K0 z2 @* V8 t
. K8 R. n# R9 Z# `0 X0 {
   如果驗證碼的變形比較大、且有很多字體、大小也不固定、且有旋轉,那麼我們經過劃分、取比率顯示後,可能會得到這樣一個圖:
' U7 N  A% t( U" k( H+ H○■○
9 |7 |/ T1 T# k7 u; G○○■
3 L+ m$ R. o+ |/ x* d. A○■○
. P- p9 `6 D  P1 H" O" d1 x8 S# A" U■○○2 F. j, ^& R5 `8 k5 B  y
■■■: m9 E8 L* H2 j
    那麼這個數字應該是什麼數字,我們需要使用排除法!排除所有不可能,在0123456789中,這個圖不可能是013456789,他只能是 :2。
3 ]. q7 U4 Z" o5 E6 [$ {
' ~$ h0 u  z7 r) F4 a# c! B# k8 k    寫過驗證碼識別的朋友可能已經明白了!是的,我們需要建立一個類似的數據庫,也就是識別庫,出現哪些圖,他就屬於那個數字。1 b9 b* E1 S2 U' P, c9 X- N; r
   再舉一個例子:) G  U* Y/ G; P8 o9 k
○■○
; L) d0 o) B0 r. P6 S7 ^1 _6 |( i, G+ b■○○, G4 a; E8 K9 T- r" @
■■■
: [! A. \( p  w# C) J. W% P; u■○■
5 b. H' @# @. K. \○■○
! d4 O( [! M+ ?) M6 I; x     這是哪個數字呢??是6,沒錯
. P- a$ O( W: D) |5 S* e- m7 X2 M
, ]: ?7 b; b* O1 H* c' M     我這裡我需要再說明一下為什麼要取5行,3列,15個塊,因為塊太多了你 的識別庫就會很大,塊太少了,就會出現很多分不清楚的塊圖。8 x& D* e: q# f; z

) L7 W3 N' Q4 ~! y9 ^( m    另外你取的百分比也需要注意,不能太大也不能太小。
! ~- R  u) t9 y! o
0 h& J, K9 Z2 {4 A9 ^6 y" W     好了,等做好自己的數據庫,這時就可以識別大部分數字了。
% Y+ L9 f, s3 l) ^- ~: v
* V: A* G/ g8 ?8 N9 K! K! W    最後還有一個問題,就是重複的問題,比如,圖片上的數字,明明是 5,可由於它的字體不是常見的字體,且發生了旋轉,最後得到這樣一個圖:
3 O7 T+ t. G8 `3 y■■■  G9 p' j& K1 d/ p& \2 v" d9 c' D
■○○
9 L! B! x7 x2 t■■■
: B* L3 k+ e: _$ W) s; V- \) @! r! c■○■
( N+ v: C( M3 ^■■■9 g2 E! |4 H# V9 C# \6 a
   在我的數據庫裡,這個塊圖,是6,也是就說識別錯誤,怎麼辦?
% \5 l1 W% D8 e# V8 C% x3 r5 D" _3 f
* X6 u; s6 T  n& {6 V1 w    我的解決方法是,在數據庫裡先把這條數據刪除因為這個是錯誤的。* T7 N7 p: p! |. ]3 T3 p
) A' d- r* @9 P$ V
    遇到這種情況,就需要進行二次處理,我的方法是:降低百分比,這時就得到了:
  b  z& t8 b  d, A) ?■■○
/ A6 E2 {# c  z* G% g+ @: ?■○○7 p, W2 h8 ]; z3 q+ Z; W. n2 L
■■○; b0 _& T4 l% q+ s* s" W
○○■2 ~6 H! b5 G$ o$ a; ]6 U( B5 H( P
■■○5 P% `$ W4 O: V6 v# e
     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 | 顯示全部樓層
驗證碼識別技術8 v% q  A9 f" o% }& ?5 @& ]
做驗證的最後一道門檻了
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

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

GMT+8, 2025-4-2 19:32

By DZ X3.5

小黑屋

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