ML Kit のデジタルインク認識 API を使用すると、手書きのテキストを認識し、何百もの言語でデジタル表示面上のジェスチャーを分類し、スケッチを分類できます。デジタルインク認識 API は、Gboard、Google 翻訳、Quick, Draw! ゲームの手書き入力認識と同じテクノロジーを使用しています。
デジタルインク認識では、次のことができます。
- 仮想キーボードではなく、画面に書くことができます。これにより、ラテン アルファベット キーボードの Э、ヘイト キーボード、森など、キーボードでは使用できない文字を描画できます。
 - ジェスチャーを使用して、基本的なテキスト操作(ナビゲーション、編集、選択など)を行います。
 - 手書きの図形と絵文字を認識する。
 
デジタルインク認識は、ユーザーが画面上に描画したストロークに基づいて動作します。カメラで撮影した画像からテキストを読み取る必要がある場合は、Text Recognition API を使用します。
デジタルインク認識は完全にオフラインで動作し、Android と iOS でサポートされています。
主な機能
- 手書き文字を Unicode 文字の文字列に変換します
 - ほぼリアルタイムでデバイス上で実行
 - ユーザーの手書き入力はデバイス上に保持され、ネットワーク接続がなくても認識が行われます。
 - 300 以上の言語と 25 以上の書記体系をサポートしています。サポートされている言語の一覧をご覧ください。
-x-gesture拡張機能により、これらの言語のジェスチャー分類をサポートします。
 - 絵文字と基本的な図形を認識
 - 必要に応じて言語パックを動的にダウンロードすることで、デバイス上のストレージ使用量を抑える
 
認識ツールは、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 | |
|---|---|
| RecognitionCandidate #1 | Handw | 
| RecognitionCandidate #2 | Handrw | 
| RecognitionCandidate #3 | ハードウ | 
| RecognitionCandidate #4 | Handu | 
| RecognitionCandidate #5 | Handwe | 
操作
ジェスチャー分類器は、インク ストロークを下記の 9 つのジェスチャー クラスのいずれかに分類します。
arch:abovearch:below | 
    ![]()  | 
  
caret:abovecaret:below | 
    ![]()  | 
  
circle | 
    ![]()  | 
  
![]()  | 
  |
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 | |
|---|---|
| RecognitionCandidate #1 | 😂?(U+1f62d) | 
| RecognitionCandidate #2 | 🙁?(U+1f605) | 
| RecognitionCandidate #3 | 😹?(U+1f639) | 
| RecognitionCandidate #4 | 🎉?(U+1f604) | 
| RecognitionCandidate #5 | ❤(U+1f606) | 
    






