PHP图形验证码识别

PHP图形验证码识别,第1张

1.验证码取出,转到8位或者24位位图

2.位图处理,二值化,RGB设定阀值小于阀值时为1否则为0 1为黑神色,0为白色

3.位图处理,去噪点干扰,利用二值化的位图,八方向法,一个孤立的噪点周围八个方向的点都是0白色。

4.干扰线,定义边界均为白色的区域,若干像素,让该区域在位图移动,如果进入区域内的黑色点小于某值时认定为噪点或干扰线。

5.分割。简单平均分布可以直接固定分割。复杂的有粘连的利用投影,求字符数+1个极小值或极大值。极小值之间最小距离<极小值到前一个极小值距离<极小值之间最大距离。最大距离和最小距离按照字符长度来目测,一点一点的对比得出适当的值。

虽然此法可以解决部分粘连验证码,但是对于一些变态变形的公共区域比较多的验证码是无效的。

如果想知道更多分割方法,请到百度文库,搜索验证码分割。

6.识别。建立特征库,或者利用神经网络自动学习。

然后比对,字节或者文本均可。相似度自己设定,一般在90%以上

这些理论知识都学习明白了,基本就可以去做识别验证码了。

验证码最最重要且最难的一点就是分割。

有些方法不需要分割也可以借鉴一下。

以前在远标做过你的应用应该是这样吧,用户输入手机号码,点击发送短信,用户收到验证码,输入对应的验证码 判断是否正确。

需要:

申请一个短信接口,就是点击发送验证码的时候,提交到接口给该号码下发验证码。

技术方面的实现:

1、点击获取验证码

2、程序ajax post提交到短信接口

3、短信接口服务商 接口判断用户和口令,正确后,下发短信给该号码。

4、用户输入号码,程序判断验证码是否一致。

验证码功能机制实现思路

常规的验证码实现:

a、产生一张png的图片

b、为图片设置背景色

c、设置字体颜色和样式

d、产生4位数的随机的验证码

e、把产生的每个字符调整旋转角度和位置画到png图片上

f、加入噪点和干扰线防止注册机器分析原图片来恶意注册

g、输出图片

h、释放图片所占内存

i、将验证码保存到session或是数据库

j、将和输入的验证码进行对比

短信(邮箱)验证码机制:

a、产生4-6位数的随机的验证码

b、把产生的每个字符保存到session或是数据库

c、将验证码发送到用户的手机(邮箱)

d、用户在规定时间内进行输入

e、将验证码从session或是数据库中取出

f、将和输入的验证码进行对比验证


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11199477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存