zoukankan      html  css  js  c++  java
  • 验证码识别--资料收集

    证码识别--资料收集

     

    一、验证码基础知识

         验证码设计的目的就是区分“人”和“机器”,所以它在被设计的时候,主要的目的就是防止被采用就是自动识别出来。所以作为破解者来说,一开始就是处于劣势地位的。当然这使得验证码的破解变成了一项结合图像识别、模式识别的猜谜解题活动。
        验证码的识别很难达到100%。因为在现实生活中,人也可能是识别错误的,所以当错误发生的时候,验证码识别系统会再提供一个新的验证码。如果单次识别有50%的识别成功率(也就是50%的失败率),那么连续三次的总体成功率就可以达到0.875(=1-0.5*0.5*0.5)。
        验证码的设计方式多种多样。广义上来说,只要是能够区分“人”和“机器”的方式,都可以拿来做验证;狭义上来说,主要是指的将字母和数字打印在一张图片上面让人来识别的这种模式。

    二、各类验证码收集和分类

         我收集了一下具有代表特性的验证码:
        1)某考试网站的验证码
                 
          特点:  1、都是数字;
              2、主要是点干扰;
              3、位置基础都是水平的。
         7)sina验证码
        
        
          特点:  1、都是数字;
              2、点干扰,线干扰;
              3、位置基础不确定。
     
          2 
          特点:1、每个字的颜色都不一样;
              2、背景上有线干扰;
              3、位置基础都是水平的。
     
          3 
          特点:1、前景和背景的颜色是非常接近的;
              2、背景上有线干扰;
              3、位置是波浪形的;
              4、字母有粘连。
     
          4
     
          特点:1、黑白图像,却用字母的纹理来区分;
              2、背景上白色有线干扰;
              3、位置是波浪形的;
              4、字母有粘连。
     
           5
     
          特点:1、彩色图像,每个字符都不一样;
              2、背景上白色彩色干扰;
              3、位置基本是水平的;
              4、字母有粘连。
     
         6
     
          特点:1、彩色图像,梯度颜色,其中干扰线和字母前景非常相似;
              2、三种字体;
              3、位置不定,不是波浪;
              4、字母有粘连,当相比之下不是很严重。
     
             来自某网站的验证码
             
          特点:1、彩色图像,背景和前景颜色一致;
              2、图像变形;
              3、图像复杂纹理。
     
             8 qq验证码
             
          特点:1、彩色图像,背景随机图片,非常复杂
              2、文字可以说,设计的非常透明;
              3、文字粘连。
              9 Captcha是专门的验证码生成项目,这里的几个都是比较有特性的。
     
            10 PWNtcha的若干
             
     
          特点:1、不连续的点组成字符;
              2、有一定程度的倾斜;
          
           
          特点:1、手写体
           
            
          特点:1、背景颜色块;
              2、前景横线或矩形。
     
         
          特点:1、随机噪音作为前景;
              2、字母位置粗细都有变化;
              3、无粘连;
        这里还有一些不常见但是很有意思的验证码,仅仅是收集过来看一看。
        

    三、相关算法罗列

        我认为,验证码识别、特别是高阶验证码识别,绝对不是简单地通过常见的方法就可以达到效果的。必须经过带有人工智能的系统的训练,才能够达到较好的效果。而且对于不同验证码来说,其所运用的方法也是不一样的。
       1)图像处理基本算法,比如opencv提供的一系列,此外包括blob分析等;
       2)神经网络相关算法,依然基于opencv提供的svm,annmlp等;
       3)OCR识别打包算法,比如tesseract-ocr。这里需要明白的一点是,对于这种专门用来迷惑计算机的图像来说,想用通用的训练库达到识别的效果是不可能的;
       4)形状上下文,关于这个东西是什么,如何用,需要搞清楚

     

       

    四、其它相关资源

         验证码识别由于广阔的市场应用,出现过和出现着许多的应用。比如这款
    就有着多宗验证码的识别,但是主要还是非粘连的。对于我来说,掌握这种技术,是非常重要的,因为它符合图像识别的几个要素:难度、反馈和长久发展。
    在这家号称从04年开始做验证码识别的网站提供的样例中,放眼看过去都是机器打印的字符,缺乏粘连很严重的,或者是字体多种多样的情况。
    四、小结
        验证码识别是图像识别中比较复杂的一个方向,但是在这个方向上面有比较成熟的研究、也有比较系统的工具,也可能会有一定的市场,最关键的是,这个方面的原始数据很容易获得。因此,非常值得在这个方向去做研究和实践。
     





  • 相关阅读:
    决策树算法系列之一 ID3
    线性递归数列算法题
    Python爬虫快速上手教程
    gensim快速上手教程
    GCN和GCN在文本分类中应用
    命名实体如何进行概念消歧?
    浅谈神经网络中的激活函数
    nginx安装配置和基本使用
    netty学习总结(三)
    netty学习总结(二)
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/4492084.html
Copyright © 2011-2022 走看看