Pull the text out of a picture
Drop an image, pick one from your device or paste it with Ctrl+V, choose German or English and start the recognition. A few seconds later the text sits in an editable field you can correct, copy or save as a .txt file. Everything runs in your browser — no upload, no signup.
What is this good for?
It works well whenever the type is upright and clearly separated from the background:
- Screenshots from applications, PDFs, websites or video calls
- Scans of letters, invoices, contracts and forms
- Photos of flat originals, taken straight on and evenly lit
It gets harder with pages shot at an angle, shadows across the text, curved book pages, motion blur and text on a patterned background. The tool does not straighten images automatically (no deskew), so aim the camera squarely or crop the picture beforehand.
Why does resolution matter so much?
Because OCR compares letter shapes: with too few pixels per character, rn blurs into m,
1 into l and 0 into O. The Tesseract documentation ("Improving the quality of the
output") names 300 dpi as the practical lower bound for scans and recommends upscaling text
whose x-height is below roughly 10 pixels.
In practice: prefer a 300 dpi scan over a phone photo taken from a distance, and a screenshot at its original size over one that was shrunk first.
What does the confidence value mean?
The engine reports an average between 0 and 100 for the image. As a rough guide:
- 85 and above — looks clean, still check numbers and proper names
- 70 to 85 — usable, but expect mistakes
- below 70 — get a better original (closer, more light, straighter angle)
Important: the value measures how sure the model is — not whether it is right. OCR is occasionally confidently wrong, especially with digits. That is why the result field is editable: proofreading is part of the job.
German, English or both?
Each language ships its own model and dictionary. A German model reads "Straße" correctly, an English one quickly turns it into "StraBe". For mixed documents you can pick German + English; that costs some speed and is marginally less accurate per language, but saves a second pass.
Why does the first run download data?
Because recognition happens on your device. The first time, the WebAssembly core (about 3 MB) and the chosen language model (1.3 MB German, 3 MB English) come from our own directory — not from a third-party CDN. After that the language data stays in your browser cache and the next run starts instantly. The size is shown before you start, so nobody is surprised on mobile data.
What happens to my image?
Nothing that leaves your device. The picture is drawn into a canvas, handed to the recognition worker in the same tab and then discarded. There is no upload endpoint, no queue and no account. That is the actual reason to use this variant: payslips, medical letters and contracts do not belong on someone else's server.
Honest limits
- No handwriting, no blackletter — the models are trained on modern printed type.
- No layout preservation — multi-column pages, tables and forms come back as running text, and the column order can get mixed up.
- No automatic deskew, no exposure correction.
- One image per run. For whole documents there is the PDF tool "make searchable", which recognises each page and embeds an invisible text layer.