`
pcajax
  • 浏览: 2112833 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C#联通新版验证码识别的实现[转]

 
阅读更多
以前写了篇 联通充值卡自动充值的实现,最近发现联通官网改版了,随便看了下发现新版的验证码和以前的不同,发了点时间研究了下他的识别码,它现在的验证码如下

现在将识别步骤说下

1,转换灰度图片

2,清除2px的边框

3,分割验证码个数 (4)

4,生成字模库

经过以上步骤,可以得到下面这个效果

下面为部分实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public String GetCheckString(Bitmap bitmap) {
           UnCodebase ud = new UnCodebase(bitmap);
           ud.GrayByPixels();
           ud.ClearPicBorder(2);
           ud.CutMap(14, 15, 0, 0);
           bitmap = ud.bmpobj;
         //  bitmap = ud.ClearNoise(128, 1);
           String chkcode = "";
           Bitmap[] arrmap = ud.SplitImg(bitmap, 4, 1);
           foreach (Bitmap item in arrmap) {
               String str = ud.GetCodebybitmap(item, 128);
               Boolean isEques = false;
               foreach (String strss in code) {
                   String[] a = strss.Split(':');
                   if (str == a[1]) {
                       chkcode += a[0];
                       isEques = true;
                       break;
                   }
               }
               if (!isEques) {
                   String strCurrent = "";
                   double max = 0.0;
                   foreach (String strss in code) {
                       int len1, len2, min, count = 0;
                       String[] a = strss.Split(':');
                       len1 = a[1].Length;
                       len2 = str.Length;
                       min = len1;
                       if (min > len2) {
                           min = len2;
                       }
                       for (int i = 0; i < min; i++) {
                           if (str[i] == a[1][i]) {
                               count++;
                           }
                       }
                       double currrent = (count * 100.0 / min);
                       if (max < currrent) {
                           max = currrent;
                           strCurrent = a[0].Trim();
                       }
                   }
                   chkcode += strCurrent.Trim();
               }
           }
           return chkcode;
       }

通过这些处理后,识别成功率在90+%以上,

下面附上测试地址,代码  100%C#实现,方便asp.net调用,如果是C/C++实现 asp.net 调非托管的有些麻烦,非得放到System32 或是一个绝对路径下麻烦

测试地址

http://www.fox163.com/UniconTest.aspx 

--幸福海

博客地址:http://www.cnblogs.com/ningqhai/

分享到:
评论

相关推荐

    C#联通新版验证码识别的实现

    以前写了篇 联通充值卡自动充值的实现,近发现联通官网改版了,随便看了下发现新版的验证码和以前的不同,发了点时间研究了下他的识别码,它现在的验证码如下  现在将识别步骤说下  1,转换灰度图片  2,...

    C#源码图片验证码识别

    C#源码图片验证码识别,代码有详细说明,是学习验证码识别的一个不错的参考示例。

    c#识别验证码,识别验证码

    c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码

    c# 验证码识别 OCR图片识别 准确率非常高

    通过网上的一些资料结合,用c#写的验证码识别器,里面有代码,

    C#实现验证码识别、发票标号识别、图片识别.zip

    C#实现验证码识别、发票标号识别、图片识别.zip

    OCR验证码识别C#代码

    OCR验证码识别C#代码 OCR验证码识别C#代码 OCR验证码识别C#代码

    c#实现验证码识别的一个例子

    c#实现验证码识别的一个例子,只能识别规则的验证码。仅供学习。

    使用C#的aforge类库识别验证码实例

    主要介绍了使用C#的aforge类库识别验证码实例,aforge类库是一个非常强大的类库,包括计算机视觉与人工智能、图像处理、神经网络、遗传算法、机器学习、机器人等领域,需要的朋友可以参考下

    C#实现的简单验证码识别实例

    最近做一个小玩意需要识别验证码,之前从来没有接触过识别验证码这块,这可难倒了我。所以,在网上搜索如何识别验证码,许多前辈写的博文教会了我。怕以后又忘记了,故此写篇随笔记录。 我要识别的验证码是一种非常...

    C#图片验证码字母或数字通用识别代码.rar

    C#图片验证码字母或数字通用识别代码,各种图片验证码都可以识别。识别速度快速,无需等待,立即返回。C#图片验证码字母或数字通用识别代码

    C#识别验证码

    用C#实现了对验证码的识别与读取,开发环境是VS2005.

    C#中验证码识别 c#

    C#中验证码识别 VS2005/VS2008下测试通过 c# 实现验证码的程序 WinForm程序 效果不错

    C#验证码识别源码

    C#验证码识别源码,非常不错的一个验证码识别代码,可供大家借鉴学习。

    c# 验证码识别源代码

    只要你有一定的c#编程基础,只要半天时间仔细阅读这份代码,你就可以从完全不懂验证码识别的菜鸟变成一个能破解一些傻瓜验证码的高手。 希望尊重他人劳动成果,不要上传此代码到别的地方。谢谢!

    Captcha_C#_识别_验证码识别_

    验证码识别C#/.NET源代码,达到单个图片识别时间小于200ms,500个样本人工统计正确率为95%。

    C#图片验证码识别技术.zip

    C#图片验证码识别技术 C#图片验证码识别技术 C#图片验证码识别技术 C#图片验证码识别技术 C#图片验证码识别技术 C#图片验证码识别技术 C#图片验证码...

    C#验证码识别

    C#验证码识别,能识别简单的验证码,复杂的很难识别出

    C#验证码识别模块

    C#验证码识别模块 各类验证码识别都可以支持

    C# 验证码识别

    C# 验证码识别

    C# 验证码识别多种图像噪处理

    验证码识别图像去噪声。 本程序主要用于图片处理 主要应用:通过自己整理可以用于验证码的自动识别。 功能介绍: 噪声模型 均值与中值 灰度形态 小波变换 高斯滤波 参数统计等

Global site tag (gtag.js) - Google Analytics