How the engine runs in your browser
The page loads tesseract.js, a build of the Tesseract OCR engine compiled to WebAssembly, and starts it in a web worker so the page stays responsive. On the first run the worker, the core and the English language model are downloaded from this site. The browser caches them, so later runs start almost at once. The image itself is passed to the worker as a file, never to a server.
Recognition uses Tesseract's LSTM line recogniser: it finds lines of text, segments them, and predicts characters sequence by sequence against the English model. Because the work happens on your CPU, a large photo on an older phone can take a while, and the progress bar reflects that. The worker is shut down after each image to free memory.
Reading the status line and the confidence score
While the engine works, the status line reports what it is doing, from loading the core and initialising the API to recognising text, with a percentage for the current stage. When it finishes, the text appears in an editable box and a pill shows the confidence: the engine's mean word confidence from 0 to 100, coloured green, amber or red at the 80 and 60 marks.
A status of No text found means the engine returned nothing, which happens with pictures that contain no readable text, images that are far too small, or text that is light on dark and low in contrast. Below 60 the page adds a reminder to try a sharper, straighter image rather than fixing hundreds of errors by hand.
Getting a better capture
Most OCR errors are capture errors. Scan paper at 300 dpi or photograph it flat, square-on and in even light with no shadow across the page. Crop to the text you want. A photo that includes the desk, a hand or a second page gives the segmenter more to get wrong. For text on a screen, take a screenshot at normal zoom instead of photographing the monitor.
Dark text on a plain light background is the case the model is trained on. Switch a dark-mode app to light mode before capturing, straighten rotated images in any photo editor, and avoid heavily compressed JPEGs where the letters have halos. Decorative fonts, outlined or shadowed text and coloured text over photographs all cut accuracy sharply.
Mistakes to look for in the output
Even a green result deserves a read-through before you paste it anywhere that matters. The classic confusions are l, I and 1; O and 0; rn read as m; and a dropped or doubled punctuation mark. Numbers in tables deserve particular attention, because a single wrong digit in an invoice total or a serial number looks perfectly plausible.
Layout is not preserved. The engine returns plain text with line breaks, so columns of a table may be read across rather than down, and a two-column article may interleave. Crop each column and run it separately when that matters. The box is editable, so fix errors there, then paste into the word counter if you need a count.
Limits and when another page is better
English only: the page ships the English model, so other languages recognise only where their words share Latin letters, and accented characters are often misread. One image per run, image formats only. A PDF must be exported to PNG or JPG page by page first. Handwriting is largely out of scope, and a photo of a QR code is a job for the QR code scanner, not OCR.
Speed and memory depend on your device, and very large photos can exhaust a phone browser. Resize to a few thousand pixels wide if recognition fails outright. Nothing is stored between visits except the cached engine files, so download or copy the text before you leave the page.