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 shlex
    import json
except ImportError:
    print ‘模块导入错误,请使用pip安装‘
    raise SystemExit

‘‘‘文件目录,并返回该目录‘‘‘
def mkdir(path):
    # 去除左右两边的空格
    path=path.strip()
    # 去除尾部 \符号
    path=path.rstrip("\\")
    if not os.path.exists(path):
        os.makedirs(path)
    return path

def get_yundapic():
    ‘‘‘装载cookie‘‘‘
    cj = cookielib.CookieJar();
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    opener.addheaders={(‘User-agent‘, ‘Mozilla/5.0 (Windows NT 6.3; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0‘)}
    urllib2.install_opener(opener)

    picUrl = ‘http://ykjcx.yundasys.com/zb1qBpg2.php‘
    req1 = urllib2.Request(picUrl)
    operate=opener.open(req1)
    data=operate.read()
    return (cj,data);

def save_pic(input_file_name,data):
    if data == None:
        return
    file=open(input_file_name, "wb")
    file.write(data)
    file.flush()
    file.close()

def tempnam():
    tmpfile = tempfile.NamedTemporaryFile(prefix="tess_")
    return tmpfile.name

def cleanup(filename):
    try:
        os.remove(filename)
    except OSError:
        pass

def run_tesseract(input_filename, output_filename_base):
    command = [tesseract_cmd, input_filename, output_filename_base]
    proc = subprocess.Popen(command,stderr=subprocess.PIPE,shell=True)
    return (proc.wait(), proc.stderr.read())

def image_to_string(data):
    output_file_name_base = tempnam()
    input_file_name = ‘%s.png‘ % tempnam()
    output_file_name = ‘%s.txt‘ % output_file_name_base

    try:
        save_pic(input_file_name,data)
        status, error_string = run_tesseract(input_file_name,output_file_name_base)
        if status:
            raise
        f = open(output_file_name)
        try:
            return f.read().strip()
        finally:
            f.close()
    finally:
        cleanup(input_file_name)
        cleanup(output_file_name)

def save_data(cookies,vcode):
    for ck in cookies:
        if ck.name == ‘PHPSESSID‘:
            cookie = ck.value
            saveUrl = ‘保存cookie和验证码地址‘
            values = {‘cookie‘:cookie,‘websiteid‘:1,‘code‘:vcode}
            postDate = json.dumps(values)
            req = urllib2.Request(saveUrl,postDate)
            response = urllib2.urlopen(req)
            page = response.read()
            return page

def main():
    while (True):
        cj,input_file_stream = get_yundapic()
        vcode = image_to_string(input_file_stream)
        if vcode != ‘‘ and len(vcode) == 3:
            if re.match(r‘[a-zA-z]+$‘,vcode):
                print ‘識別錯誤‘
            else:
                try:
                    num = eval(vcode)
                    print num
                    print save_data(cj,eval(vcode));
                except:
                    pass

    ‘‘‘
    while (True):
        cj,captcha,input_file_stream = get_pic()
        vcode = image_to_string(input_file_stream)
        if vcode != ‘‘ and len(vcode) == 4:
            if re.match(r‘[a-zA-z]+$‘,vcode):
                print(save_data(cj,captcha,vcode))
        else:
            print ‘識別錯誤‘

    ‘‘‘
    ‘‘‘
    cj,input_file_stream = get_yundapic()
    vcode = image_to_string(input_file_stream)
    print vcode
    ‘‘‘
if __name__ == ‘__main__‘:
    main()

比较喜欢直接粗暴的贴代码,不多说,自己看代码,COPY即运行

时间: 2024-07-30 20:26:19

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验证码识别处理

阅读目录 准备工作 验证 实例 大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性 准备工作 处理验证码需要PIL库.pytesser库的支持 1.安装PIL库 官网下载 ,下载后是exe应用程序,直接双击安装,它会自动安装到Python的lib\site-packages目录下 2.安装pytesser库 官网下载 | 博客园下

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 验证码识别示例(二) 复杂验证码识别

 在这篇博文中手把手教你如何去分割验证,然后进行识别. 一:下载验证码 验证码分析,图片上有折线,验证码有数字,有英文字母大小写,分类的时候需要更多的样本,验证码的字母是彩色的,图片上有雪花等噪点,因此识别改验证码难度较大 二:二值化和降噪: 三: 切割: 四:分类: 五:   测试识别率             六:总结: 综合识别率在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 验证码识别示例(五) 简单验证码识别 » 立即查看

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