5.1无聊花半天时间做的验证码的识别工具,对特定验证码的识别率超99%,纯分享,欢迎大家指导改进

hb1122 2014-05-07 11:11:36
加精
如题
代码粗糙,不足之处请多指点,谢谢!
如果这段代码能帮到大家,实属荣幸。
也欢迎大家指导交流。。。

本方法使用实习模式,即非智能识别,新的验证码内容需要进行学习才能进行准确识别
本流程实现原理
1、彩色转单色
2、设置颜色过滤值(0-255),滤掉浅色值
3、按列行顺序取独立的像素单元
4、对取到的值单元和字典进行匹配(因测试用码取值成功率高,只进行简单的像素点的匹配)

开发时的测试验证码样式




话不多说,直接贴码
最下方有本项目的下载链接,有兴趣的盆友可以下载研究
放不下码,转2楼贴码


CaptchTextManager.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Xml.Serialization;

namespace CaptchaExtractor
{
public static class CaptchTextManager
{
/// <summary>
/// 学习,存在大小写存储问题
/// </summary>
/// <param name="value"></param>
/// <param name="Text"></param>
public static void Learn(List<Point> value, String Text)
{
if (value != null && !String.IsNullOrEmpty(Text))
{
String Dir = Application.StartupPath + @"\dic\";
String Path = Application.StartupPath + @"\dic\" + Text + ".xml";
if (!Directory.Exists(Dir))
{
Directory.CreateDirectory(Dir);
}
if (File.Exists(Path))
{
File.Delete(Path);
}
using (FileStream newfs = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Write))
{
XmlSerializer newS = new XmlSerializer(typeof ( CaptchaValue));

CaptchaValue newv = new CaptchaValue()
{
Text = Text ,
Value = value
};
newS.Serialize(newfs, newv);
}
}
}

/// <summary>
/// 取得当前所有的验证码字典
/// </summary>
/// <returns></returns>
public static List<CaptchaValue > GetAll()
{
List<CaptchaValue> res = new List<CaptchaValue>();
String Path = Application.StartupPath + @"\dic\";
if (Directory.Exists(Path))
{
String[] allFile = Directory.GetFiles(Path);
XmlSerializer newS = new XmlSerializer(typeof(CaptchaValue));
foreach (String filePath in allFile)
{
using (FileStream newfs = new FileStream(filePath , FileMode.OpenOrCreate, FileAccess.Read))
{
try
{
res.Add ((CaptchaValue ) newS.Deserialize(newfs));
}
catch (Exception ex)
{

}
}
}
}
return res;
}
}
}


CaptchaValue.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing ;

namespace CaptchaExtractor
{
/// <summary>
/// 验证码字典存储内容
/// </summary>
[Serializable ()]
public class CaptchaValue
{
/// <summary>
/// 文字
/// </summary>
public String Text{get;set;}
/// <summary>
/// 点阵
/// </summary>
public List<Point > Value{get;set;}
}
}




项目下载链接
...全文
4769 105 打赏 收藏 转发到动态 举报
写回复
用AI写文章
105 条回复
切换为时间正序
请发表友善的回复…
发表回复
悔说话的哑巴 2014-06-04
  • 打赏
  • 举报
回复
M依然 2014-06-03
  • 打赏
  • 举报
回复
LZ哥也。你不知道把项目放到网盘里面或者csdn里面。然后给链接么
kingredapple 2014-05-27
  • 打赏
  • 举报
回复
留个爪子,有空再来看看
赵4老师 2014-05-22
  • 打赏
  • 举报
回复
在“云人件”面前,任何验证码都形同虚设!
波-仔 2014-05-13
  • 打赏
  • 举报
回复
mark 学习一下
朝露昙花 2014-05-12
  • 打赏
  • 举报
回复
感谢分享,。。。。。
jiaoshiyao 2014-05-12
  • 打赏
  • 举报
回复
这验证码 太简单 用OCR组件就可以识别的吧。。。
金色蜘蛛 2014-05-12
  • 打赏
  • 举报
回复
学习了,不错的分享
save4me 2014-05-11
  • 打赏
  • 举报
回复
谢谢分享~~
Mit1208 2014-05-10
  • 打赏
  • 举报
回复
下载地址有问题啊,无法打开,迅雷也无法下载
valid25f 2014-05-10
  • 打赏
  • 举报
回复
回复一下以示鼓励
valid26 2014-05-10
  • 打赏
  • 举报
回复
学习 学习 谢谢
valid27 2014-05-10
  • 打赏
  • 举报
回复
看样子还可以
kszpig 2014-05-10
  • 打赏
  • 举报
回复
半天能写出这么多 了不起
valid29 2014-05-10
  • 打赏
  • 举报
回复
赞一个 谢谢分享
validf9 2014-05-10
  • 打赏
  • 举报
回复
验证妈不好识别啊。。。。。。。。。。。。。。。。。
零点突袭1 2014-05-09
  • 打赏
  • 举报
回复
下载链接有问题啊,大哥
dsd999 2014-05-09
  • 打赏
  • 举报
回复
不错,谢谢分享。
  • 打赏
  • 举报
回复
路过,顶!!!!!!!好像看不懂。
jrl5365 2014-05-09
  • 打赏
  • 举报
回复
mark
加载更多回复(80)

110,580

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