Lens test harness

extract—
ocr—
ocr calls—
words read—
first token—
payload—

Plate A — shapes, bars, figures

Dashboard sample

Plate B — dense text

Field notes sample

Live DOM text — exercises the tab-capture path

This block is real DOM, not an image, so boxing it forces the capture path through getDisplayMedia. The stream is kept alive afterwards, so the second capture skips the picker entirely.

Targeted OCR should never touch this whole panel. It crops only the line boxes that lens-extract already mapped, stacks them into short strips and hands those to the worker pool. Watch the ocr calls meter: a dozen lines should cost two or three calls, not twelve.

If words read stays at zero while lines are detected, the vendored traineddata is missing and the loader fell back to the public tessdata host.

Enriched blueprint

Nothing captured yet. Drag the reticle over a plate, or paste an image.