zoukankan      html  css  js  c++  java
  • Python验证码识别处理实例(转载)

    一、准备工作与代码实例

    1、PIL、pytesser、tesseract

    (1)安装PIL:下载地址:http://www.pythonware.com/products/pil/(CSDN下载

    下载后是一个exe,直接双击安装,它会自动安装到C:Python27Libsite-packages中去,

    个人补充:上面是32位,个人查到64位地址

    http://www.qttc.net/201210230.html

    (2)pytesser:下载地址:http://code.google.com/p/pytesser/,(CSDN下载

    下载解压后直接放C:Python27Libsite-packages(根据你安装的Python路径而不同),同时,新建一个pytesser.pth,内容就写pytesser,注意这里的内容一定要和pytesser这个文件夹同名,意思就是pytesser文件夹,pytesser.pth,及内容都要一样!

    (3)Tesseract OCR engine下载:http://code.google.com/p/tesseract-ocr/(CSDN下载

    下载后解压,tessdata文件夹,用其替换掉pytesser解压后的tessdata文件夹即可。(就上面的pytesser文件夹)

    二、验证

    (1)原理:

    验证码图像处理

    验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出验证码图像内的每个字符的文本矩阵。

    1、读取图片
    2、图片降噪
    3、图片切割
    4、图像文本输出


    (2)验证字符识别

    验证码内的字符识别主要以机器学习的分类算法来完成,目前我所利用的字符识别的算法为KNN(K邻近算法)和SVM (支持向量机算法),后面我 会对这两个算法的适用场景进行详细描述。

    1、获取字符矩阵
    2、矩阵进入分类算法
    3、输出结果

    要验证的图片如下:

    (3)、简单的命令:

    [python] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. from pytesser import *  
    2. image = Image.open('1.jpg')  # Open image object using PIL  
    3. print image_to_string(image)     # Run tesseract.exe on image  
    然后运行:

    或者直接:

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. print image_file_to_string('fnord.tif')  
    同样能输出结果!

    (4)、复杂一点的

    上面的只能对一些比较简单的做处理,一

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

    [python] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. # 验证码识别,此程序只能识别数据验证码  
    2. import Image    
    3. import ImageEnhance    
    4. import ImageFilter    
    5. import sys    
    6. from pytesser import *  
    7. # 二值化    
    8. threshold = 140    
    9. table = []    
    10. for i in range(256):    
    11.     if i < threshold:    
    12.         table.append(0)    
    13.     else:    
    14.         table.append(1)    
    15.     
    16. #由于都是数字    
    17. #对于识别成字母的 采用该表进行修正    
    18. rep={'O':'0',    
    19.     'I':'1','L':'1',    
    20.     'Z':'2',    
    21.     'S':'8'    
    22.     };    
    23.     
    24. def  getverify1(name):          
    25.     #打开图片    
    26.     im = Image.open(name)    
    27.     #转化到灰度图  
    28.     imgry = im.convert('L')  
    29.     #保存图像  
    30.     imgry.save('g'+name)    
    31.     #二值化,采用阈值分割法,threshold为分割点   
    32.     out = imgry.point(table,'1')    
    33.     out.save('b'+name)    
    34.     #识别    
    35.     text = image_to_string(out)    
    36.     #识别对吗    
    37.     text = text.strip()    
    38.     text = text.upper();      
    39.     for r in rep:    
    40.         text = text.replace(r,rep[r])     
    41.     #out.save(text+'.jpg')    
    42.     print text    
    43.     return text    
    44. getverify1('1.jpg')  #注意这里的图片要和此文件在同一个目录,要不就传绝对路径也行    

    运行后效果:

     转载:http://blog.csdn.net/evankaka/article/details/49533493

  • 相关阅读:
    文件下载(Servlet/Struts2)
    Spring学习(一)---依赖注入和控制反转
    MyBatis学习(三)---MyBatis和Spring整合
    MyBatis学习(二)---数据表之间关联
    MyBatis学习(一)---配置文件,Mapper接口和动态SQL
    转载:常见端口介绍
    CentOS7 yum提示:another app is currently holding the yum lock;waiting for it to exit
    批量删除文件,只保留目录下最新的几个文件,其他均删除
    转载:SQL Server 如何设置数据库的默认初始大小和自动增长大小
    阿里云ECS使用秘钥或者密码登录
  • 原文地址:https://www.cnblogs.com/zyp1/p/6086115.html
Copyright © 2011-2022 走看看