reCAPTCHA – キャプチャを利用した人力高性能OCR

reCAPTCHA という新サービスはすごい。その構想力には感動させられた。

recaptcha-logo.gif

念のためにCAPTCHA(キャプチャ)について説明しておくと、スパムプログラム(bot)と人間のユーザを見分けるための簡単な(しかし機械にとっては難しい)クイズのことだ。ある程度ウェブを使っている人なら、ネットサービスの登録時やコメントの書き込み時などに、読みにくく加工されたアルファベットを読まされたりした経験があるだろうと思う。

それらのサイトでは、あなたが人間にしかできないクイズを解いたのを見て、ユーザ登録やコメントの投稿を受け付けたりする仕組みになっているわけだ。文字を読む以外のCAPTCHAもあるけれど、一番多用されているのはこの手のものだろう。

文字をぐにゃりと曲げたり、色をつけて機械から読まれにくくしたりという仕組みは、プログラマーが自分で作ることもあるし、CAPTCHAの仕組み自体をネットサービスとして提供しているようなところもある。

ここまでがおさらい。

reCAPTCHAサービスの新しい点

reCAPTCHAでは、このCAPTCHA画像を生成してくれて、正解かどうかをつきあわせるサービスを提供している。しかし、ここで「よく考えたなあ」と思うのは、ユーザが解くこの大量の小さなクイズの力を、別の問題の解決「にも」使う仕組みとしたところだ。

recaptcha.png

reCAPTCHAのサービスを使って自分のブログやウェブサイトにCAPTCHAを配置すると、そこに来たユーザは、二つの単語を入力しないと目的が達成できないようになる。なぜ二つなのか、のところがこのサービスの肝だ。

reCAPTCHAのトップページに大きく出ているのは、”STOP SPAM. READ BOOKS.”(スパムを無くし、本を読もう)というスローガンだ。「本を読む」?

実は、これらのCAPTCHA画像は、これまであったような、きれいなフォントから加工して作られたものではない。実在する紙の本をスキャンして、OCRで読み取ろうと試みた単語のうち、認識に失敗した単語のイメージをベースにしているのだ。

二つの単語のうちの一方は、reCAPTCHAが既に正しい読み方を知っている単語の画像だが、もう一つは、まだ読み方がわかっていない単語の画像ということになる。

出題の時点では回答者がユーザなのか、それともロボットなのかはまだわからない。しかし、知っている方の単語を正しく読めたのであれば、もう一方の入力も正解に近いのではないか、と推測することができる。reCAPTCHAはこの情報を利用して、これまで機械で読み取れなかった単語画像にある単語を正しく知ることができるようになる。(さらに、他のエンドユーザにも何度かこれを解かせることで、認識の確からしさを上げる仕組みになっているらしい)

紙の本は活字での印刷とはいえ、活字のばらつきやインクのにじみ、インクや紙の経年変化、スキャン時の紙面のゆがみなど様々な要因で、必ずしも100%OCRで認識できるわけではない。これまで、読み取れなかった単語は人が視認して訂正を入れていたのだろう。しかし、このreCAPTCHAの仕組みでは、ネットの向こうにいる多数のユーザに、ほんの少しずつ手間をかけてもらうだけで、結果的にたくさんの判別不能だった単語を拾うことにつなげられる。

ネットの向こうのたくさんのユーザを、仮想的なプログラムにしてしまう

「知ってる情報」と「知らない情報」を組み合わせて解かせることで、ネット上の数十万、数百万のユーザを、機械読み取りに失敗した単語を読む仮想的な機械にしてしまったわけだ。

もちろん、これから十分な数のエンドユーザが確保することは必要だけれども、それは結構うまくいくのかもしれない、と思った。

この仕組みは無料で使えるので、ウェブサイトやブログのオーナーには、自分でCAPTCHAシステムを用意しなくてもいい、というインセンティブがある。使ってみようというユーザはそれなりにいるだろう。

エンドユーザは、今でもいろんなところでCAPTCHAを解かされているわけで、それがこのreCAPTCHAに変わったからといって問題はない。このreCAPTCHAプロジェクトでは、過去の貴重な紙情報をデジタル化していくという使命もあるわけで、仕組みを知っているユーザにとっては、ただ面倒なことをさせられているだけではなく、文化事業にわずかではあるが貢献している、というインセンティブもでてくるかもしれない。

関係する人に誰も損をせずに、これまであった問題を解決しようとしている、という点でこのアイデアはすごいと思った次第だ。

reCAPTCHA APIとさまざまなライブラリ

実際にたくさんのエンドユーザを確保するのが大事だと思うが、そのためにもいろんな手が打たれているようだ。

Resourceのページでは、WordPressやphpBBなど、著名なブログやフォーラムのオープンソースアプリケーションのためのプラグインが提供され、PHP向けのライブラリもある。APIとして、汎用的なAPIと、メールアドレスをスパマーのロボットから隠すために機能特化したAPIの二つも提供されている。

メールアドレスを隠すのにこのreCAPTCHAを使うサンプルは、ここで試すことができる。二つ正しい単語を入れれば、隠されたメールアドレスを知ることができるようになっている。

[追記 2007.06.04] reCAPTCHA APIをyune_kotomiさんという方が日本語訳された

[追記 2007.09.17] GoogleがreCAPTCHAを買収しました

via del.icio.us/popular

この記事は移転前の古いURLで公開された時のものです

  • ブックマークが新旧で分散している場合があります。
  • 移転前は現在とは文体が違い「である」調です。(参考)
  • 記事の内容が古くて役に立たなくなっている、という場合にはコメントやツイッターでご指摘いただければ幸いです。最新の状況を調べて新しい記事を書くかもしれません

「reCAPTCHA – キャプチャを利用した人力高性能OCR」への4件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。