reCAPTCHA的诞生及意义

CMU(卡耐基梅隆大学)设计了一个名叫reCAPTCHA的强大系统,让电脑去向人类求助。具体做法是:将OCR(光学自动识别)软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU。

reCAPTCHA是利用CAPTCHA的原理(CAPTCHA的中文全称是全自动区分计算机和人类的图灵测试),借助于人类大脑对难以识别的字符的辨别能力,进行对古旧书籍中难以被OCR识别的字符进行辨别的技术。也就是说,reCAPTCHA不仅可以反spam(垃圾邮件),而且同时还可以帮助进行古籍的数字化工作(可以称为人工OCR)。

每次reCAPTCHA会显示两个单词让人来识别,其中一个是需要用户识别的难认词,另外一个是答案已知的真正的CAPTCHA 词。软件将能够正确识别CAPTCHA词的用户看作是人类,当CAPTCHA 词被正确识别出来后,程序会纪录用户对无法阅读的词的回答并将其添加到它的数据库中。这样就完成了一次人工的OCR识别。过程如图1.

(图1)

‍‍为了改善软件的精确性, reCAPTCHA 会将最困难的词发送给多个用户并挑选其中有相同答案的作为正确的答案。据说准确率能够达到99%。用户每使用一次这个程序,实际上就是在帮助数字重现1908年《纽约时报》上的某一页,或者其它古书中的一页,这对考古学具有重大的意义。‍‍

‍‍下面是一个在使用reCAPTCHA进行注册验证的网站实例(图2):

(图2)

reCAPTCHAGoogle收购

‍‍reCAPTCHA在 2009 年被 Google 收购。之后国外陆续有一些网站的 reCAPTCHA 的验证码内容发生了变化,所显示的不再仅仅是古籍文字,而是还有照片——照片的一侧显示的是大家熟悉的扭曲的文字,另一侧则是模糊的数字,这些数字无疑就是街道地址,Google 的一位发言人介绍说,该系统并不局限于街道地址,街道名称甚至交通标志也会被包含进去。图例如图3.

(图3)

‍‍Google 让reCAPTCHA 里显示 Google 街景的图片。这样经常会从街景里提取如街道名称和交通标志等数据,向 Google 地图里添加商铺地址和位置等有用信息。

新版reCAPTCHA–noCAPTCHA

‍‍Google在2014.12.03发表了一篇文章《Are you a robot?Introducing “No CAPTCHA reCAPTCHA”》‍‍

‍‍文章开始讲述传统验证码的方式令“真正人类”头疼,且研究表明现在的人工智能技术已经能够解决99.8%的验证码,因此扭曲的文本验证方式可能不是一个可靠的方法。‍‍

‍‍新的reCAPTCHA被Google称作没有验证码的验证码("No CAPTCHA reCAPTCHA"),他让用户只需要简单的勾选就可以确认你是真实用户而非恶意机器人,操作非常简单。‍‍

‍‍noCAPTCHA只提供了一个复选框,里面写着“我不是机器人”。当你打钩之后,谷歌就能利用“风险分析引擎”进行一系列无缝检查,以此来判断你是否是真人。‍‍

(图4)

‍‍如果noCAPTCHA认为你是真人,那就不用再做什么了,这确实很容易。如果noCAPTCHA认为你不是真人,它就会要求你填一个传统的CAPTCHA字符串或更先进的字符串,比如从一组图片中挑选出正确的图片。‍‍

(图5)

‍‍noCAPTCHA的产品经理薛特(Vinay Shet)探讨了改良版服务背后的技术,他说复选框听起来虽然很简单,但是背后确实很复杂。新的风险分析引擎在用户点击复选框之前、之中和之后都会关注用户参与度来决定你是否是真人。

薛特说,风险分析引擎使用了机器学习技术,这种技术使用了很多的策略,知道普通用户看起来是什么样的,这样下次就知道该检查些什么了。‍‍

