- 浏览: 620290 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- 生活 (2)
- c# (37)
- 技术 (3)
- 400电话 (0)
- 400常见问题 (0)
- 400资费 (0)
- html (7)
- css (0)
- 数据库 (7)
- javascript (16)
- php (33)
- asp.net mvc2 (10)
- mysql (9)
- C# 3.0 LinQ (10)
- vs2005或vs2008 (4)
- flash and as3 (7)
- fms (1)
- dedeCMS (11)
- java (33)
- j2me (1)
- swing (1)
- c++ (1)
- jquery easyui (3)
- jquery (5)
- android (29)
- MongoDB (9)
- VtigerCRM (1)
- test (0)
- linux (30)
- nutch (2)
- SqlServer数据库 (2)
- 数据检索 (2)
- java抓取 (11)
- 乐天 (1)
- 淘宝 (1)
- Silverlight4.0 (6)
- sphinx实时索引 (5)
- ecshop (9)
- codeigniter(CI) (3)
- axure6 (1)
- 京东店铺装修教程 (2)
- xpath (1)
- joomla (2)
- bpm (1)
- Bootstrap (2)
- knockout (4)
- ecstore (4)
- css3 (1)
- 微信 (2)
- dede (0)
- soa_edi (1)
- odoo (0)
- web (1)
最新评论
-
骑着蜗牛超F1:
在ie6下报了个stack overflow at line ...
兼容ie6和ie7 的16进制码流在html中显示为图片代码(base64) -
冰之海洋:
好像少了一句代码吧? FloatingFunc.show(th ...
android 一直在最前面的浮动窗口效果 -
yanzhoupuzhang:
连接有问题!
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000) -
whatable:
唉,楼主你都没有搞清楚重量级和轻量级。。。。既然引用了SWT, ...
java swing 内置浏览器打开网页显示flash图表-swt Browser应用 -
yy_owen:
我晕啊,你链接的什么内容额,我要的iis,你链接个视频什么意思 ...
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
由于现在很多网站,为了加强安全性,以及防止程序的自动操作网站,都加入的了验证码技术。但却给广大站长推广宣传网站带来的麻烦。所以我准备写这篇关于验证码识别技术的文章,不足之处在所难免!本人从来不写东西,今天为了想落伍才写了!
广大站长宣传推广自己的网站,经常要发布一些宣传广告,如果靠人工,太慢太昂贵,所以理想的办法是使用群发软件,可现在很多网站都有验证码,这成为群发软件的技术难点,而识别也就难点中的难点,好的,闲话少说,言归正传!
我举的例子是比较难于识别的验证码,不讨论不变形、不换字体、不换大小、不旋转的验证码,这里我可能不会写出代码,只是提供我编写的思路,按照这个思路,
我写出的程序,比市场上出售的程序的识别率还要高很多。(有兴趣的可以问我,我不想在这里帮别人宣传,呵呵~~)
首先以数字验证码开始,字母的要比数字麻烦一些,不过搞清楚了数字验证码的识别,字母的也就不难了。
验证码一般都是图片,而且一般都是4位数,处理过程是:先分割为4个部分,然后逐一识别,由于分割比较简单,我这里就不说了,我这里只说如何识别。
我的方法是把需要识别的图片,划分为 5 行,3 列,15个块,为什么要划分为15个块呢?先看图!
○■○
■○■ 对应数字0
■○■
■○■
○■○
○■○
■■○
○■○ 对应数字1
○■○
■■■
■■■
○○■
■■■ 对应数字2
■○○
■■■
■■■
○○■
■■■ 对应数字3
○○■
■■■
我先举这4个例子吧,其余的大家可以自己画出来。如果做过验证码识别的朋友,肯定很快就明白为什么划分为15个块,其实主要就是因为这样划分更合理,也就更能提高识别率。
我的方法是把需要识别的图片,划分为 5 行,3 列,15个块,然后对每个块进行计算,当每个块里的有效象素超过多少百分比的时候,就标记为
■,如果没超过就标记为○,(这里为了显示方便我使用了■,○,你完全可以把它标为1、0),这里要注意一下,这里的百分比根据字体的粗细可以取
67%,50%,33%,20%,为什么要取这几个数?主要和计算机的浮点数运算有关,选这几个数,运算更快,且不容易出错,否则计算机在进行大量计算时
也是会出错的!当然这里,你完全可以选适合你的验证码图片的百分比(http://www.my400800.cn
)!!
如果验证码不变形、不换字体、不换大小、不旋转,我们的识别工作到这一步基本上就结束了,因为已经可以得到比较清晰的块图,对付大多数论坛,就已经足够了。^_^
如果验证码的变形比较大、且有很多字体、大小也不固定、且有旋转,那么我们经过划分、取比率显示后,可能会得到这样一个图:
○■○
○○■
○■○
■○○
■■■
那么这个数字应该是什么数字,我们需要使用排除法!排除所有不可能,在0123456789中,这个图不可能是013456789,他只能是 :2。
写过验证码识别的朋友可能已经明白了!是的,我们需要建立一个类似的数据库,也就是识别库,出现哪些图,他就属于那个数字。
再举一个例子:
○■○
■○○
■■■
■○■
○■○
这是哪个数字呢??是6,没错
我这里我需要再说明一下为什么要取5行,3列,15个块,因为块太多了你 的识别库就会很大,块太少了,就会出现很多分不清楚的块图。
另外你取的百分比也需要注意,不能太大也不能太小。
好了,等做好自己的数据库,这时就可以识别大部分数字了。
最后还有一个问题,就是重复的问题,比如,图片上的数字,明明是 5,可由于它的字体不是常见的字体,且发生了旋转,最后得到这样一个图:
■■■
■○○
■■■
■○■
■■■
在我的数据库里,这个块图,是6,也是就说识别错误,怎么办?
我的解决方法是,在数据库里先把这条数据删除因为这个是错误的。
遇到这种情况,就需要进行二次处理,我的方法是:降低百分比,这时就得到了:
■■○
■○○
■■○
○○■
■■○
OK,经过降低百分比,图片就由“6”又变为“5”了,呵呵~~~由于降低了百分比,我们需要再建立一个识别库的来存储这些数据。
这只是个思路
仅供思考
发表评论
-
Java和C#运行命令行并获取返回值 运行bat文件
2015-08-04 10:45 1273Java运行命令行的例子 import java.io.B ... -
c#操作excel后关闭excel.exe的方法
2013-04-10 10:47 874。网上的一种说法,关闭range,关闭worksheet,关 ... -
ddd
2012-05-24 17:30 0CREATE TABLE IF NOT EXISTS `s ... -
C#里 如何序列化与反序列化 hashtable Dictionary及C#连接mysql数据库
2011-08-19 13:24 1336using System.IO; using System. ... -
C# 压缩和解压web空间中的所有文件
2011-08-18 17:20 842using System; using ICSharpC ... -
C# 压缩和解压web空间中的所有代码
2011-08-18 17:17 647using System; using ICSharpCod ... -
自己制作软键盘的几个关键技术解析
2011-05-26 08:40 1035在嵌入式应用和一些安全软件中经常需要不通过物理键盘输入,虽然微 ... -
rtertert
2011-03-22 17:29 0fffffffffffffffffffffffff ... -
C#发送邮件时在正文中插入图片(邮件中直接包含图片)
2011-01-17 16:12 2356#region 发送邮件 ... -
c#生成Excel,可建立sheet,设定sheet名称,调整列宽度
2010-12-17 16:18 2666Excel生成类 ExcelRW.cs usin ... -
关于AutoResetEvent的使用
2010-12-16 17:21 895AutoResetEvent 允许线程通过发信号互相通信。 ... -
C# 取得函数的调用关系
2010-11-25 08:47 1549如何取得C ... -
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
2010-11-18 09:47 91270iis7.0官方安装包下载 iis7时微软为新一代web服务 ... -
简易的文件磁盘管理操作2(文件、文件夹的编辑创建删除移动拷贝重命名)
2010-11-15 17:22 882using System; using System.Dat ... -
简易的文件磁盘管理操作1(文件、文件夹的编辑创建删除移动拷贝重命名)
2010-11-15 17:21 944using System; using System.D ... -
Image和byte[]之间的转换
2010-11-11 17:05 1173image到byte[] 用到memoryStream类 ... -
.net framework--程序打包--打包.net运行库
2010-10-17 21:05 1653VS03默认是不能把.net运行库打包到自己要发布 ... -
WinForm最简单两GridView同步滚动
2010-09-10 10:28 1646今天在园子里看到一个人问,如何让两个DataGridView保 ... -
直接用aspx页面生成的html文件(不用建立自己的html模板)
2010-09-10 09:29 1381public static string Rend ... -
facebook代理软件
2010-09-09 16:32 203facebook代理软件
相关推荐
易语言论坛验证码识别.rar 易语言论坛验证码识别.rar 易语言论坛验证码识别.rar 易语言论坛验证码识别.rar 易语言论坛验证码识别.rar 易语言论坛验证码识别.rar 易语言论坛验证码识别.rar 易语言论坛验证码识别.rar ...
Microsoft Captcha Decoder 验证码识别技术
一篇完整的验证码识别技术,能够帮助你应付一般的验证码的识别
验证码识别源码验证码识别源码验证码识别源码验证码识别源码验证码识别源码验证码识别源码验证码识别源码
验证码识别技术研究 PDF 研究性文档 可以研究下
本设计为基于MATLAB不变矩的数字验证码识别系统,带一个GUI界面。可以识别带有噪声的数字验证码。流程为:读取图片,用颜色分量的方法将噪声去除,得到去噪后图像,利用连通域法进行字符分割,提取到每个字符的Hu...
验证码图像分割 图像去噪 图像识别 个人总结的
java验证码识别示例
验证码识别软件 亦思验证码识别 能对大部分验证码的背景去除 识别验证码的字符
vb验证码识别 vb验证码识别 vb验证码识别
数字验证么识别技术的视频演示,数字验证码主要是做好点阵(或者叫字库),然后进行读屏识别.
可以自动识别网站验证码的技术,有自动学习功能,全套源码,delphi的源码
动网验证码识别程序,本程序采用OCR识别技术,能有效识别动网验证码,验证码识别率高达84%,单个字符识别率高达95%。
针对传统的基于模板匹配和字符结构的验证码识别技术对字符大小、倾斜等因素非常敏感, 提出了一种基 于字符形状特征的验证码识别方法, 该方法是模拟人眼通过事物形状特征来识别事物。通过相应算法提取字符特 征, 然后...
这是一个MATLAB系列视频,共围绕30个计算机视觉和机器学习的实战项目展开。十分适合作为课程作业或是...07_基于不变矩的数字验证码识别,适合本科或部分研究生课程设计。 涉及到机器学习相关内容。 #2021#验证码识别#
基于深度学习字符型图片数字验证码识别完整过程及Python实现(深度学习学习、实现数字、字符模型训练、详细介绍附源码) 基于深度学习字符型图片数字验证码识别完整过程及Python实现(深度学习学习、实现数字、字符...
vb的验证码识别方法,非常详细。学过的同学肯定能做到举一反三的效果。
高效的验证码识别技术与验证码分类思想.pdf 中国科学院研究生院信息安全国家重点实验室,北京 100049 :验证码图片是论坛类网站用以阻止自动化程序恶意行为的重要人机区分技术,其设计和实用安全性直接涉及到...
验证码识别(以最新Discuz验证码和PhpWind验证码的识别为例)。介绍验证码识别的基本方法及识别步骤