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