‍‍现在还不是所有人都能使用新版noCAPTCHA,只有一小部分用户能够使用它,想使用新版noCAPTCHA的大部分体验的开发者要想把它使用到他们的产品中必须使用新的API。目前,Snapchat、WordPress和Humble Bundle和cloud9等也正在测试新系统noCAPTCHA。‍‍

下面是cloud9注册时使用noCAPTCHA的截图:‍‍‍‍

(图6)

总结

reCAPTCHA不仅是一种验证码服务,同时也是一项具有重要意义的文化工程。被Google收购之后,reCAPTCHA内容也更加丰富。现在的noCAPTCHA似乎要将人类从“万恶的验证码”时代解放,更加注重用户体验,让真正的人类使用更加方便,让机器注册更加困难。

[作者/ArkTeam(团队帐号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]

http://www.freebuf.com/news/special/57496.html

reCAPTCHA OCR 详解 , 验验证, OCR(光学自动识别)的更多相关文章

  1. linux screen 命令详解(未验证+研究)

    一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  2. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

  3. js正则实现二代身份证号码验证详解

    js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...

  4. <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解

    MVC 3 数据验证 Model Validation 详解  再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...

  5. 【转】jQuery Validate验证框架详解

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...

  6. Shrio授权验证详解

    所谓授权,就是控制你是否能访问某个资源,比如说,你可以方位page文件夹下的jsp页面,但是不可以访问page文件夹下的admin文件夹下的jsp页面. 在授权中,有三个核心元素:权限,角色,用户. ...

  7. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  8. Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)

    上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页  了解了LigerUI 中Grid的基本用法  现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...

  9. spring事务详解(四)测试验证

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

随机推荐

  1. Centos 安装postgreSQL9.4.3

    rpm -ivh http://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7.2-x86_64/pgdg-centos94-9.4-3 ...

  2. UDP flood UDP Port Denial-of-Service Attack

    https://baike.baidu.com/item/UDP%20flood/5504851 UDPFlood是日渐猖厥的流量型DoS攻击,原理也很简单.常见的情况是利用大量UDP小包冲击DNS服 ...

  3. cookie中的domain和path

    div.example { background-color: rgba(229, 236, 243, 1); color: rgba(0, 0, 0, 1); padding: 0.5em; mar ...

  4. virtualenv安装和配置

    安装命令 命令执行结束 配 执行命令:virtualenv testvir 执行完成:会在当前目录下生成如下文件夹 进入到testvir目录 进入Scripts目录: 进入虚拟环境:执行 activa ...

  5. Spring Boot使用MongoDB GridFS进行文件的操作

    1. GridFS简介 GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等),但是它是存储在MonoDB的集合中. GridFS 会将文件对象分割成多个的ch ...

  6. SpringCloud配置刷新机制的简单分析[nacos为例子]

    SpringCloud Nacos 本文主要分为SpringCloud Nacos的设计思路 简单分析一下触发刷新事件后发生的过程以及一些踩坑经验 org.springframework.cloud. ...

  7. 基于navicat的数据库导入导出

    1.右键当前数据库,选择转储SQL文件 选择导出sql的存放路径 2.新建统一命名的数据库,右键运行SQL文件 3,.选择要导入的SQL文件后如图

  8. Java——对象和类

    对象:类的一个实例,有状态和行为. 类:一个模板,描述一类对象行为和状态. Java中的对象 对象具有状态和行为.对象的状态就是属性,行为通过方法体现. 在开发中,方法操作对象内部状态的改变,对象的相 ...

  9. Spark练习之创建RDD(集合、本地文件),RDD持久化及RDD持久化策略

    Spark练习之创建RDD(集合.本地文件) 一.创建RDD 二.并行化集合创建RDD 2.1 Java并行创建RDD--计算1-10的累加和 2.2 Scala并行创建RDD--计算1-10的累加和 ...

  10. 读取固定ResourceBundle

    private static ResourceBundle ssoBundle = ResourceBundle.getBundle("CASHHSSO");//默认根目录 pub ...