言語の自動検出:アプリがソース言語をどう選ぶか
自動検出はソース言語ピッカーの最初のオプションです。これを選択することは、アプリがソースについて意見を持っていないという意味ではありません — アプリが翻訳ごとに、OCR のブロックごとの言語ヒント(写真の場合)または Dart レイヤーの文字セットヒューリスティック(テキストの場合)を使用して、特定の ML Kit ソース言語を選択するという意味です。
翻訳ごとの理由
ML Kit のオンデバイストランスレータは、翻訳が実行される前に特定のソース言語をダウンロードする必要があります。自動検出は「任意の言語から翻訳する」という意味ではありません。19 のサポートされている言語のいずれかに翻訳ごとに解決する必要があります。アプリはこの解決を自動的に行います。
写真での仕組み
カメラキャプチャの場合、OCR エンジンは認識された各ブロックに対してブロックごとの言語ヒントを出力します。ヒントはページ全体で集約され、多数派言語がその翻訳の ML Kit ソース言語になります。
単一言語のページはきれいに解決されます:韓国語のキャプションのページは韓国語に解決され、フランス語の本文のページはフランス語に解決されます。混合スクリプトのページは、単一言語が優位を占めない場合、デフォルトにフォールバックします。
ブロックごとの翻訳は、これらのヒントをより細粒度で使用します。英語のヘッドラインと日本語のキャプションを含むページは、多数派言語が不明確な場合でも、ブロックごとに適切なソースを使用して翻訳できます。
テキストでの仕組み
テキスト翻訳の場合、アプリは Dart レイヤーのヒューリスティックを実行し、スクリプトクラス別に文字をカウントします:
- 漢字 → 簡体字中国語
- 仮名 → 日本語
- ハングル → 韓国語
- ラテン文字 → 英語
- キリル文字 → ロシア語
- アラビア文字 → アラビア語
混合入力は多数派文字クラスに従います。空または空白のみの入力はデフォルトで英語になります。
ヒューリスティックは高速で(入力に対する単一の線形スキャン)、ML Kit 呼び出しの前に実行されます。選択されたソース言語が翻訳リクエストに使用されます。
自動検出が失敗する場合
- ダイアクリティカルマークのないラテン文字。 10 文字のラテンのみのスニペットは、英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語、オランダ語、ポーランド語、チェコ語、その他いくつかの言語の可能性があります。ヒューリスティックはデフォルトとして英語を選択します。ソースが英語でない場合、翻訳品質が低下する可能性があります。短いラテンスニペットにはソース言語を手動で固定してください。
- 具体性のないキリル文字。 キリル文字はロシア語、ウクライナ語、または他のスラブ語スクリプトの可能性があります。アプリはロシア語を選択します。
- 漢字スクリプトの曖昧さ。 簡体字と繁体字の中国語はほとんどの文字を共有しています。漢字の短いスニペットは、より長いコンテキストなしでは一方に解決できません。アプリは簡体字中国語を選択します。
これらの場合は、ピッカーからソース言語を手動で固定してください。
自動検出は決して無音ではない
翻訳が実行されるとき、ページには常に特定の ML Kit ソース言語があります。ヒューリスティックが誤ったデフォルトを返す場合、翻訳は間違っている可能性があります。正しい言語を返す場合、翻訳は機能します。アプリが「言語を選択できない」モードはありません。デフォルトにフォールスルーして翻訳します。
実用的なアドバイス
長く単一言語のドキュメントには、自動検出が機能します。短いスニペットや混合スクリプトのページには、ピッカーからソース言語を手動で固定してください。ピッカーは最近の言語を上に記憶しているため、2 回目に言語を使用するのは 1 タップです。