链家登录 验证码识别
最近在研究如何识别验证码,决定从简单的验证码识别开始。于是在百度上搜“登录” 找到这个不会倾斜 只是数字的验证码。 是链家的登录。
https://passport.lianjia.com/cas/login?service=http%3A%2F%2Fbj.lianjia.com%2F

思路为 将验证码转化为黑白,然后分隔单个数字, 应为每个数字的大小和字体都是固定的 所以只需要储存好 0-9的图形数据就行了
第一步将验证码转化为黑白
这时麻烦就出来了 , 这是什么鬼 居然还有噪点 。 开始还以为是我转化时候产生的问题 ,结果是因为图片格式为jpg jpg是有损保存图片的 难免有噪点, 只是小点颜色比较浅,肉眼感觉不出来 。
看来不能单靠php内置函数转化为黑白了, 只有手动解决。 于是我遍历所有像素点, 将所有浅色点 都转化为白色, 非浅色点都转化为黑色。并把边框去掉 。
由于每个字符大小 位置固定 ,顺便将四个字符取出来
得到下图
这时候问题就变的简单起来了, 把每个字符的黑白像素点用数组保存起来 。 如黑色为1 白色为0。 将数组输出到浏览器 ,然后手动把得到的数组和字符关联储存起来。

要实现识别验证码 ,直接对比本地储存数据。
大功告成。
测试了十多个,发现都正确 ,识别率百分之百。



One Response so far.