大家可能已经注意到,我给我的博客加上了经reCAPTCHA验证后才能发表评论的限制(有的朋友居然以为这是广告)。其验证码看起来有点让人望而生畏:

但是,一些炙手可热的国外网站,例如facebook,偏偏喜欢用这种验证方式。每次见到这种验证方式,要辨认,输入一长串难认的单词,我都烦不胜烦。 直到有一天,我偶然从网上发现了reCAPTCHA的来由。于是,我从原来的抵触,转变为如今的支持。下面就说说原因。 一组典型的reCAPTCHA验证码包括两个单词,按照大多数使用reCAPTCHA进行验证的网站的说法,用户需要将两个单词都正确识别并输入,验证才能通过。其实这个说法是不对的。这两个单词分为两种情况:一个单词是计算机已知答案的,叫做对照词(Control word);另一个是未知词(Unknown word),reCAPTCHA系统在终端用户(以下称为“挑战者”,为人类)正确输入对照词的情况下,会推断挑战者输入的未知词也是正确的,以备后用。所以有时候,我们正确输入了验证码中的一个单词,输错了另外一个,也是可以验证通过的。 我们知道,验证码做的好不好,关键在于是不是难以被计算机识别出来。如今最可靠最常用的计算机文字识别技术是OCR(Optical Character Recognition),例如有道词典这样的桌面词典工具就是用这种技术实现某些环境下的屏幕取词。但是OCR技术还远不完美,由于人类的印刷文字具有各种字体,各种字号,各种特殊情况,而且年代久远的图书,书本泛黄、污渍的情况也会影响到OCR识别的准确率,对于Google BooksInternet Archive这样雄心勃勃地要数字化海量图书,特别是旧书的项目而言,OCR技术是不可靠的。以下图片是OCR识别一段扫描自旧书或者旧报纸的例子:

我们人类识别这段文字毫无压力,但OCR的扫描结果错误百出。 由于OCR的不完美,至少是现阶段的不完美,2002年,CMU的几位学者发明了CAPTCHA,也就是我们所说的验证码。而reCAPTCHA也是同一批人在CAPTCHA的基础上提出的。在reCAPTCHA中,系统使用两种不同的OCR算法来识别单词,如果两种算法对一个单词的识别结果不一致,那么这个单词将被认为是“可疑的”,需要加入reCAPTCHA可疑词库,连同一个已知的对照词,随机分配给不同的挑战者来辨认。如果满足如下条件之一,那么一个可疑词将被认为是得到了辨认: 条件甲,前三个挑战者的识别结果完全一致。 条件乙,所有可能的识别结果进行投票PK:每个相同的挑战者识别结果贡献一票,每个相同的OCR识别结果贡献半票,取最先达到2.5票的结果为辨认结果。 选择对照词的基本原则,是不能被上面提到的两种不同的OCR算法同时识别出。由于上一步辨认未知词保证了每个被辨认的结果都来自OCR不能达到一致的可疑词,那么一旦这些词得到辨认,它们自然可以作为合适的对照词。这样,随着越来越多的未知词被世界各地的挑战者解决掉,对照词库也更加丰富,这个系统自然也越来越健壮。 我们现在来看一下第一张图片里的两个单词,reffeFr这个词是控制词,因为系统已经知道了这个词的意思,所以它可以尽情地扭曲这个词来加大OCR识别这个单词的难度;recall是未知词,系统当然也可以对这个词做一些扭曲变形,不过,既然reCAPTCHA肩负拯救世界的使命,它完全可以对人类降低识别难度,同时也就降低了普通人拯救世界的门槛。 那么,reCAPTCHA肩负了什么样的使命呢?那就是我前面提到的,海量图书和典籍的数字化。我们常说,互联网的发明给我嘛带来了海量信息,在这个信息爆炸的时代,我们获取信息变得极为便利,以至于我们目不暇接。其实让时光倒流几个世纪,印刷机的发明,同样引燃了中世纪的信息爆炸。甚至我们可以看到更久远,纸张的发明……仅仅印刷术和出版业数百年的发展就为我们留下了浩如烟海的图书,但随着时光流逝和天灾人祸,也不断有图书亡佚和典籍散失。亚历山大图书馆的浩劫以及萧绎焚书的悲剧,让读书人每每为之扼腕。因此,不论Google Books,Internet Archive还是古藤堡计划,都是在拯救人类文明和智慧的成果。而从现在reCAPTCHA的实践来看,这个项目确实大大加速了图书数字化的过程:如果仅仅扫描图书,这样的扫描结果基本难以利用,想想自己看扫描版PDF的痛苦就知道了(卡通漫画除外);如果纯人工录入,速度慢也易出错;借助OCR,错误率高,不可靠。而reCAPTCHA可以快速,准确,自动地完成这一繁重工作。下面让我们用数字说明问题。 以下数据摘录于2008年9月《科学》杂志的文献 每天人类解决上百万个reCAPTCHA谜题。正确率超过99%。 在识别结果中,67.87%的可疑词只经过两个挑战者的辨认就被解决。 该系统运行一年后,人类解决了12亿reCAPTCHA谜题,4.4亿可疑词被成功辨认。 可以想象,2008年以来随着reCAPTCHA被越来越多的网站使用,我们在不知不觉中又完成了许许多多书籍的数字化工作。这也是互联网时代来自大众的力量。 目前reCAPTCHA这个项目已被Google收购,主页在此。现在该项目主要专注于Google Books项目以及New York Times的数字化,支持的语言有多种,但目前还不支持中文。另外,对于《死海古卷》这种上古文字,《银雀山汉墓竹简》这种考古学家都视为畏途的,也确实难以借助广大普通人的力量。如果中文图书的数字化有机会用这样的思路来做,对于中华古文化的传承会有坚强的助力作用。 总之,reCAPTCHA技术一举多得,如果你读了这篇小小的介绍有所感触,那么请不吝留下评论,顺便解决一两个谜题,为拯救世界出一份力。 最后顺便说一句,如果一组reCAPTCHA验证码特别难认,挑战者可以放弃这次挑战,换一组验证码。不过,如果累计有六位挑战者表示放弃,而这时这个谜题仍未解决,那么系统会遗憾地将这个谜题设置为不可解,不再作为挑战题目。如果这样的话,世界上某一本书的某个角落,某段文字或某个单词失去了被自动数字化的机会,要解决这个难题可能只能关门,放专家了。 为了避免这种悲剧的发生,咱们还是再试一次吧,咱们强过OCR的,放心吧。