Block overlay explained: how translations land on the photo

Last updated: 2026-09-03

Block overlay explained: how translations land on the photo

The result page renders translations back over the original photo, one overlay per OCR block. Each block's translation appears in the exact rectangle the OCR engine detected the source text in. This post explains how the overlay is laid out, how it interacts with the photo and how to read it.

Why per-block

OCR returns a list of blocks, not a single string. Each block carries its own bounding box, detected text and a confidence score. The result page treats each block as an independent unit:

How translations stream

Each detected block is sent to ML Kit as an independent translation job. Translations stream into the overlay as they complete; the user sees blocks "become" translated in the order the engine finishes them. The overlay updates incrementally; no blocking spinner is shown for the full page.

How the overlay is positioned

The translated text is wrapped and positioned to fit the source block's bounding box. If a block is narrow, the translation wraps to multiple lines and may slightly overflow the source rectangle; the engine prefers legibility over strict containment.

The overlay is rendered above the photo, not baked into it. Saving to history stores both the original photo and the per-block translation record. Opening a saved entry reproduces the overlay exactly.

Transparency slider

A slider at the top of the sheet controls the opacity of the overlay layer. Slide to fully transparent to see the original photo, fully opaque to read the translations. Half-transparency is the common setting for comparing the original and the translation side by side without leaving the page.

Tap to focus

Tapping a translated block opens a bottom sheet that scrolls to the same block in the "full translation" view. This is useful for blocks where the on-photo translation is truncated or wrapped in a way that hides the full sentence.

Result page anatomy

Why some blocks show a warning

A warning badge appears on a block when its OCR confidence is below a threshold. The block is still translated and rendered, but the user is told to check it. Common causes: low light, glare, handwriting, decorative fonts, very small text.

Saving

Saving to history captures the photo (compressed to a thumbnail), the OCR blocks, the per-block translations and the joined full paragraph. Opening the saved entry reproduces the overlay exactly; editing the photo is not supported.