首页

文章

如何利用Python做简单的验证码识别

发布网友 发布时间:2022-04-20 04:37

我来回答

1个回答

热心网友 时间:2022-04-07 13:12

最近在折腾验证码识别。最终的脚本的识别率在92%左右,9000张验证码大概能识别出八千三四百张左右。好吧,其实是验证码太简单。下面就是要识别的验证码。

 

我主要用的是Python中的PIL库。

首先进行二值化处理。由于图片中的噪点颜色比较浅,所以可以设定一个阈值直接过滤掉。这里我设置的阈值是150,像素大于150的赋值为1,小于的赋为0.

def set_table(a):
table = []
for i in range(256):        if i < a:
table.append(0)        else:
table.append(1)    return table

img = Image.open("D:/python/单个字体/A"+str(i)+".jpg")
pix = img.load()#将图片进行灰度化处理img1 = img.convert('L')#阈值为150,参数为1,将图片进行二值化处理img2 = img1.point(set_table(150),'1')  1234567891011121314151617

处理后的图片如下。

阈值不同产生的不同效果:


 

接下来对图片进行分割。遍历图片中所有像素点,计算每一列像素为0的点的个数(jd)。对于相邻两列,若其中一列jd=0,而另一列jd!=0,则可以认为这一列是验证码中字符边界,由此对验证码进行分割。这样分割能达到比较好的效果,分割后得到的字符图片几乎能与模板完全相同。

(Width,Height) = img2.size
pix2 = img2.load()
x0 = []
y0 = []for x in range(1,Width):
jd = 0
# print x
for y in range(1,Height):        # print y
if pix2[x,y] == 0:
jd+=1
y0.append(jd)    if jd > 0:
x0.append(x)#分别对各个字符边界进行判断,这里只举出一个        for a in range(1,Width):    if (y0[a] != 0)&(y0[a+1] != 0):
sta1 = a+1
break123456789101112131415161718192021

分割完成后,对于识别,目前有几种方法。可以遍历图片的每一个像素点,获取像素值,得到一个字符串,将该字符串与模板的字符串进行比较,计算汉明距离或者编辑距离(即两个字符串的差异度),可用Python-Levenshtein库来实现。

我采用的是比较特征向量来进行识别的。首先设定了4个竖直特征向量,分别计算第0、2、4、6列每一列像素值为0的点的个数,与模板进行比较,若小于阈值则认为该字符与模板相同。为了提高识别率,如果通过竖直特征向量未能识别成功,引入水平特征向量继续识别,原理与竖直特征向量相同。

另外,还可以通过局部特征进行识别。这对于加入了旋转干扰的验证码有很好效果。由于我写的脚本识别率已经达到了要求,所以并没有用到这个。

最后的结果是这样的:

最终在模板库只有25条的情况下,识别率在92%左右(总共测试了一万六千张验证码)。好吧,只能说验证码太简单。。

以上。

八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 自学用python制作二维码,重点学习什么内容? 如果通过扫二维码就可以出现一段文字,这个要怎么... python怎么把图片生成二维码? python3 使用selenium过程中,遇到验证码,请问如... python二维码问题 python3 怎么解析验证码 python怎么识别条形码 python如何通过列表转换为二维码? Python生成二维码,总是报错,怎么解决 怎样用python解析二维码? pythonwxpy无法识别二维码 求大神帮助 python 怎么识别解析二维码 python如何识别验证码 毛豆有什么成份 毛豆的营养价值是什么 青豆和毛豆的区别 青豆与毛豆有区别吗 毛豆的辨别好坏 毛豆有哪些种类 “毛豆”是什么豆呀 大豆和毛豆的区别 华为手机老是卡顿怎么办 怎样用python解析二维码 python怎么样把淘宝登录二维码下载到本地 求推荐一本大学Python教材 小米8青春版屏幕更换怎么换 小米8se单独换外屏 小米8外屏碎了可以单独更换吗 大崔师傅换屏很便宜小米8手机换屏多少钱,小米8手... 华为手机如何设置减少卡顿 钢结构设计软件有哪些?比较好用的那种? 像cad里的钢结构计算,硂结构计算,辅助计算等那一... 理正结构工具箱可以计算钢结构吗 WIN7系统上不能使用钢结构截面特性计算工具 PKPM2010使用钢结构工具箱的时候,不管是檩条计算... 理政结构设计工具箱软件安装好之后没法计算怎么办 询问下在实际中,用MTSTOOL工具箱进行钢结构节点设... CAD钢结构工具箱 算料插件 初期是什么意思 初期阶段是什么意思? 历史上所谓某朝代初年与初期有什么区别?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com