デジタルインク認識

ML Kit のデジタル インク認識 API を使用すると、手書きテキストを認識してデジタル サーフェス上のジェスチャーを何百もの言語で分類したり、スケッチを分類したりできます。デジタル インク認識 API では、Gboard、Google 翻訳、Quick, Draw! ゲームで手書き入力の認識に使用されるものと同じテクノロジーが使用されます。

デジタルインク認識を使用すると、次のことができます。

  • 仮想キーボードを入力する代わりに、画面に書き込む。ユーザーは、ラテン アルファベット キーボードの ⎓、अ、森など、キーボードで使用できない文字を描画できます。
  • ジェスチャーを使用して、基本的なテキスト操作(ナビゲーション、編集、選択など)を実行します。
  • 手描きの図形や絵文字を認識する。

デジタルインク認識は、ユーザーが画面に描画するストロークに対応します。カメラで撮影した画像からテキストを読み取る必要がある場合は、Text Recognition API を使用します。

デジタル インク認識は完全にオフラインで動作し、Android と iOS でサポートされています。

iOS Android

主な機能

  • 手書きテキストを Unicode 文字のシーケンスに変換します
  • ほぼリアルタイムでデバイス上で実行
  • ユーザーの手書き入力はデバイス上にとどまり、ネットワーク接続なしで認識が行われます。
  • 300 以上の言語と 25 以上の言語に対応しています。サポートされている言語の一覧をご覧ください。
  • 絵文字と基本的な図形を認識する
  • 必要に応じて言語パックを動的にダウンロードし、デバイス上のストレージを少なくする

認識機能は入力として Ink オブジェクトを受け取ります。Ink は、ユーザーが画面に書き込んだ内容のベクター表現です。一連のストローク(それぞれがタッチポイントと呼ばれる時間情報を含む座標のリスト)です。ストロークは、ユーザーがタッチペンまたは指を置いたときに始まり、上げると終了します。Ink は認識機能に渡されます。認識機能には 1 つ以上の認識結果が返されます。信頼度も返されます。

英語の手書き入力

以下の左の画像は、ユーザーが画面に何を描画したかを示しています。右側の画像は、対応する Ink オブジェクトです。ストロークには、各ストローク内のタッチポイントを表す赤いドットが付いたストロークが含まれています。

    

4 つのストロークがあります。Ink オブジェクトの最初の 2 つのストロークは次のようになります。

インク
ストローク 1 x 392、391、389、287、...
y 52、60、76、97、...
t 0、37、56、75、...
ストローク 2 x 497、494、493、490、...
y 167、165、165、165、...
t 694、742、751、770、...
...

この Ink を英語の認識機能に送信すると、5 ~ 6 文字を含む音声文字変換がいくつか返されます。信頼度を下げることによって順序が決定されます。

RecognitionResult
認識候補 1 Handw
認識候補 2 Handrw
認識候補 3 ハード
認識候補 4 Handu
認識候補 5 Handwe

操作

ジェスチャー分類器は、インク ストロークを下記の 9 つのジェスチャー クラスのいずれかに分類します。

ジェスチャー サンプル
arch:above
arch:below
caret:above
caret:below
circle
corner:downleft
scribble
strike
verticalbar
writing

絵文字スケッチ

以下の左の画像は、ユーザーが画面に何を描画したかを示しています。右側の画像は、対応する Ink オブジェクトです。ストロークには、各ストローク内のタッチポイントを表す赤いドットが付いたストロークが含まれています。

    

Ink オブジェクトには 6 つのストロークが含まれています。

           

インク
ストローク 1 x 269、266、262、255、...
y 40、40、40、41、...
t 0、36、56、75、...
ストローク 2 x 179、182、183、185、...
y 157、158、159、160、...
t 2475、2522、2531、2541、...
...

この Ink を絵文字認識機能に送信すると、信頼度が下がるときに複数の音声文字変換結果が返されます。

RecognitionResult
認識候補 1 Blogger(U+1f62d)
認識候補 2 Doze(U+1f605)
認識候補 3 😹?(U+1f639)
認識候補 4 💡?(U+1f604)
認識候補 5 ❗(U+1f606)