Heron PDF
All tools

Extract text from an image

Runs on your device — nothing is uploaded

A photo of a letter, a scan of a form, a picture of a receipt: what you want back is the page — the crest, the letterhead, the layout — with words inside it that can be selected and searched. That is what the first button gives you: the page as it stands, as a proper PDF, with the recognised text underneath it. Copying the words out as plain text is the other half of the job, and only worth doing when the words are all you need.

This reads print. It does not read handwriting.

ReadsA screenshot, a scan, or a steady, well-lit, close-up photo of printed or typed text.

Does not readAnything written by hand — and any photo that is dim, blurred or taken from far away.

Drop your images here or click to browse — processed locally, never uploaded

How it works

  1. Add the imageDrop a photo, a screenshot or a scan. PNG, JPG or WEBP — anything your browser can open.
  2. Press Extract textThe first run also downloads the recognition engine and the English model — about 6 MB, once, and your browser keeps them. A page that turns out to be Sinhala or Tamil pulls in those two models as well, about 2.4 MB more, and is read again.
  3. Save the page as a PDFOne button gives you the page itself as a real PDF: the crest, the letterhead and the layout exactly as photographed, with the words underneath so that they can be selected and searched. The words are in the result box as well, with Copy beside them.

What it reads well, and what it does not

Clean, straight, well-lit text comes back close to perfect — a screenshot, a printed page photographed flat, a receipt held square to the camera. The engine looks at the shape of each letter and matches it against its models of English, Sinhala and Tamil, so it does best when the letters are large, sharp and level.

It struggles, and you should expect it to, with handwriting; with photographs taken at an angle or in poor light; with very small print; and with columns, where two blocks of text sit side by side and the reading order becomes a guess. None of those are faults to be fixed — they are where this class of tool stops being reliable, and it is better to know before you trust the output.

One consequence is worth stating on its own. If your document is already a digital PDF, do not put it through here. A digital PDF contains its own text, which can be copied out exactly, with no recognition step and no mistakes at all. This tool exists for the case where the words only exist as pixels.

Sinhala, Tamil and English — all three, with nothing to choose

There is no language box, and that is not a simplification: a Sri Lankan letterhead normally carries all three on the same sheet, in three different places, and nobody should have to know in advance which of them a photograph is going to contain. So the page settles it the way a person would — read it, and see. It begins with the English model, and if that reading comes back unsure — which is what a Sinhala or Tamil page does to it — the other two models are fetched and the page is read again. The result says which languages were found.

A wrong answer here does not fail honestly, which is the reason the box has gone. An English model pointed at a Sinhala page does not refuse — it returns English words that match the shapes it thinks it sees, and a visitor has no reason to distrust them. Read with the Sinhala model alone, a real printed press release kept nine of its ten known Sinhala phrases and only two of its eight English ones: the address came back as characters that merely looked like words. English left the Sinhala untouched and took the English to eight of eight.

Tamil earns its place the same measured way. The same press release, read with Sinhala and English alone, lost its Tamil line outright — forty-nine characters under the crest, ஊடக வெளியீடு, which had been quietly mistaken for damage to the Sinhala. Carrying Tamil as well found that line and raised the confidence of the whole page from 81% to 85%. The extra model is 1.3 MB, downloaded once.

We measured both scripts rather than repeating someone else's figures. On a clean 300 dpi page in a modern typeface, not one character was wrong in either script across fifteen samples — Sinhala and Tamil were read exactly. Re-photograph the same page at 110 dpi through a heavy JPEG and Sinhala dropped to 7% of characters correct. Same engine, same font, same words; the picture was the only thing that changed.

That is the whole finding, and it is worth more than any setting on this page: the photograph decides the result. Fill the frame, hold it steady, keep the light even, and avoid a shadow falling across the page. Read that way, a Sinhala or Tamil page comes back as the page itself, and its words can be pasted into Text to PDF to be laid out as a real document — margins, headings, justified paragraphs — without anyone retyping it. Handwriting is the one case that does not work, in any of the three languages.

Why the first run takes longer

