一、验证码的基本知识
验证码的主要目的是强制人机交互来抵御机器自动化攻击的。大部分的验证码设计者并不得要领,不了解图像处理,机器视觉,模式识别,人工智能的基本概念。
设计的比较好的验证码,比如Yahoo,Google,Microsoft等很难识别。而国内Tencent的中文验证码虽然难,但算不上好。
某些专家认为,不存在一种用计算机表示的信息不能被计算机识别的情况,所以,对验证码来说,所有验证码都是可以识别出来的。
人工智能,模式识别,机器视觉,图像处理的基本知识
1.读取验证码图像:把各种验证码图像解码,得到平面坐标表示的数据,很多开源库可以用来做这一步。
2.前处理:验证码识别的预处理主要是去除图像上的干扰,找出字符区域。对于连接在一起的字符,进行分割。对于复杂的验证码,分割这一步非常难处理。对于单个字符,OCR技术的识别率还是能达到比较高的。
3.训练:对于模式识别,主要是对样本进行特征提取,然后保存下来。不是训练的样本越多越好。过学习,泛化能力差的问题可能在这里出现。这一步不是必须的,有些识别算法是不需要训练的。
4.识别:对于模式识别来说,主要是验证码字符与训练的样本的特征匹配。
模式识别:对事物或者现象的某种表示方式(数值,文字,我们这里主要想说的是数值),通过一些处理和分析,来描述,归类,理解,解释这些事物,现象及其某种抽象。
验证码识别的难易:
1、字符间粘连越厉害的验证码越难识别
2、干扰越没有规律的验证码越难识别;
2、字形数目越少越容易识别(一个字符可能有多种字行)
验证码识别的步骤:
1、提取验证码图片样本,构造识别库;
2、对要识别的验证码做预处理(去噪、去干扰、分割等);
3、识别(与构造的识别库做比较);