HN 日本語サマリー

← 一覧へ戻る
プログラミング

手書き認識の未来へ

Back to the Future of Handwriting Recognition (jackschaedler.github.io)

32 pointsby at1as8 コメント

要約

この記事は、1960年代にRAND社が開発したGRAIL(Graphical Input Language)システムとその手書き文字認識アルゴリズムを再訪するものです。当時のGRAILは、マウスやキーボードを使わず、ペン型の入力装置のみで自然な対話を実現しており、現代のインターフェースと比較しても洗練されていると評されています。本稿では、Gabriel Gronerが開発したリアルタイム手書き認識プログラムの仕組みを、インタラクティブなデモを交えながら解説します。

全文翻訳

手書き認識の未来へ アクティブエッセイ:GRAIL手書き認識装置を再訪する Jack Schaedler、2016年 50年前、RAND社はGraphical Input Languageソフトウェアシステム(GRAIL)を開発しました。1966年のRANDの覚書では、GRAILの目的は「ユーザーが問題に直接、自然に、そして容易に対処できる方法を調査すること」と述べられていました。ユーザーはペン型の筆記具とタブレットを使ってGRAILと対話しました。GRAILにはマウス、キーボード、ボタン、ジョイスティック、その他私たちが現代のコンピューティングと一般的に関連付けるようなものは一切ありませんでした。ユーザーが画面上に箱を必要としたら、彼らはその箱を描きました。ユーザーが画面上にテキストを必要としたら、彼らは手書きでテキストを入力しました。今日、このシステムのデモを見ると、それは依然としてエレガントで魔法のように感じられます。Tony Hoareの言葉を借りれば、GRAILは多くの点でその後のほとんどのシステムよりも優れています。 「この認識スキームは、ユーザーがコンピューターと自然に対話できるようにするという主要な目的を達成しています。ユーザーは操作上のメカニズムに気を取られることなく、問題に集中できます。」 - Gabriel Groner (1966) 上の画像は、1960年代のある時期に、Tom EllisがRANDタブレットを使って画面上の画像と対話している様子を描いています。EllisはRANDタブレットとGRAILソフトウェアシステムの発明者およびプロジェクトリーダーの一人でした。この画像やその他の多くの画像は、Computer History Museumのオンラインで見つけることができます。 このアクティブエッセイでは、Gabriel GronerのGRAILプロジェクトへの貢献を再訪します。Gronerは、手書きの文字、数字、句読点、幾何学図形を認識する、驚くほど巧妙なプログラムを開発しました。このプログラムは、IBM System/360コンピューターでリアルタイムに実行できるほど効率的であり、初めて使用するユーザーが描いた記号の90パーセントを正しく識別できるほど堅牢でした。Gronerは、その方法を1966年のRANDの覚書「Real-Time Recognition of Handprinted Text」に記録しました。このエッセイの終わりまでに、Gronerの手書き認識スキームがどのように機能するかを正確に理解できるようになるはずです。より正確には、Gronerの方法がどのように機能するかを見て、その様々な操作とフェーズの直感的な理解を深めることができます。 このエッセイは、Gronerの元の覚書の動的な伴侶として読むのが最適です。Gronerがアルゴリズムやヒューリスティックについて説明する際には、このエッセイはあなたが探索できるインタラクティブな実装を提供します。Gronerのメモから逐語的に取られたテキストは、代替フォントで表示されます。 元の覚書で説明されている認識スキームは、幅広い種類の記号、形状、数字、文字、さらには句読点を認識する能力がありました。このエッセイでは、大文字の数字と文字のみを識別できるGronerの認識装置の簡単なバージョンを紹介します。このエッセイのすべてのソースコードはGithubで公開されています。バグ、タイポ、提案は、イシュートラッカーに提出してください。この作品に関する質問やコメントがあれば、Twitterで私に連絡してください。実際、彼はIBM 360アセンブリで書いたGronerのプログラム全体のソースコードを読むことができます。 RANDタブレット 「現在のユーザーコンピューターインターフェースメカニズムは、最適とはほど遠いコミュニケーションを提供しており、マシンまたはユーザーの能力が十分に活用される可能性を著しく低下させています...水平な紙のパッドのような表面で、自由なペン型筆記具を使った人間の既存の器用さを探求することが有益であると感じられました。」 - M.R Davis and T.O. Ellis (1964) 人間はRANDタブレットを使用してGRAILと対話しました。システムへのすべての入力は、ペン型の筆記具を使用してRANDタブレットの表面に描かれました。10.24インチ×10.24インチのタブレットは、1インチあたり100本の線の解像度を持ち、100万以上の離散的なペンの位置を正確にデジタル化することができました。ペン先には感圧スイッチが取り付けられており、ユーザーが画面にマークを付けたいときにいつでもペンを筆記面に押し付けることができました。スタイラスの位置は、4ミリ秒ごとに(x, y)座標のペアとしてGRAILに報告されました。 以下に、描画や落書きができる仮想タブレットがあります。RANDタブレットと同様に、この仮想タブレットの表面は離散化されています。これは、筆記面がグリッドに分割されており、すべてのペンの位置がグリッド上の座標として報告されることを意味します。RANDタブレットの解像度は1インチあたり100本でしたが、私たちの仮想タブレットの解像度は約20本/インチとかなり低いです。したがって、仮想タブレットをRANDタブレットの小さな部分を約500%拡大したものと想像するのが最善です。タブレットに書き込む際は、この点を念頭に置いてください。タブレットの高さの約70%を占めるように、文字や数字を描いてください。大きく描きましょう! 描画を開始するには、ポインターをタブレットの上に移動し、マウスボタンを押します。これは、スタイラスをタブレットの表面に押し付ける行為をシミュレートします。マウスボタンを離さずに、ポインターをタブレットの表面に移動させてマークを作成します。マークに満足したら、マウスボタンを離します。 ペンを画面から離さずに完了できる数字(2、3、6)や文字(C、M、S)をいくつか描いて、タブレット上での作業の感触をつかんでください。仮想タブレットに落書きや描画に慣れたら、次のセクションに進んでください。 「ユーザーは、カソードレイチューブ(CRT)ディスプレイと組み合わせてRANDタブレットを介してコンピューターと通信します。タブレットハードウェアは、水平な10インチ四方の筆記面とペン型の筆記具で構成されています...ペンをタブレットの筆記面に押し付けると、ペン内のスイッチが閉じ、それによってCPUに「ペンダウンアクション」が通知されます...ペンが持ち上げられると、ペンスイッチが閉じ、それによってCPUに「ペンアップ」アクションが通知されます。ペンが筆記面を移動するにつれて、認識スキームは4ミリ秒ごとにその位置を通知されます。」 器用さについて:Bret Victorの「Brief Rant on the Future of Interaction Design」を参照してください。これは1963年としては非常にクールな技術でした。設計と実装の詳細については、RANDの覚書をここで読むことができます。RANDタブレットに関するより逸話的な情報に興味がある場合は、Alan KayがRANDタブレットについて議論しているこのビデオをご覧ください。 私はここで最適とは言えない用語を使用しています。なぜなら、あなたがこのエッセイを読むためにどのようなデバイスを使用しているのか全く分からないからです。もしそうでないとしても、マウスやクリックといった言葉は、すぐにキャリッジリターンのように時代遅れに感じられるようになるだろうと確信しています。つまり、トラックパッド、タッチスクリーン、タブレットのようなマウスを使わないものを使用している場合は、その場で翻訳する必要があるということです。 スムージング タブレット上で作成したマークが、画面に表示されると醜い小さな摂動やギザギザが現れることに気づいたかもしれません。これは、タブレットが離散的なグリッド上にのみ存在するペンの位置しか報告できないためです。これは、滑らかに描かれた曲線でさえ、タブレットでキャプチャされた後には避けられないように小さな隆起や角が含まれることを意味します。これらのギザギザは醜く見えるだけでなく、より重要なことに、ペンの位置のリストに不要なノイズを追加します。このノイズを除去するために、Gronerはタブレットの出力をスムージングすることにしました。 「このスキームは、新しく到着したデータポイントを以前にスムージングされたデータポイントと平均化することによりデータをスムージングし、それによってタブレットで測定されたペンの位置の離散性に起因するノイズを低減します。」 Gronerが離散性に起因するノイズと呼んでいるものを、あなたはピクセル化と表現するでしょう。下の図は、滑らかに描かれたストロークに対するピクセル化または離散化の効果を実感させてくれます。「描画」ボタンを押して、滑らかな曲線を描く際のペンの実際の軌跡を確認してください。曲線が描画されたら、「スナップ」ボタンを押して、各点が離散グリッド上に配置される効果を確認してください。どのように