reCAPTCHA (リキャプチャ) というユーザー認証サービスがあります。このサービスの裏にあるアイデアが素晴らしいのでご紹介します。
reCAPTCHA の2つの役割
ウェブサービスへの登録時やブログにコメントする時に、以下のような認証画面が表示されます。reCAPTHA はスパムプログラムと人間を見分けるためのものです。
実際の認証画面は以下のイメージです。一度は使ったことがある方も多いでしょう。
アルファベットが読みにくくされています。時には読めないくらい崩れていることもあります。
機械は正しく読めないものでも、人間の視覚能力は読みにくい文字でも脳で処理できるようになっています。スパムと人間をうまく切り分ける役割を果たしています。
実はこの reCAPTHA は、ユーザー認証とは別の目的でも使われています。
上の認証画面の右下には stop spam. read books. とあります。興味深いのは read books です。reCAPTCHA は書籍のデジタル化に一役買っているのです。
reCAPTCHA のアイデア
書籍のデジタル化はページをスキャンし、OCR (光学式文字読取装置) という技術を使ってテキスト化しています。OCR は Optical Character Recognition の略です。OCR によって、スキャン画像としての文字情報はテキスト情報に変換されます。
ここで問題なのは、OCR によるテキスト化は 100% 正確ではないということです。例えば以下のように、電子化する書籍によってはスキャンの精度が悪くなり、OCR 後は間違った単語としてテキスト化されてしまいます (赤色の下線部) 。
reCAPTHA のアイデアは、OCR 読み取り失敗文字の修正のために、reCAPTHA でのユーザーからの入力情報が使われていることです。
仕組みは次の通りです。
テキスト情報化に失敗した文字を、スキャン時の文字の画像画像を reCAPTHA でユーザーに表示させます。そして、ユーザーは画像の文字をテキスト入力します。
つまり、文字修正をユーザーに代行してもらう仕組みです。例えば先ほどの This の OCR 変換が niis と失敗している場合、ユーザーに OCR 前のスキャン時の This を reCAPTCHA で表示し、ユーザーに This と正しく入力してもらうというやり方です。
もう少し詳しく書くと、reCAPTCHA では2つの異なる単語を表示させます。
- OCR で誤認識の単語
- 正しく読み取っている単語
ユーザーは2つの単語を入力することになります。以下の ycasho と MODULE を例にご説明します。
既に正しいとわかっている単語 (MODULE) をユーザーが正しく入力すれば、もう1つの修正した単語 (ycasho) もユーザーの修正入力は正しいと判定するロジックです。1つ目の入力でそのユーザーは信頼できるとし、ycasho も正しいとみなします。
このプロセスを通じて、電子書籍のための文字のテキスト化を、全く関係のないユーザーにやってもらっているのです。 reCAPTCHA を使い誤認識文字修正作業のアウトソースです。
ユーザーへのインセンティブ設計の工夫
一般的に、誤認識文字を修正する方法は、校正担当者に修正作業をやってもらうことです。
あるいはネットユーザーにやってもらうとしても、文字の修正作業は単純作業なので、修正してもらうのに金銭的なインセンティブを設定することになるでしょう。1回の修正で1円分のポイントを付与するなどです。
修正1回につき1円のコストでも、膨大な量の書籍をデジタル化していれば、修正箇所もその分多くなるので校正コストがかかります。
reCAPTCHA では、サイトに新規登録しようとしているユーザーや、ニュースやブログ記事にコメントをつけようとしているユーザーに、修正作業を肩代わりしてもらっています。ユーザーには直接お金を渡すことなくです。
ユーザーに何かをしてもらう際に、お金ではないインセンティブ (動機付け) をうまく設計し、精度の高い情報が得られます。
reCAPTHA のユーザーのインセンティブは、そのサイトに新規登録しウェブサービスを利用することや、記事にコメントを残すことです。
そのプロセスの前にある読みにくい文字の入力という手間があっても、インセンティブがあるのでやってくれます。入力を間違えたら次に進めないので (ユーザー登録やコメントできない) 、見にくい文字であっても読み取ろうとし、入力してくれます。
reCAPTHA を利用する人の大部分は、自分が書籍の電子化を手伝っているという認識はないでしょう。
認証の裏では1日に膨大な回数の文字情報のテキスト化の修正が行われているです。よく考えられている仕組みです。
※ 参考情報
reCAPTCHA|Wikipedia