识别数字验证码

首先我们准备素材,4张验证码图片如下:

   

第一步:

  打开图像。

im = Image.open('temp1.jpg')
 

第二步:

  把彩色图像转化为灰度图像。彩色图像转化为灰度图像的方法很多,这里采用RBG转化到HSI彩色空间,采用I分量。

imgry = im.convert('L')
 

灰度看起来是这样的       

第三步:

  需要把图像中的噪声去除掉。这里的图像比较简单,直接阈值化就行了。我们把大于阈值threshold的像素置为1,其他的置为0。对此,先生成一张查找表,映射过程让库函数帮我们做。

threshold = 140
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:

阈值为什么是140呢?试出来的,或者参考直方图。

映射过程为

 out = imgry.point(table,'')

此时图像看起来是这样的

第四步:

  将图片中的字符转化为文本。采用pytesser 中的image_to_string函数

text = image_to_string(out)
第五步:
  优化。根据观察,验证码中只有数字,并且上面的文字识别程序经常把8识别为S。因此,对于识别结果,在进行一些替换操作。

#由于都是数字
#对于识别成字母的 采用该表进行修正
rep={'O':'',
'I':'','L':'',
'Z':'',
'S':''
   for r in rep:
text = text.replace(r,rep[r])
好了,text中为最终结果。
7025
0195
7039
6716

注:程序需要PIL库pytesser库支持。
 
完整代码:
import Image
import ImageEnhance
import ImageFilter
import sys
from pytesser import * # 二值化
threshold = 140
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1) #由于都是数字
#对于识别成字母的 采用该表进行修正
rep={'O':'',
'I':'','L':'',
'Z':'',
'S':''
}; def getverify1(name): #打开图片
im = Image.open(name)
#转化到亮度
imgry = im.convert('L')
imgry.save('g'+name)
#二值化
out = imgry.point(table,'')
out.save('b'+name)
#识别
text = image_to_string(out)
#识别对吗
text = text.strip()
text = text.upper(); for r in rep:
text = text.replace(r,rep[r]) #out.save(text+'.jpg')
print text
return text
getverify1('v1.jpg')
getverify1('v2.jpg')
getverify1('v3.jpg')
getverify1('v4.jpg')

完整代码

使用python以及工具包进行简单的验证码识别的更多相关文章

  1. 使用python及工具包进行简单的验证码识别

    相信大家利用 Python 写的爬虫应该遇到过要输入验证码的尴尬局面,又或者写了个自动填充表单的小程序,结果就卡在了验证码上. 在ctf中有⼀一些题⽬目,本身有弱验证码识别绕过,那么我们怎么解决呢? ...

  2. 基于SVM的python简单实现验证码识别

    验证码识别是一个适合入门机器学习的项目,之前用knn 做过一个很简单的,这次用svm来实现.svm直接用了开源的库libsvm.验证码选的比较简单,代码也写得略乱,大家看看就好. 1. 爬取验证码图片 ...

  3. Flask学习之旅--用 Python + Flask 制作一个简单的验证码系统

    一.写在前面 现在无论大大小小的网站,基本上都会使用验证码,登录的时候要验证,下载的时候要验证,而使用的验证码也从那些简简单单的字符图形验证码“进化”成了需要进行图文识别的验证码.需要拖动滑块的滑动验 ...

  4. 使用TensorFlow 来实现一个简单的验证码识别过程

    本文我们来用 TensorFlow 来实现一个深度学习模型,用来实现验证码识别的过程,这里识别的验证码是图形验证码,首先我们会用标注好的数据来训练一个模型,然后再用模型来实现这个验证码的识别. 1.验 ...

  5. Python+Request库+第三方平台实现验证码识别示例

    1.登录时经常的出现验证码,此次结合Python+Request+第三方验证码识别平台(超级鹰识别平台) 2.首先到超级鹰平台下载对应语言的识别码封装,超级鹰平台:http://www.chaojiy ...

  6. 简单的验证码识别(opecv)

    opencv版本: 3.0.0 处理验证码: 纯数字验证码 (颜色不同,有噪音,和带有较多的划痕) 测试时间 :  一天+一晚 效果: 比较挫,可能是由于测试的图片是在太小了的缘故. 原理:  验证码 ...

  7. Pyhthon爬虫其之验证码识别

    背景 现在的登录系统几乎都是带验证手段的,至于验证的手段也是五花八门,当然用的最多的还是验证码.不过纯粹验证码识已经是很落后的东西了,现在比较多见的是滑动验证,滑动拼图验证(这个还能往里面加广告).点 ...

  8. python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  9. 使用tensorflow搭建自己的验证码识别系统

    目录 准备验证码数据 保存为tfrecords文件 验证码训练 学习tensorflow有一段时间了,想做点东西来练一下手.为了更有意思点,下面将搭建一个简单的验证码识别系统. 准备验证码数据 下面将 ...

随机推荐

  1. [Tensorflow] Practice - The Tensorflow Way

    该系列主要是<Tensorflow 实战Google深度学习框架 >阅读笔记:有了Cookbook的热身后,以这本书作为基础形成个人知识体系. Ref: [Tensorflow] Cook ...

  2. 【PHP】xampp配置多个监听端口和不同的网站目录(转)

    转自:https://blog.csdn.net/cc1314_/article/details/75646344 windows下使用xampp配置多个监听端口和不同的网站目录 一:配置Apache ...

  3. Proc文件系统接口调试

    在tpd_i2c_probe I2C的探测函数中创建proc接口 //----------------------------------------------------------------- ...

  4. Android开发训练之第五章第六节——Transferring Data Using Sync Adapters

    Transferring Data Using Sync Adapters GET STARTED DEPENDENCIES AND PREREQUISITES Android 2.1 (API Le ...

  5. linux-Centos 7下bond与vlan技术的结合

    服务器eno1与eno2作bonding,捆绑成bond0接口,服务器对端交换机端口,同属于301.302号vlan接口 vlan 301: 10.1.2.65/27                  ...

  6. 10.14 预订会议室的小Demo

    2018-10-14 17:12:32 越努力,越幸运.永远不要高估自己! 网上修改一下博客网站样式,做个仿qq空间的! 放上github连接 :https://github.com/TrueNewB ...

  7. JavaScript----特效代码

    1.不同时间段显示不同问候语 <Script Language="JavaScript"> <!-- var text=""; day = n ...

  8. iOS开发尺寸记录

    https://kapeli.com/cheat_sheets/iOS_Design.docset/Contents/Resources/Documents/index https://help.ap ...

  9. gitignore 不起作用的解决办法

    gitignore 不起作用的解决办法 - sloong - 博客园 https://www.cnblogs.com/sloong/p/5523244.html Administrator@PC-20 ...

  10. Server:www121 Server:www120 Server:NWS_SP

    Request URL:http://www.biyao.com/minisite/bzzx Request Method:GET Status Code:200 OK Remote Address: ...