reCAPTCHA - キャプチャを利用した人力高性能OCR
reCAPTCHA という新サービスはすごい。その構想力には感動させられた。

念のためにCAPTCHA(キャプチャ)について説明しておくと、スパムプログラム(bot)と人間のユーザを見分けるための簡単な(しかし機械にとっては難しい)クイズのことだ。ある程度ウェブを使っている人なら、ネットサービスの登録時やコメントの書き込み時などに、読みにくく加工されたアルファベットを読まされたりした経験があるだろうと思う。
それらのサイトでは、あなたが人間にしかできないクイズを解いたのを見て、ユーザ登録やコメントの投稿を受け付けたりする仕組みになっているわけだ。文字を読む以外のCAPTCHAもあるけれど、一番多用されているのはこの手のものだろう。
文字をぐにゃりと曲げたり、色をつけて機械から読まれにくくしたりという仕組みは、プログラマーが自分で作ることもあるし、CAPTCHAの仕組み自体をネットサービスとして提供しているようなところもある。ここまでがおさらい。
reCAPTCHAサービスの新しい点
reCAPTCHAでは、このCAPTCHA画像を生成してくれて、正解かどうかをつきあわせるサービスを提供している。しかし、ここで「よく考えたなあ」と思うのは、ユーザが解くこの大量の小さなクイズの力を、別の問題の解決「にも」使う仕組みとしたところだ。

reCAPTCHAのサービスを使って自分のブログやウェブサイトにCAPTCHAを配置すると、そこに来たユーザは、二つの単語を入力しないと目的が達成できないようになる。なぜ二つなのか、のところにこのサービスの秘密があるのだ。
reCAPTCHAのトップページに大きく出ているのは、”STOP SPAM. READ BOOKS.”(スパムを無くし、本を読もう)というスローガンだ。
実は、これらのCAPTCHA画像は、きれいなフォントから加工して作られたものではなく、紙の本をスキャンして、OCRで読み込んだ単語のうち、認識に失敗した単語なのだ。
二つのCAPTCHAのうち一つは、reCAPTCHAが既に正しい読み方を知っているCAPTCHAだが、もう一つは、まだ読み方がわかっていないCAPTCHAが表示される。
ユーザかロボットかまだわからないが、知っている片方を正しく読めたのであれば、もう一方の入力も正解に近いのではないか、という情報をreCAPTCHAは利用して、これまで機械で読み取れなかった単語を読み取れるようになる。(さらに、他のエンドユーザにも何度かこれを解かせることで、認識の確からしさを上げる仕組みになっているらしい)
ネットの向こうのたくさんのユーザを、仮想的なプログラムにしてしまう
「知ってる情報」と「知らない情報」を組み合わせて解かせることで、ネット上の数十万、数百万のユーザを、機械読み取りに失敗した単語を読む機械にしてしまったわけだ。もちろん、十分な数のエンドユーザが確保できれば、だけど。
この仕組みは無料で使えるので、ウェブサイトやブログのオーナーには、自分でCAPTCHAシステムを用意しなくてもいい、というインセンティブがある。
エンドユーザは、今でもいろんなところでCAPTCHAを解かされているわけで、それがこのreCAPTCHAに変わったからといって問題はない。このreCAPTCHAプロジェクトでは、過去の貴重な紙情報をデジタル化していくという使命もあるわけで、仕組みを知っているユーザにとっては、ただ面倒なことをさせられているだけではなく、文化事業にわずかではあるが貢献している、というインセンティブもでてくるかもしれない。
reCAPTCHA APIとさまざまなライブラリ
たくさんのエンドユーザを確保するのが大事だと思うので、そのためにもいろんな手が打たれているみたいだ。
Resourceのページでは、WordPressやphpBBなど、著名なブログやフォーラムのオープンソースアプリケーションのためのプラグインが提供され、PHP向けのライブラリもある。APIとして、汎用的なAPIと、メールアドレスをスパマーのロボットから隠すために機能特化したAPIの二つも提供されている。
メールアドレスを隠すのにこのreCAPTCHAを使うサンプルは、ここで試すことができる。二つ正しい単語を入れれば、隠されたメールアドレスを知ることができるようになっている。