読み書きを学び、手書きノートへ回帰する
(research.google)- Google Researchの InkSight は、手書き文字の写真をペンストローク単位の デジタルインク に復元し、特別な機器なしで紙のノートをデジタルノートのように保存・修正しようとするアプローチ
- 単純なOCRがテキストの転写にとどまるのに対し、InkSightは文字を生み出した ストローク軌跡 を復元し、手書きのスタイルを保ったまま見返したり続きを書いたりできるようにする
- モデルは幾何学的特徴だけを抽出するのではなく、読み と 書き を同時に学習し、ViTエンコーダとmT5エンコーダ・デコーダで単語認識とストローク生成を処理する
- ページ全体については、OCRで単語単位の バウンディングボックス を見つけ、各単語を個別にデレンダリングした後、ピクセル文字を復元されたストロークに置き換える流れを使う
- 評価では約10億パラメータの Large-i の出力は複数の事例で人が作成したデジタルインクに近いと評価され、87%が良好なトレース、または小さな誤りしかないトレースとして示された
紙の手書きをデジタルインクに変換しようとする理由
- デジタルノートは耐久性、編集可能性、索引可能性を提供するが、多くの人はいまでも 紙とペン でノートを取っている
- 物理的な手書きをデジタル形式に変換する過程は デレンダリング(derendering) であり、結果はペンや指の動きを点列として保存したストロークとなる
- この表現は「オンライン」筆記表現、または デジタルインク とも呼ばれる
- 単純なOCRは手書き文字をテキスト文書に転写するが、デジタルインクは手書き文書をストロークの集合として捉える
- ユーザーがより自然に手で編集できる
- 字のスタイルと実際の手書きらしさを保持できる
- 画像、テキスト、リンク、デジタル補助機能とともにノートを整理・統合できる
- 従来はスマートペン、特殊な紙、専用ソフトウェアスタックを使う方式があったが、追加のハードウェアとコストが導入の障壁になっていた
InkSightが復元するもの
- InkSight: Offline-to-Online Handwriting Conversion by Learning to Read and Write は、手書きノートの写真から文字を生み出した ストローク を抽出する
- 追加の機器なしで写真だけを入力として使い、モデルと推論コードは GitHub repo で確認できる
- 画像のグラデーション、輪郭、形状といった典型的な 幾何学的構成要素 には依存しない
- モデルは2つの能力を同時に学習する
- 読むこと: 画像中の単語を認識する
- 書くこと: 手書きのように見えるストロークを出力する
- この組み合わせは、照明条件、遮蔽、多様な見た目といった難しい入力でもより頑健に動作するよう設計されている
ページ単位処理のためのシステムフロー
- 基本目標は手書きの ストロークレベル軌跡 を捉え、ユーザーが望むノートアプリに保存できるようにすること
- 内部的には既製のOCRモデルが手書き単語を識別し、その後モデルがその単語をストロークへ変換する
- 再現性、再利用性、導入のしやすさのため、広く使われる ViT エンコーダと mT5 エンコーダ・デコーダを組み合わせる
- 任意サイズの画像、多様な解像度、異なる量のコンテンツを処理しなければならないため、スケーラビリティ が主要課題となる
- 非常に高解像度の入力と長い出力シーケンスを直接学習すると計算コストが大きくなるため、ページのデレンダリングを3段階に分ける
- OCRで単語単位の バウンディングボックス を抽出する
- 各単語を個別にデレンダリングする
- オフラインのピクセル表現をデレンダリングされたストロークに置き換える
- レンダリングされたインクの合成画像と実際の写真のあいだのドメイン差を減らすため、データ拡張を使う
- インクの角度、色、ストローク幅をランダム化する
- ガウシアンノイズと複雑な背景を追加する
読み書きを同時に学習する方法
- 教師あり学習用の画像と正解デジタルインクのペアを十分に集めるのは高コストで時間がかかり、この作業に十分多様なデータセットは存在しないと考えられている
- InkSightは大量のペアサンプルなしで汎化するために マルチタスク学習 構成を使う
- 学習ミックスは5種類のタスクで構成される
- 画像からデジタルインクを生成する デレンダリング タスク
- 画像とOCR認識テキストを同時に入力し、デジタルインクを生成するデレンダリングタスク
- 実画像からテキストを出力する認識タスク
- 合成画像からテキストを出力する認識タスク
- テキストとインクを同時に出力する認識・デレンダリング混合タスク
- 各タスクはタスク別の入力テキストを用いて、学習時と推論時にモデルがタスクを区別できるようにする
- 読みの学習は、画像内のテキスト要素をより正確に位置付けて抽出する助けになる
- 書きの学習は、出力ベクトル表現が人の筆記方法に近い 物理的ダイナミクス とストローク順序に従うようにする
デジタルインク表現とトークン化
- 学習にはテキスト画像と対応する デジタルインク のペアが使われる
- デジタルインクはリアルタイム筆記軌跡からサンプリングされ、その後ストローク列として表現される
- 各ストロークは一定速度でサンプリングした点の列である
- 例では1秒あたり50点をサンプリングする
- 対応画像はインクを指定解像度のビットマップにレンダリングして生成する
- この過程は、モデル入力と出力の前提となる ピクセル-ストローク対応 を作る
- インクトークナイザは点をLLMに適した形式へ変換する
- 各点はx座標とy座標をそれぞれエンコードする2つのトークンに変換される
- インクトークン列はストローク開始を示す
bで始まる - その後にサンプリングされた点の座標トークンが続く
評価データと比較モデル
- 性能評価のために別途評価データセットを収集した
- 評価データはOCRデータから始め、人が提示されたテキスト画像を直接なぞった 人手生成トレース のペアを追加して構成される
- 3つのモデル変種を学習した
- Small-p: 約3億4千万パラメータ、public設定
- Small-i: in-house設定
- Large-i: 約10億パラメータ
- 比較ベースラインとして General Virtual Sketching baseline を使用する
- 自動評価と人手評価の両方で、システムが作成したベクトル表現は入力画像と意味的・幾何学的に類似し、人が作成したデジタルインクデータとも近い
定性的評価で見られた違い
- 公開評価データセット IAM、IMGUR5K、そしてドメイン外のスケッチデータセットでモデルとGVSを比較した
- InkSightモデルは概してテキスト内容を正確に反映し、意味に関係のない背景は無視する
- 遮蔽のある入力も処理でき、学習された 読解の事前知識 の利点が表れている
- GVSは重複ストロークを複数生成し、背景と前景を区別するのに苦労する
- Large-iはより多くの細部を保持し、より多様な画像スタイルを受け入れられる
- ドメイン外のスケッチでは、モデルは単純なスケッチをおおむねデレンダリングできるが、不要またはずれたストロークのような アーティファクト は依然として現れる
人手評価と限界
- この分野には現在、定量評価のための確立された指標やベンチマークがない
- 人手評価では HierText dataset の人手トレースデータを対照群とし、同じサンプルに対するモデル出力を実験群として使う
- 評価者は元画像とレンダリングされたデジタルインクサンプルを並べて見て、2つの質問に答える
- 出力が入力画像の妥当なトレースかを評価する
- このデジタルインクが人が作ったもののように見えるかを評価する
- 評価にはデジタルインクに慣れているが研究には参加していない16人が参加した
- 各サンプルは3人の評価者が評価する
- 結果は多数決で集計される
- Large-iが生成したデレンダリングインクの大半は、人が作成したものに近い水準と評価された
- Large-i出力の 87% は良好なトレース、または小さな誤りしかないトレースとして示された
- 例の比較では、すべてのモデルが上段サンプルの二重引用符を誤って処理し、下段サンプルでは人手トレースが主要な単語にだけ集中し、他の要素の大半を見落とした事例がある
- 人手トレースも元画像と完全には整列しておらず、HierTextの手書き部分をトレースする作業自体が複雑で難しい
結論
- InkSightは手書き写真をデジタルインクへ変換する 最初のタイプのアプローチ である
- 学習構成はペアになった学習データがなくても動作するよう設計されている
- 多様な入力に頑健に動作し、手書きノート全体に適用でき、ドメイン外のスケッチにもある程度汎化する
- 複雑なモデリングなしに標準的な構成要素で構築できるアプローチである
1件のコメント
Hacker News のコメント
小さな冷蔵庫用ホワイトボードを買ったのだが、iPhone が手書き文字を写真からテキストとしてコピーしてくれる機能と組み合わせると、かなり優秀だった
常に完璧というわけではないし、自分の字も完璧ではないが、1〜2文字直して送るには十分
画像全体を送らないので効率的で、タイピングやスワイプなしに画面を見なくてもよく、配偶者がいつでもリストを見られ、クラウドに上げる必要もない
電源も不要でマーカーは長持ちし、冷蔵庫の中のものが切れたときにすぐマーカーを手に取って冷蔵庫に書く流れがとても自然に感じられる
とても素晴らしい。こうした技術には興味深い応用がある。自分の手書き文字はかなりひどく、速く書くとさらに悪化する
教えるときに黒板に書く字が、望んでいるよりずっと汚いことが多い
こういうシステムに、自分がとてもゆっくり丁寧に書いた字を学習させておけば、授業中にホワイトボードへ急いで書いた汚い字を、もっときれいな自分の字に置き換えられそうだ
ボールペンとはフィードバックがまったく違い、紙やインクの種類にも影響を受ける。書くことが「予測しやすい」ものではなくなり、少し楽しくなる
中字のペン先の安い5〜15ドルくらいのものから始めてもよいし、万年筆収集に進む人もいるが、私は紙に書くものの大半を20ドルほどの Pelikan Jazz で済ませている
最初は遅くなるが、長くは続かない
大学でチューターをしていたときにもらった「流れを変える」助言の一つだった。もう一つは、本を常に後ろから前へ書き写せというものだった。とても役に立ったが、今ではやや時代遅れの方法だ
特に数式を説明する音声と LaTeX を組み合わせれば、エラーも補正できる
タイトルだけを見て、失われた能力を取り戻して、読みやすく美しい手書きノートをまた書けるようにする方法についての記事だと、素朴に思っていた
ここ数年、タイピングをしすぎて手書きが減ったせいで、今まさに自分が抱えている問題だ
Google の実際の研究も、自分のノートをデジタル上で多少ましにしてくれるので助けにはなる。だが、手書きを良くするのに技術革新へ依存したくはない
複数の高さをそろえたり、完璧な傾きを身につけたりするのを助ける特殊な罫線入り練習用紙を無料公開または販売している人たちもいる
初めて字を学ぶときと同じように、時間を取り、関心を持って、自分でやる必要がある
私の字は、ボールペンやジェルペンよりも万年筆で書くとずっと良くなる。万年筆が最適な位置と角度を強制するからだと思う。どんな角度でも紙に押しつければ書けるものではないので、より厳格で、より滑らかな使い心地とフィードバックもある
やりすぎる必要はなく、普通は20ユーロほどの Pilot Metro の中字ペン先や似た製品で十分だ
そこから自分だけのスタイルを簡単に発展させられる
万年筆は速度を落とすのに役立ったが、根本的には、見栄えのよい文字を意識して作れるだけ十分ゆっくり書くことの問題で、楽になってからは速度も上がった。それでも、きれいな文字を作るだけの注意を払う習慣は残った
練習用紙や訓練のような意図的な練習よりも、筋肉記憶が積み上がって速度が戻るまで、文字を正しく作れるだけゆっくり書くことのほうが重要だ
https://handwritingrepair.info/
また、次も見る価値がある
https://sites.google.com/view/briem/free-books
John Howard Benson の美しい The First Writing Book: Arrighi's Operina や Carolyn Knudsen の優れた An Italic Calligraphy Handbook もよい。タイトルは控えめだが内容はずっと良く、チゼル型マーカーや万年筆と一緒に使えばいい
10年前に OCR に Tesseract を使ってみたことがあるが、英語は十分うまく認識できていた。記憶が正しければ、Tesseract も Google が開発していてオープンソースだった
当時、英語以外の言語、つまりギリシャ語で試してみたところ、結果は非常に悪かった
Transformer ベースの優れた OCR 研究が出てきてうれしい
目次も OCR 処理し、ターミナルでページ分割設定を調整して、コピー&ペースト可能な出力が得られるまで試したうえで、検索・移動できる目次を追加した
1: https://github.com/ocrmypdf/OCRmyPDF の助けを借りた
2: https://tesseract-ocr.github.io/tessdoc/Command-Line-Usage.html、“ Using different Page Segmentation Modes”
それでも無料という利点はある
写真から 手書き文字を検出する分野の現在の最高水準が何なのか気になる
ストロークを追跡するのもいいが、自分の手書きノートを Markdown に変換することのほうにより関心がある
ただし精度は90〜95%程度に近いので、信じる前に出力は確認すべき
とても興味深い実験だ。ここ数年、手書きアプリケーションを作っているのだが、写真を撮って デジタルインクに変換する機能を入れられたら本当に良さそうだ
[0] https://scrivanolabs.github.io
医師の走り書きも読めるのだろうか? 可能なら 医療データ入力の分野で画期的になりそうだ
医師と治療担当の看護師の間に、もう一つ解釈の層を挟むのは非常に慎重であるべきだ
医学部で、昔の製図工に教えていたようなブロック体を教えていないのは残念だ
Apple Notes が自分の字を 自分の手書き風に補正したときは、ぞっとする瞬間だった
タブレットでペン入力を使える プログラミング環境には今でも期待している。Bluetooth キーボードを持ち歩くことを強制しないでほしい
残念ながら、ほとんどの人はお金を払わない可能性が高いので、ビジネス機会として気にかけているところはないようだ
紙とペンで作業するのも好きだが、構造化された入力よりは、アイデア出し、図、ToDo リストに向いている
「オフライン」の手書き、つまり紙上のインクを、「オンライン」形式であるストロークの順序とタイミングに変換するモデルは、歴史文書の手書き認識パイプラインに本当に有用になり得ると思う
しかし結局は、最初から最後まで統合された方式が必要だ
なぜ歴史文書の手書き認識が、あらゆるマルチタスクモデル評価ベンチマークでこれほど軽視されているのか分からない。索引化されていない手書きの歴史文書は何百万件もあり、それらは私たちの近い過去をはるかによく理解させてくれるはずだ
さらに言えば、モデルにも近い過去についてはるかに優れた理解を与えられるはずだ