Recognition needs a real engine — the same Tesseract that desktop scanning software uses, compiled to run inside a browser tab. That is about four megabytes on its own, and it is the only place on this site where the first click is not immediate.

The language models are asked for separately, and only the ones the page needs. An English page takes the English model and nothing else — about 6 MB together with the engine, against the 8.5 MB this page used to make every visitor wait for. A page that turns out to be Sinhala or Tamil adds those two models, about 2.4 MB more.

That decision is the engine's own score for the first reading, and the line was measured rather than chosen. On our own test pages — a clean English page, a Sinhala one, a Tamil one, and a page carrying all three — the English reading scored 92, 40, 25 and 55, and the same pages read with all three models scored 94, 95, 73 and 87. The gap runs from 55 to 92 and the line is drawn at 80, which errs towards reading again on purpose: one unnecessary download costs a few seconds, and the mistake in the other direction costs a page of convincing nonsense. Read by the English model, that Sinhala page came back as 88 Latin letters and not one Sinhala character — the wrong answer arrives looking like English, so there is no foreign letter to notice, and the score is the only warning there is. If a result still looks wrong, the button beside it reads the page again with every model present.

It is downloaded once, only on this page, and only after you press the button. Your browser keeps it, so every run after the first starts straight away. It is served from this site rather than from somebody else's server, which is what keeps the promise on the rest of the page intact: once it has loaded you can switch the network off and recognition keeps working, and your image is never sent anywhere at any point.

Questions

Is my image uploaded?

No. The image is read into the page, turned into pixels, and compared against a language model that is already on your device. Nothing is transmitted. You can confirm it in your browser's network tab, or disconnect from the internet after the first run and watch it keep working.

Does it work on a PDF?

Not directly. If the PDF is digital, its text can be copied straight out and you should not use this tool at all. If it is a scan — a picture of a page, wrapped in a PDF — convert it with the PDF to Images tool and drop the resulting image here.

What languages does it read?

English, Sinhala and Tamil, and Sinhala or Tamil mixed with English on the same page. There is nothing to choose. The page is read with the English model first, and if that reading comes back unsure the Sinhala and Tamil models are fetched and it is read again in all three — the result says which languages it found. The fallback exists because the failure it guards against is silent: pointing the English model at a Sinhala page does not produce an error, it produces English words that resemble the shapes it thought it saw, so the score of the first reading is the only warning there is. If the result looks wrong, the button beside it reads the page again with every model present.

How accurate is it on Sinhala and Tamil?

On a clean scan or a straight, well-lit photograph of a printed page, effectively exact: in our own tests across fifteen samples per language, neither script produced a single character error. On a dim, blurry or heavily compressed photograph both fall a long way, Sinhala further than Tamil. The difference between those two outcomes is the picture, not the language, and not any setting here.

How accurate is it?

On a clean screenshot or a flat scan, close to exact. On a phone photograph of a page, usually readable with a few mistakes. On handwriting, not usable. Treat the result as a draft to check rather than a finished transcript.

Do I get a Sinhala or Tamil document, or only text?

You get both, and this is the part worth being exact about. The button under the result gives you the page itself as a PDF: the photograph you supplied, with the recognised words in a layer underneath it, so the crest, the letterhead and the layout survive exactly and a search still finds the words. The recognised text is in the box under the result as well, where you can correct anything the reader got wrong and copy it out. If you want that corrected text laid out as a fresh document — margins, headings, bullets, justified paragraphs — paste it into the Text to PDF tool, which sets Sinhala and Tamil correctly rather than drawing them one character after another. That is the honest answer: an editable rewrite comes from the other tool, and this one gives you the page.

Can I read several images at once?

Yes. Add as many as you like and they are read one after another, with each file's name above its text so nothing gets mixed up.

Does it keep a copy of my image?

No. Nothing is stored — not by this page and not anywhere else. Close the tab and the image and the text are both gone.

Does it work with no internet connection?

Yes, once the engine has been downloaded the first time. Recognition never needs the network, which is the point.

Related guides

Other tools