Tools › Images › Image to text
Image to text
Read the words out of a photo, a screenshot or a scan. The recogniser runs inside this tab, so the picture never leaves your machine, and every word it was unsure about is marked, so you know which ones to check.
- Doubtful words are underlined, instead of being mixed in with the good ones
- See the boxes on the picture, so you can find where a word came from
- As many images at once as you like, saved together as one file
- Works offline once the language has been downloaded
Drop an image, or click to choose
Paste a screenshot too. JPG, PNG, WebP, AVIF, GIF or BMP, up to 40 megapixels.
Extracted text
Language
Layout
Before reading
Output
View
What it takes, and what it costs
| Thing | Answer |
|---|---|
| Formats | JPG, PNG, WebP, AVIF, GIF, BMP, anything this browser decodes |
| File size | No cap. The file is never uploaded, so there is nothing to cap |
| Picture size | Up to 40 megapixels; past that the recogniser runs out of memory |
| How many at once | As many as you like, they queue, and save together |
| Languages | Six, each a 1–2 MB download the first time you pick it |
| Cost | Nothing. There is no server doing the reading |
How to extract text from an image
1. Give it the picture
Drop it in, choose it, or paste a screenshot. It starts reading immediately. The first read of each language downloads a megabyte or two of language data; after that the language is cached and works offline.
2. Read the marks, not just the text
Words the recogniser was unsure about are underlined in the Marked view and outlined in red on the picture. Those are the ones to check. The rest are right far more often than they are wrong.
3. Fix anything odd, then take it
Switch to Editable to correct anything, then Copy text or Save .txt. With several images loaded, Save all gives you one file per picture in a single zip.
The text, and what the underlines mean
Every word comes back with a confidence score, and the useful thing about that score is how sharply it separates: words scored below 90 are wrong often enough that they all deserve a glance, and words at 90 or above are wrong rarely enough that marking them would be noise you learn to ignore.
That is the entire reason this page marks anything. OCR does not fail loudly, it does not return blanks or question marks when it struggles, it returns confident-looking words that are wrong. A page of extracted text with no marks on it is a page you have to proofread against the original word by word, which is most of the work you were trying to avoid.
Layout: the control that fixes most bad readings
The recogniser has to decide what shape the text is before it can read it, and by default it assumes a page: columns, paragraphs, a reading order. Hand it a receipt and it hunts for columns that are not there, and the reading falls apart.
Auto is right for a page or a document. One block is right for a receipt, a label, a single column, and it is the first thing to try when Auto produces nonsense. One line is for a sign or a title and nothing else. Scattered is for words dotted about with no structure joining them: a diagram, a screenshot of an interface, a photograph of a shelf.
Before reading: the three switches
Sharpen small text is on by default, and it is the one that matters most. The recogniser wants letters around thirty pixels tall, and a screenshot of a web page is routinely half that, at which point it does not degrade gracefully, it produces confident nonsense. Scaling the picture up first costs a fraction of a second and changes the result completely.
High contrast pushes greys towards black and white. It rescues a photograph of a page taken in bad light, and it can hurt a clean screenshot, which is why it is off unless you ask. Straighten is for a page photographed at an angle.
When it reads twice on its own
Two failures are common and both are fixable without you doing anything. If nothing at all is found, that is almost always the layout mode looking for a structure that is not there, so it tries a simpler one. If plenty is found but nearly every word is doubtful, that is usually the picture rather than the layout, so it sharpens and raises the contrast and tries again.
It does this once, and keeps whichever reading was better. When that happens the summary says "read twice", because you should know that what you are looking at is the second attempt.
What this tool will not do
Handwriting: the recogniser is trained on printed type and will produce confident rubbish from handwriting rather than refusing it. PDFs: turn those into images first with the PDF to images tool, then bring them here. Table structure: you get the words in reading order, not rows and columns. And Latin alphabets only; the scripts that need a different model are the ones this recogniser is worst at, so offering them would be offering a bad reading.
Nothing is uploaded, and you can check
Open the developer tools at the Network tab and drop a picture in. You will see the recogniser and the language data coming down from a CDN, and nothing at all going up. Then turn the network off and read another image, it still works.
Questions
Is my image uploaded?
No. The recogniser runs in this tab. What crosses the network is the recogniser and the language data coming to you, once.
Why are some words underlined?
The recogniser scored them below 90% confidence. Those are the ones worth checking; the unmarked ones are right far more often than not.
It read my receipt as gibberish.
Change Layout to One block. The default assumes a page with columns, and a receipt is one narrow column, that mismatch is the single most common cause of a bad reading.
Can it read handwriting?
No, and it will not say so: it will return confident nonsense. This is printed text only.
Can it read a PDF?
Not directly. Use PDF to images first, then bring the pages here.
How many images can I do at once?
As many as you like. They queue, and Save all gives you one text file per image in a single zip.
Does it keep the layout of a table?
No. You get the words in reading order. Keep line breaks preserves the rows, which is usually close enough to paste into a spreadsheet and tidy.
Why is the first read slow?
It is downloading the recogniser and the language data. That happens once per language, and everything after is local.