今天研究了一下验证码的识别,搜了很多资料,关键点在获取字母或者数字的特征码。
所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能
我识别的是我们学校教务处的验证码,除了”1”和”I”其他的字母或数字都有规律可寻,宽度11像素,高度14像素,字母间距2像素,X偏移7像素,Y偏移7像素。
由于没有做容错特征码,正确率比较低,在20%左右。
过程:
1、切图
把获取到的图片每个字母或者数字完整切下来
2、图片二值化,观察
将验证码图片二值化
echo '<br><img src="1480566107.jpg"><br><br>';
getHec("1480566107.jpg");
function getHec($imagePath) {
$res = imagecreatefromjpeg($imagePath);
$size = getimagesize($imagePath);
for ($i = 0; $i < $size[1]; ++$i) {
for ($j = 0;