reCAPTCHA OCR 详解 , 验验证, OCR(光学自动识别)
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)
reCAPTCHA被Google收购
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(光学自动识别)的更多相关文章
- linux screen 命令详解(未验证+研究)
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
- js正则实现二代身份证号码验证详解
js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...
- 【转】jQuery Validate验证框架详解
jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...
- Shrio授权验证详解
所谓授权,就是控制你是否能访问某个资源,比如说,你可以方位page文件夹下的jsp页面,但是不可以访问page文件夹下的admin文件夹下的jsp页面. 在授权中,有三个核心元素:权限,角色,用户. ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)
上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页 了解了LigerUI 中Grid的基本用法 现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...
- spring事务详解(四)测试验证
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...
随机推荐
- Devexpress DockManager多页面浮动窗口会关闭所有页面的问题
注册 DockManager 的 ClosingPanel 事件 private void DockManager1_ClosingPanel(object sender, DockPanelCanc ...
- argparse的简单使用
简单记录一下argparse的用法 这个是针对我做区块链的一些demo时需要用到的,仅把用到了的一些操作记录,argparse很强大,更多细致的操作可以参考:https://docs.python.o ...
- 安卓开发视频教程!想找工作的你还不看这份资料就晚了!Android校招面试指南
前言 准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司.谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿 ...
- mysqldump导出数据库导入数据库
使用mysqldump命令导出数据库,格式如下,请按实际要求对参数进行替换: mysqldump -u 用户名 -p 数据库名 > 导出的文件名 比如导出数据库business_db: mysq ...
- 使用XML作为配置表,WinForm程序读取配置表来动态显示控件
一.首先创建一个XML文件定义以下格式(uName:显示的中文字,uKey:代表控件的Name属性,ukeyValue:代表是否显示) 二.项目中定义一个通用类,来存放读取的值 这三个字段对应XML文 ...
- Redis连接池的相关问题分析与总结
https://mp.weixin.qq.com/s/juvr89lAvM0uuDmyWyvqNA 阿里干货课堂丨Redis连接池的相关问题分析与总结 原创 技术僧 Java进阶与云计算开发 2018 ...
- slice 切片实现 Slice object interface
1.Python切片对象可以为任意类型 https://github.com/python/cpython/blob/master/Include/sliceobject.h /* Slice obj ...
- (转载)微软数据挖掘算法:Microsoft 决策树分析算法(1)
微软数据挖掘算法:Microsoft 目录篇 介绍: Microsoft 决策树算法是分类和回归算法,用于对离散和连续属性进行预测性建模. 对于离散属性,该算法根据数据集中输入列之间的关系进行预测. ...
- 在ubuntu编写helloworld
安装vim 打开终端 输入sudo apt-get install vim-gtk 输入登陆密码 等待安装完成 编译C 创建.c文件:vim helloworld.c 编写代码,保存并退出 编译:gc ...
- pycharm设置头文件模板(for mac)
我们要达到的效果是每次新建一个.py文件都会有头文件,关于头文件的作用之前已做解释