オフライン翻訳は iPhone 上でどう機能するか
アプリの翻訳パスは完全にオンデバイスで実行されます。写真も OCR 結果も翻訳リクエストも iPhone を離れることはありません。この投稿では、「オンデバイス」が実際に何を意味するのか、モデルがどこにあるのか、ローカルで翻訳を実行することで生じるトレードオフについて説明します。
デバイス上で実行される部分
カメラの翻訳には、電話で発生する 3 つの独立した作業があります:
- OCR. フォークされた
vision_text_recognitionパッケージがローカルでテキスト認識を実行します。ラテン文字、中国語(簡体字および繁体字)、日本語、韓国語のスクリプトをサポートします。認識された各テキストブロックには、独自の境界ボックスと検出されたテキストが含まれます。 - 翻訳. Google ML Kit のオンデバイス翻訳エンジンが OCR 出力を取り込み、翻訳テキストを生成します。エンジンは、言語ペアごとにダウンロード可能な言語モデルとしてバンドルされています。アプリはオンデマンドでモデルをダウンロードし、ディスクにキャッシュします。
- レンダリング. 結果ページは、OCR エンジンが返した境界ボックスを使用して、各翻訳済みブロックを元の写真の上に描画します。オーバーレイをレンダリングするためにサーバーへのラウンドトリップは必要ありません — 画像、ソースブロック、翻訳はすべてデバイスのメモリ内にあります。
なぜこれが重要か
- プライバシー. 街頭の標識、契約書、医療フォーム、個人的な通信の写真はデバイス上に残ります。パイプラインのどこにもアップロードステップはないため、漏洩や召喚や販売できるものはありません。
- レイテンシ. ネットワークのラウンドトリップはありません。最近のデバイスで、典型的なスマートフォン撮影ページの OCR は 1 秒もかからずに完了し、ブロックごとの結果の翻訳は各ブロックの完了とともにストリーミングされます。
- オフライン. パイプラインは飛行機、地下室、トンネル、列車、通信圏外の地域で動作します。OCR エンジンと翻訳エンジンは一度ダウンロードされ、無期限に再利用されます。キャプチャごとに取得されるものはありません。
- コスト. アプリは翻訳 API に文字単位で支払うわけではないため、機能が持続可能であるために使用量ベースの有料壁や月次文字制限は必要ありません。無料ティアは同じパイプラインです。
モデルの場所
ML Kit は 19 言語のオンデバイス翻訳モデルを公開しています。各モデルは約 10〜50 MB です。ソース言語またはターゲット言語を選択すると、アプリは初回使用時に対応するモデルをアプリのローカルサンドボックスにダウンロードします。モデルはアプリの再起動をまたいで存続します。削除するとすぐにストレージが回収されます。
サポートされている言語の完全なリスト:アラビア語、中国語(簡体字)、チェコ語、オランダ語、英語、フランス語、ドイツ語、クロアチア語、ハンガリー語、イタリア語、日本語、韓国語、ポーランド語、ポルトガル語、ルーマニア語、ロシア語、スロバキア語、スロベニア語、スペイン語。
アップロードされるもの(およびされないもの)
- アップロードされません。 写真、OCR テキスト、翻訳テキスト、履歴エントリ、言語モデルの状態。これらはどれもデバイスを離れません。
- アップロードされます。 匿名のクラッシュレポートと集計カウンター(例:「1 日あたりの翻訳リクエスト数」)。クラッシュレポートにはユーザーコンテンツは含まれません。将来レポートがコンテンツを含むことがあれば、それはバグであり、報告されるべきです。
ローカル実行のトレードオフ
- 限定された言語リスト。 ML Kit がオンデバイスモデルとして公開する言語のみがサポートされます。リストは厳選されており、現在 19 のエントリがあります。
- モデルのダウンロードが必要。 言語ペアの初回翻訳は 1 回限りのダウンロードをトリガーします。モデルマネージャーページはステータスを表示し、オフライン旅行のために事前ダウンロードできるようにします。
- 品質. 短く整形されたテキストの場合、オンデバイス翻訳の品質はクラウド翻訳に匹敵します。長い段落やドメイン固有の用語は、そのドメイン用に調整されたクラウドエンジンとは異なる場合があります。
- 計算. OCR と翻訳は電話の CPU と Neural Engine を使用します。単一のキャプチャのバッテリーへの影響は小さいですが、バッチワークフローでは測定可能です。
これがあなたにとって意味すること
機密文書を撮影すると写真が他人のサーバーに出てしまうのではないかとためらったことがあるなら、そのためらいがこのアプリが存在する理由です。パイプラインのすべての部分がローカルで実行され、アプリのデータモデルは、ユーザーが明示的に結果を共有することを選択しない限り、何もデバイスから出ないという前提に基づいて設計されています。