結果ページは、翻訳を写真の上にブロックごとにレンダリングします。各ブロックの翻訳は、OCR エンジンがソーステキストを検出した正確な矩形に表示されます。オーバーレイは透明度スライダーをサポートしているため、ユーザーはページを離れることなく、原文と翻訳を並べて比較できます。
オーバーレイの仕組み
- ブロック単位の翻訳。 検出された各 TextBlock は、独立した翻訳ジョブとして ML Kit に送信されます。翻訳は完了する順にオーバーレイにストリームされ、ユーザーはブロックがエンジン の完了順に「翻訳されていく」のを見ます。
- 矩形による位置決め。 翻訳されたテキストはソースブロックの境界ボックスに合わせてラップおよび配置されます。ブロックが狭い場合、翻訳は複数行にラップされ、ソース矩形をわずかにオーバーフローする可能性があります。エンジンは厳密な包含よりも可読性を優先します。
- タップしてフォーカス。 翻訳されたブロックをタップすると、底面シートが開き、「完全翻訳」ビューの同じブロックまでスクロールするため、写真を拡大することなく長い翻訳を読むことができます。
- 調整可能な透明度。 スライダーがオーバーレイレイヤーの不透明度を制御します。完全に透明にスライドすると元の写真が見え、完全に不透明にすると翻訳が読めます。
結果ページの解剖
- トップバー. 閉じるボタン。他のコントロールはありません — 結果ページは意図的にミニマルです。
- メインエリア. フルスクリーンの元写真の上にオーバーレイレイヤーが描画されます。InteractiveViewer で小さなテキストを検査するためのズームとパンが可能です。
- ボトムシート. 3 つの状態: 折りたたみ(デフォルト)、中間(画面の約半分)、展開(画面のほとんど)。折りたたみ状態は小さなハンドルと概要を表示します。中間状態はブロックごとの翻訳をカードとして表示します。展開状態はすべてのブロック翻訳をフル幅で表示します。
- シートの 2 つのタブ. 「Blocks」タブは OCR ブロックごとにグループ化された翻訳を表示し、「Full」タブは結合されたフル段落翻訳を表示します。
なぜブロック単位の翻訳なのか
- 混合スクリプト. 英語のヘッドラインと日本語のキャプションを含むページは、ブロックごとのソース言語ヒントの恩恵を受けます。ブロックの位置とスクリプトクラスが、エンジンがどのソースモデルを使用するかを通知します。
- 障害の分離. 1 つのブロックの翻訳の失敗は、ページ残りのブロックの翻訳をブロックしません。オーバーレイは失敗したブロックに小さな警告バッジを付け、ユーザーが手動で確認する必要があるブロックを示します。
- レイアウトの保持. ソースを読むユーザーは、対応する翻訳を目で追うことができます。これはメニュー、看板、ラベルなど、空間的関係が重要な場合に便利です。
編集の動作
オーバーレイは写真の上にレンダリングされ、焼き付けられません。履歴に保存すると、元の写真とブロックごとの翻訳レコードの両方が保存されます。保存されたエントリを開くと、オーバーレイが正確に再現されます。写真の編集はサポートされていません。