「私はロボットではありません」CAPTCHAはどのように機能しますか?

「私はロボットではありません」CAPTCHAはどのように機能しますか?

これはグラフィックなので、ほとんどのボットにはない (どうやら) 大規模な OCR が必要ですか? たとえそうであっても、これは固定グラフィックなので、実際には OCR は必要なく、1 つのアイテムのライブラリに対する単純なパターン マッチングだけで済みます。それがボットを苛立たせる乗り越えられないハードルとなる理由がわかりません。

答え1

キャプチャはマウスの動作を監視します。ボットがフォーム上のボタンをクリックするのは簡単ですが、人間が動かすマウスの不規則な動きをシミュレートするのは困難です。

しかし、それは不可能ではありません。https://www.youtube.com/watch?v=fsF7enQY8uI

答え2

キャプチャ内のテキストは OCR によって認識されませんでした。OCR はテキストを認識するためにテキストの標準ルールを使用しました。

適切なテキストは通常​​、歪んでいたり、水平線に対して平行な直線ではなかったり、OCR が処理できないランダムなジャンクを含んでいたりします。

つまり、テキストがどのように表示されるかという通常のルールに違反していることになります。

ディープラーニングが一般的になるにつれ、キャプチャが機能しなくなるのは時間の問題です。

キャプチャにはさまざまな種類があり、テーマのあるグラフィックをいくつか選択する必要があるものもあります (たとえば、後でさらに洗練され、標識全体が組み立てられ、同じ方法でテキスト グラフィックが抽出された後に下のライブラリ メソッドに追加される標識の一部)。このタイプでは、既知のシナリオと、十分な数の同一の回答が受信されると既知のライブラリに追加される未知のシナリオを常に特定するように求められます。

画像は、次の 2 つの方法で最もよく使用されます。

1
単語からランダムに歪んだ単一の画像が生成され、その後 OCR を混乱させるために余分なジャンクが追加されます。レインボー攻撃を阻止するために「ランダムな」ジャンク ワードを追加してパスワード リストに「ソルト」を適用するのと同じです。

2
別の形式は、画像が複雑すぎて自動的に認識できないため、人がそれが何であるかを判断する必要があるものの写真 (通常は文字) を使用することです。通常、これはテキスト (または標識など) を定義するコンピューター プログラミング パラメーターの範囲外にあり、ランダムな環境に囲まれていることがよくあります。
これには、既知の「テキスト」または標識の一部など、その他のパラメーターを含む大規模な写真ライブラリが必要です。

補足:
2 番目の方法のライブラリは、ユーザーが正しく識別しようとする 2 つの画像を提供することで増加します。1
つの画像は既知で、もう 1 つの画像は未知
です。既知の画像を正しく解くことは、あなたがロボットではないことを証明します。
十分な数の人々が未知の画像に同じ答えで一致/回答すると、1 つが既知となり、既知のライブラリに追加できることを意味します。
これは、Google マップが実際に通り/場所の名前の標識であるものを識別し (その後、それらに含まれるテキスト)、OCR に失敗したプロジェクト グーテンベルクのテキストを修正する方法です。

関連情報