Python验证码识别处理

阅读目录

  • 准备工作
  • 验证
  • 实例

大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性

准备工作

处理验证码需要PIL库、pytesser库的支持

1、安装PIL库

  官网下载 ,下载后是exe应用程序,直接双击安装,它会自动安装到Python的lib\site-packages目录下

2、安装pytesser库

  官网下载 | 博客园下载 ,下载并解压后直接放在Python的lib\site-packages目录下,同时新建一个pytheeer.pth,内容就写pytesser,意思就是指定pytesser文件夹

3、下载Tesseract OCR engine 

  官网下载 | 博客园下载 ,下载并解压,将tesseract目录下的tessdata覆盖pytesser目录下的tessdata

回到顶部

验证

回到顶部

实例

原理:彩色转灰度,灰度转二值,二值图像识别

#coding:utf-8

#-----------------------------------
#   程序:getverify.py
#   版本:v0.1
#   作者:vforbox
#   语言:python 2.7
#   操作:直接运行
#   功能:验证码识别处理
#------------------------------------

# 验证码识别,此程序只能识别数据验证码
import os
from pytesser import *  

#变更工程路径
os.chdir(‘D:\Python27\Lib\site-packages\pytesser‘)

#二值化(阈值为什么是140呢?试出来的)
threshold = 140
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)    

#由于都是数字
#对于识别成字母的 采用该表进行修正
rep={‘O‘:‘0‘,
    ‘I‘:‘1‘,
    ‘L‘:‘1‘,
    ‘Z‘:‘2‘,
    ‘S‘:‘8‘
    };    

def getverify(name):
    #打开图片
    im = Image.open(name)
    #转化到灰度图(亮度)
    imgry = im.convert(‘L‘)
    #保存上面转换的图像
    imgry.save(‘gray_‘+name)
    #二值化,采用阈值分割法,threshold为分割点
    out = imgry.point(table,‘1‘)
    #保存上面分割的二值化
    out.save(‘binary_‘+name)
    #识别转化为文本
    text = image_to_string(out)
    #识别是否正确
    text = text.strip()
    text = text.upper();
    for i in rep:
        text = text.replace(i,rep[i])
    print text
    return text

#调用函数
getverify(‘1.jpg‘)  #这里的图片保证在pytesser目录下

源码下载

时间: 2024-10-23 19:28:46

Python验证码识别处理的相关文章

Python验证码识别处理实例

一.准备工作与代码实例 1.PIL.pytesser.tesseract (1)安装PIL:下载地址:http://www.pythonware.com/products/pil/(CSDN下载) 下载后是一个exe,直接双击安装,它会自动安装到C:\Python27\Lib\site-packages中去, (2)pytesser:下载地址:http://code.google.com/p/pytesser/,(CSDN下载) 下载解压后直接放C:\Python27\Lib\site-pack

Python验证码识别处理实例(转载)

版权声明:本文为博主林炳文Evankaka原创文章,转载请注明出处http://blog.csdn.net/evankaka 一.准备工作与代码实例 1.PIL.pytesser.tesseract (1)安装PIL:下载地址:http://www.pythonware.com/products/pil/(CSDN下载) 下载后是一个exe,直接双击安装,它会自动安装到C:\Python27\Lib\site-packages中去, 个人补充:上面是32位,个人查到64位地址 http://ww

Python验证码识别处理实例(转)

一.准备工作与代码实例 1.PIL.pytesser.tesseract (1)安装PIL:下载地址:http://www.pythonware.com/products/pil/(CSDN下载) 下载后是一个exe,直接双击安装,它会自动安装到C:\Python27\Lib\site-packages中去, (2)pytesser:下载地址:http://code.google.com/p/pytesser/,(CSDN下载) 下载解压后直接放C:\Python27\Lib\site-pack

Python验证码识别--利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中需要用

Python验证码识别:利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域--    简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中

Python验证码识别

#!/usr/bin/env python # coding=utf-8 tesseract_cmd = 'D:\\Tesseract-OCR\\tesseract' try: from PIL import Image import pytesseract import urllib2 import urllib import cookielib import re import subprocess import sys import tempfile import os import sh

python 验证码识别示例(二) 复杂验证码识别

 在这篇博文中手把手教你如何去分割验证,然后进行识别. 一:下载验证码 验证码分析,图片上有折线,验证码有数字,有英文字母大小写,分类的时候需要更多的样本,验证码的字母是彩色的,图片上有雪花等噪点,因此识别改验证码难度较大 二:二值化和降噪: 三: 切割: 四:分类: 五:   测试识别率             六:总结: 综合识别率在70%左右,对于这个识别率我觉得还是挺高的,因为这个验证码的识别难度还是很大 代码: 1.  下载图片: #-*-coding:utf-8-*- import

python 验证码识别示例(四) 简单验证码识别

今天介绍一个简单验证的识别. 主要是标准的格式,没有扭曲和变现.就用 pytesseract 去识别一下. 验证码地址:http://wsxf.mca.gov.cn/zfp/Random.cmd?d=1565452532947 需要识别的验证码是: 识别结果是: 识别率百分之八十.10个有两个错误. 识别代码: #coding:utf-8 from common.contest import * from PIL import Image import pytesseract def recog

python 验证码识别示例(五) 简单验证码识别 &#187; 立即查看

今天介绍一个简单验证的识别. 主要是标准的格式,没有扭曲和变现.就用 pytesseract 去识别一下. 验证码地址:http://wscx.gjxfj.gov.cn/zfp/webroot/xfsxcx.html 需要识别的验证码是: 因为这个验证码有干扰点,所以直接识别的效果非常不好. 首先对验证码进行二值化和降噪. 效果如下: 识别结果: 识别率只有百分之四十,针对这么低的识别率,可以去切割分类,目前这个验证码很容易去切割.提高验证码的识别率问题. 二值化代码: # coding:utf