tensorflow2.0实现验证码识别功能的逻辑过程和具体代码

[数据] 2024-03-28 圈点818

摘要:tensorflow2.0实现验证码识别功能的逻辑过程和具体代码

tensorflow2.0实现验证码识别功能的逻辑过程和具体代码


tensorflow2.0机器人功能已经相当完美了,尤其是识别方面已经应用得相当普遍。下面说一下验证码识别功能的逻辑过程以及在做验证码识别过程中的难点和有待解决的问题。

我做的这个tensorflow2的验证码识别的具体制作方法和逻辑思维如下。


既然是验证码识别,那就首先仔细观察验证码的特点,我想要实现自动输入验证码的这个地方的验证码还是很有特点的,分析得到如下内容:


1,只有4位数字

2,只有一种字体

3,数字的颜色会变,背景图的颜色也会变,数字的颜色和背景图的颜色的区别比较大,背景图还有干扰线条但比较细,还有干扰的颜色点(像素值比较独立),图片的四周有1px的纯黑边。

4,数字所在位置会偏移,会有一定的旋转,但偏移量不大,但旋转最大约45度,在切割时可能只有半个数字,初步判断基本上可以满足按特定的长宽像素值切割。



经过以上分析,对于处理的逻辑基本上就已经出来了。


提示:4位数字的验证码,最小0000,最大9999,所以有10000种验证码,


方法1,直接用大数据形式直接获取上百万/千万个这样的整体的验证码数据,然后验证码图片进行二值处理获得背景空白的验证码体,然后对每一个验证码进行分类,约10000种验证码,然后进行训练学习。识别的时候,直接获取验证码,进行同样的"验证码图片进行二值处理获得背景空白的验证码体",然后将其进行识别获取整体的4个数字的验证码,然后再自动输入。


方法2,获取几万个整体验证码,然后图片进行二值处理获得背景空白的验证码体,然后每一个验证码进行数字切割分成4个数字,然后对每一个数字进行分类,生成0-9共10个数字,然后对这10个数字进行分别学习。识别的时候,也一样的操作,先获取到验证码,对验证码进行相同的"二值处理获得背景空白的验证码体,然后每一个验证码进行数字切割分成4个数字,然后对每一个数字进行"识别,然后再组合成验证码,再自动输入。


难点分析:

1,数据集的收集和制作这是非常大的工作量。

2,二值的处理过程中,如何取出背景和数字验证码的区别,且只取到数字验证码的颜色。



实际分析:

方法1:优点不需要对验证码切割,但需要的验证码样本比较多,10000种,假设每种样本1000个,也就是要1000万个验证码,然后要进行标记,量挺大。4个数字的验证码,1000种形态,感觉样品数量也挺大,识别率也会非常大了。

方法1:10个数字,每种数字1000个样本,约10000个数据集就可以了,可以分析到一个数字1000种变化,基本上应该满足了绝大部分的样本情况,预计识别率应该非常大,就算部分验证码只有一半的情况下,识别率也会挺高。


其实这里还有更多好的逻辑方法:比如,方法2是用固定的像素值进行切割,如果可以用程序的方法对数字进行更符合“刚好切割到数字周围”,然后对对样本中的数字进行旋转得到比较正的数字,将会直线提升识别率,但考虑到技术难题,暂时不考虑。如果有这方面的逻辑方法也可以分享给我。


那就按照方法2的逻辑方法进行验证码识别处理吧。


经过最后的处理,验证码识别的数据集花了好几天的时间整理,tensorflow学习很快,最后的识别率超过98%,非常OK!


tensorflow  验证码识别  数据  

感谢反馈,已提交成功,审核后即会显示