Страница результатов отображает переводы поверх исходного фото, по одному наложению на каждый блок OCR. Перевод каждого блока появляется в том самом прямоугольнике, где OCR-движок обнаружил исходный текст. Наложение поддерживает ползунок прозрачности, чтобы пользователи могли сравнивать оригинал и перевод бок о бок, не покидая страницы.
Как работает наложение
- Поблочный перевод. Каждый обнаруженный TextBlock отправляется в ML Kit как независимая задача перевода. Переводы поступают в наложение по мере завершения; пользователь видит, как блоки «становятся» переведёнными в порядке завершения движком.
- Позиционирование по прямоугольнику. Переведённый текст переносится и позиционируется так, чтобы поместиться в исходный прямоугольник. Если блок узкий, перевод разбивается на несколько строк и может слегка выходить за пределы исходного прямоугольника; движок предпочитает читаемость строгому соблюдению границ.
- Нажмите для фокусировки. Нажатие на переведённый блок открывает нижний лист, который прокручивается к тому же блоку в представлении «Полный перевод», позволяя пользователям читать более длинные переводы без увеличения фото.
- Регулируемая прозрачность. Ползунок управляет непрозрачностью слоя наложения. Сдвиньте до полной прозрачности, чтобы увидеть исходное фото, до полной непрозрачности — чтобы читать переводы.
Анатомия страницы результатов
- Верхняя панель. Кнопка закрытия. Других элементов управления нет — страница результатов намеренно минималистична.
- Основная область. Исходное фото в полноэкранном режиме, над которым отрисован слой наложения. InteractiveViewer позволяет масштабировать и панорамировать для inspect малого текста.
- Нижний лист. Три состояния: свёрнутый (по умолчанию), средний (около половины экрана), развёрнутый (большая часть экрана). Свёрнутый показывает небольшую ручку и сводку; средний показывает поблочные переводы в виде карточек; развёрнутый показывает все блочные переводы на полную ширину.
- Две вкладки в листе. Вкладка «Blocks» показывает переводы, сгруппированные по блокам OCR, а вкладка «Full» показывает соединённый полный абзацный перевод.
Почему поблочный перевод
- Смешанные шрифты. Страница с английскими заголовками и японскими подписями выигрывает от подсказок исходного языка на уровне блоков. Положение и класс шрифта блока сообщают движку, какую исходную модель использовать.
- Изоляция ошибок. Сбой перевода одного блока не блокирует остальную часть страницы. Наложение помечает неудачные блоки небольшим значком предупреждения, чтобы пользователи знали, какие требуют ручного внимания.
- Сохранение компоновки. Пользователи, читающие исходный текст, могут найти соответствующий перевод глазами — полезно для меню, вывесок и этикеток, где важна пространственная связь.
Поведение редактирования
Наложение отрисовывается поверх фото, а не впекается в него. Сохранение в историю сохраняет как исходное фото, так и запись поблочного перевода. Открытие сохранённой записи точно воспроизводит наложение; редактирование фото не поддерживается.