reCAPTCHA:通过网络安全措施进行基于人类的的字符识别

来源:互联网 发布:php 按钮disable 编辑:程序博客网 时间:2024/05/23 09:46
原文链接:http://www.cs.cmu.edu/~biglou/reCAPTCHA_Science.pdf

reCAPTCHA:通过网络安全措施进行基于人类的的字符识别
Luis von Ahn,* Benjamin Maurer, Colin McMillen, David Abraham, Manuel Blum
CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart - 用于分辨计算机和人类的完全自动化的公共图灵测试)是为防止自动化程序滥用在线服务而在万维网上被广泛采用的安全措施。通过要求人类执行电脑还不能执行的任务,如破译畸变的字符,来分辨计算机和人类。我们的研究探讨这种人的努力是否可以被引导向一个有用的目的:通过要求用户破译从书上扫描的且不能被计算机光学识别正确辨识的单词,帮助将老旧的印刷材料数字化。 我们表明,该方法能够以超过99%的单词精度转录文本,与专业人工转录人员所能保证的精度相匹配。我们的仪器被部署在40,000多个网站上,超过440万字已被转录。
CAPTCHA(1,2)是一个挑战响应测试,用来在万维网上区分一个用户到底是一个人还是一台计算机。
缩写代表“用以分辨计算机和人类的完全自动化的公共图灵测试”。一个典型的CAPTCHA是一幅出现在网站注册表单底部的包含几个畸变字符的图像。用户被要求输入看到的波浪形字符以“证明”他们是人。目前的计算机程序尚不具有人类那样读取畸变文本的能力(3),所以Captcha在对抗试图滥用在线服务的自动化程序的过程中扮演了哨兵的角色。由于其作为一项安全措施的有效性,Captcha用来保护许多类型网站,包括免费电子邮件提供商,门票销售,社交网络,维基,博客。例如,Captcha防止票贩子使用计算机程序购买大量的演唱会门票高价转售。像Gmail和Yahoo Mail这样的网站使用Captcha阻止垃圾邮件发送者获得以百万计的免费电子邮件帐户,那些账户将被用来发送垃圾邮件。
据我们估计,世界各地的人每天键入超过1亿次Captcha(见在线支持文字),每次键入畸变的字符只花费几秒钟。合计,这相当于一个人每天拥有成千上万小时。我们报告一个实验,试图让人们解决Captcha所花费的时间具有积极作用。尽管Captcha能够有效防止大规模滥用在线服务,人们用于解决这些问题所花费的精神上的努力却被浪费了。这种精神上的努力是无价的,因为破译Captcha要求人们执行计算机无法完成的任务。
我们展示Captcha是如何可能通过征募人破译计算机无法识别的单词,使用非数字化的形式将排版文本数字化。计算机时代之前写的物理书籍和其他文字目前正在大量数字化(例如,通过谷歌图书项目和非营利性的互联网档案),以保存人类的知识,并使信息更容易被全世界访问。每一页都被扫描成位图图像,这些图像被光学字符识别(OCR)软件转换成文本文件。转变成文字是有用的,因为书可以被索引,搜索,并以一种容易分析和处理的格式存储。在数字化过程中的绊脚石之一是,OCR破译扫描为位图图像的文本的表现差强人意。正如我们下面显示的,对墨水褪色且纸张泛黄的较旧的印刷品,约有20%的单词OCR不能识别。相比之下,人类抄写这类印刷品更准确。例如,两个人使用“键,并确认”技术——每个人都独立键入文本,然后比对发现的任何差异——在单词级别(4,5)可以达到超过99%的准确度。不幸的是,人工抄录非常昂贵,所以只有极端重要性的文件才会手工抄写。
我们的仪器,称为“reCAPTCHA”,在超过40,000个网站(6)中使用,演示了旧印刷材料可以通过在整个万维网中让人解决Captcha实现一个字一个字的转录。标准Captcha显示由计算机渲染的随机字符图像,而reCAPTCHA显示从扫描的文本中提取的单词。有人类介入的解决方案用于改进数字化过程。为了提高效率和安全性,只有不能被自动OCR程序识别的单词才会被发送给人。但是,为了达到CAPTCHA的目标(区分人类与计算机),系统必须能够验证用户的答案。要做到这一点,验证码为用户提供了两个单词,其中一个单词是未知的,而另一个是用于“控制”的已知单词。如果用户键入了正确的控制字,系统假定它们是人类,并且有信心认为他们键入的另一个单词也是正确的(图1)。下面我们描述确切的过程。
我们从一个页面的扫描图像开始。两种不同的OCR程序分析图像;各自的输出通过标准的字符串匹配算法(7)互相对齐,然后相互并与英文词典作比较。任何被两种OCR程序识别为不同的或者不在英文词典中的单词被标记为“可疑”。这显然是OCR程序未能正确破译。据我们分析,这些可疑单词中约96%的单词会被至少一种OCR程序识别错误;相反,未被标记为可疑的单词中,有99.74%的单词同时被这两个程序正确破译。每一个可疑的单词都会在一张图像中与另一个答案已知的单词放在一起,两个单词都被进一步畸变以确保不被自动化程序破译,由此产生的图像作为一个CAPTCHA。用户在允许通行之前被要求同时正确键入两个单词。我们将已知答案的“控制单词”作为新的“未知单词”的参考。每个reCAPTCHA挑战有一个未知单词和一个控制单词以随机顺序展现。为了降低自动化程序随机猜到正确答案的可能性,控制单词在频率上被归一化;例如,较常见的“today”和较少见的“abridged”出现的概率相同。控制单词的词汇表包含超过10万个条目,因此一个程序随机猜测100000次才能成功1次(8)。此外,只有两种OCR程序都不能识别的单词才会被作为控制单词。因此,能以不可忽略的概率识别这些单词的任何程序,都表明其改进已超越最先进的OCR程序。
考虑到在数字化过程中的人为错误,reCAPTCHA将每一个可疑单词发送多个用户,每次都用不同的随机畸变。首先,它显示为一个未知的单词。如果用户输入了控制单词的正确答案,则该用户的另一个答案被记录为一个对未知单词似是而非的猜测。当且仅当前三个人类猜测相互匹配但不同于OCR的猜测时,该单词才会成为其他挑战中的控制单词。在人类答案存在差异的情况下,reCAPTCHA将该单词作为“未知单词”发送给更多的人,然后挑选得“票”最多的答案——每个人类的答案记作1票,每个OCR的猜测记作1.5票(前面说过,这些单词均已被ORC预先处理过)。在实践中,这些权重似乎能产生最佳效果,尽管我们的精度对这些权重不是很敏感(只要人类猜测的权重比OCR猜测高)。在单词数字化过程中,一个猜测必须得到至少2.5票才能被选为正确拼写。因此,如果前两个人的猜测相互匹配且与一个OCR的猜测匹配,则它们被认为是一个正确的答案;如果前三个猜测相互匹配,但与任何一个OCR的猜测匹配,他们被认为是一个正确的答案,并且该单词成为一个控制单词。考虑到有些单词无法辨别,reCAPTCHA有一个按钮允许用户请求一对新的单词。当一个单词在选出正确拼写之前,有六个用户拒绝该单词,则这个单词被视作无法辨别而丢弃。在一段文本中的所有可疑单词已被破译后,因为人类用户的各种可预见的错误(见在线支持文本),我们采取一个后续处理步骤。从我们的数据分析得知,有67.87%的单词只要求两个人类的响应就能被认为是正确的,17.86%要求三个,7.10%要求四个,3.11%要求五个,只有4.06%要求6个或更多(包括视作无法辨别而丢弃的单词)。
系统的大规模部署使我们收集了一些调查结果(见有关部署的更多详细信息的在线支持文本)。第一个发现是,破译CAPTCHA的单词的过程,能够达到专门的人工转录服务的最高质量保证。从来自5个不同年份(1860年,1865年,1908年,1935年和1970年)纽约时报归档(http://nytimes.com)中随机抽样,抽出50篇扫描文章由两名专业人员手动转录,以衡量reCAPTCHA的每单词精度,包括上面提到的后续处理更正。总单词数为24080。每一个单词在算法正确破译整个单词时算作一次“hit”,或任何一个字母错误时算作一次“miss”。错误率被定义为"miss"总数除以单词总数。考虑到实际数据抄录时的潜在错误,每一个"miss"都对照实际数据手动检查,若为错误则手动修正。为了进行比较,一个OCR程序的结果也经过同样的过程。
reCAPTCHA系统在单词级别上达到了99.1%(24080个单词中只出现216个错误)的精确度,而标准的OCR准确率只有83.5%(3976个错误)。在两个OCR系统都识别错误的单词比例为7.3%。“key and verify”转录技术——2名专业的转录人员独立输入数据并修正差异——行业标准所保证的精确度“超过99%”,99.1%的精确度在可接受范围内。有趣的是,被收集作为“真实数据”的专业手工抄录文章包含189处错误,几乎与reCAPTCHA的错误一样多。reCAPTCHA犯错的原因很多,但最常见的原因是OCR系统的单词对齐和分割问题导致的;例如,在某些情况下,两个OCR程序会完全错过一个或一组单词。专业人工转录出错的确切原因我们不得而知,但转录人员键入一个互不相同的单词时,就很有可能出现错误了,然后在差异校正过程中修正这个错误。reCAPTCHA达到的精度可与两个人的“金级标准”精度相当,这个事实不同寻常,因为人类转录时利用到上下文(前后紧邻的单词),而reCAPTCHA展示的单词独立于原始的上下文单独显示。另一方面,reCAPTCHA结合OCR和多个人类,在某些情况下,被证明能更好的抵御意外的排印错误。
另一个发现是,CAPTCHAs构成了一个利用大量人类精神努力的可行机制。系统运行整一年后,人类已经解决了12亿个CAPTCHA,正确破译了总计超过4.4亿个可疑的单词。假设每本书10万单词(400页,每页250单词),这相当于手动转录超过17600本书(按照我们的算法,每本书约有25%单词标记为可疑)。系统继续日益普及:目前的转录率为超过4百万可疑单词每天,这相当于约160本书每天。要想通过常规的“key and verify”方式(无OCR辅助,所以文本中的每个单词都要手动键入)实现这个速度,需要1500余人的劳动力每周工作40小时(假设平均录入速率为60单词每分钟)。
网站选择使用reCAPTCHA的原因很多。首先,因为我们只使用从书籍扫描并且OCR失败的单词。目前reCAPTCHA比常规的生成自己的随机畸变字符的CAPTCHA更安全。如(9 11)所示,很有可能建立算法读取被广泛使用的许多传统CAPTHA生成的畸变文本,使得成功率在某些情况下超过90%。如我们所实现的,相同的算法100%无法识别reCAPTCHA挑战。其中一个原因是,传统CAPTCHA中字符的人工畸变来自于一个有限的(通常是简单的)分布,组成这个分布的可能的转换对人类来说仍然可读。因此,建立经过一定训练能够识别畸变字符的机器学习算法是可行的。reCAPTCHA显示的单词具有三种类型的畸变。首先,最重要的是,基本文本因时间久远而产生的褪色导致的自然畸变。其次,扫描过程中引入的噪声。第三,我们引入类似标准CAPTHCA使用的人工变形,这样即使有一个比我们的稍微好一点的OCR,这些挑战对计算机程序来说仍然很困难。虽然图像处理社区已经为扫描书籍(12)自然降解过程建模做了一些工作,但这些模型是不完善的,所以reCAPTCHA中的畸变分布较少受到限制。此外,reCAPTCHA只显示两个OCR程序都不能识别的单词。因为我们扫描书籍得到的单词中约有4%被reCAPTCHA用作控制单词,在不损害我们的数据库的前提下,任何reCAPTCHA挑战识别率能够达到p的程序,都可以在这个相同的分布(13)上直接用于将这些OCR程序的精度提高0.04p。这将领先于最先进的OCR技术。
在本质上,reCAPTCHA所用的单词对计算机来说是扫描文本中“最难”破译的单词。相比之下,人类可以轻松破译reCAPTCHA挑战:切​​换到reCAPTCHA的网站的用户通常比使用其他CAPTCHA的网站的用户抱怨的更少。这部分是由于一些用户因他们的劳动为人类知识的数字化做出了贡献[如在广大赞美reCAPTCHA(14)的博客中所见]而更愿意接受reCAPTCHA。此外,基于超过10亿的响应,reCAPTCHA整体的成功率是96.1%,考虑到一个简单的打字错误将意味着失败,这是一个健康的数字。我们注意到,成功率并不是所有用户都相同。例如,母语非英语的人似乎比母语为英语的人表现稍差:互联网协议(IP)地址来自非英语国家的成功率从92.6至96.9%不等,取决于所在国家,而IP地址来自英语国家的成功率范围为97.1到97.4%(因为我们有几百万个数据点,所有这些差异在P <0.01时具有统计学意义)。此外,甚至包括英语国家在内,在第一次挑战失败的情况下,那些30秒内第二次尝试挑战的IP地址的成功率只有89.9%。另一种看法是,成功率与控制单词的长度成比例:四字符单词有93.7%的成功率;五字符单词,95.7%;六字符单词,96.4%;七字符单词,96.7%;等等。这可以解释为较长的单词能为用户提供更多的上下文。将注意范围限制在非英语国家时,仍然保持了相同的关系,但程度较轻(与我们的解释一致,英语知识对较长的单词有帮助)。
许多网站采用reCAPTCHA第二个原因是,虽然reCAPTCHA展示两个词,而不是只有一个,但用户解决reCAPTCHA所花费的时间并不比解决标准CAPTCHA所花费的多。标准CAPTCHAs展示六至八个随机选择的字符(并非英文单词),解决的时间与破译约两个英语单词相同。我们网站(http://captcha.net)的用户测试表明,随机选择1000用户平均(SD 6.37)花费13.51秒解决一个七个字母组成的传统的验证码(25%花费8.28秒,中位数为12.62秒,75%花费17.12秒),而另一组随机挑选的1000个用户(来自http://captcha.net)平均花费13.06(SD 7.67)解决一个reCAPTCHA(25%花费5.79秒,中位数是12.64秒,75%花费18.91秒)。这种差别在统计学意义是并不显著,事实上,reCAPTCHA花费较低的平均时间(虽然中位数高0.02秒)。标准CAPTCHAs与reCAPTCHAs花费时间大致相同的事实并不令人惊讶,因为英语单词有人类用户习惯的模式。此外,解决reCAPTCHAs所花费的时间变化范围更广,因为英语单词具有不同长度(15)。
我们相信这里给出的结果是一个更普遍想法的概念证明的一部分:“被浪费的”人类的处理能力被利用来解决计算机尚不能解决的问题。有些人称为这个想法为“人计算”。在之前的工作中(16 18),我们已经表明,这样的处理能力可以通过计算机游戏来利用:人们玩这些游戏,最终结果却是共同执行计算机尚不能完成的任务。受这项工作的启发,生物学家们最近建成了Fold It(http://fold.it/)(19),一个游戏,游戏中的人为确定一个给定的蛋白质的理想结构而竞争。在这里,我们已经表明,CAPTCHAs在服务于一个有用的目的--防止互联网上的自动化滥用--的同时,构成了“重用”被浪费的计算能力的另一种途径。一个相关但不同的工作,ASIRRA(20),已经表明,CAPTCHAs可以用于人道主义目的。在这个系统中,猫,狗的图片呈现给用户,用户必须确定哪些是猫,哪些是狗。人道主义的结合点在于图片来自动物收容所:如果用户喜欢其中一只猫或狗,他们可以领养它。更普遍的,计算机不能比人类更好的执行视觉识别任务。也许类似reCAPTCHA的方法可以用来注释或标记大量图像。
我们希望reCAPTCHA通过帮助人类知识数字化继续对现代社会产生积极的影响。