Extract text from image
OCR on photos, screenshots or scans. Free, no upload. 1 GB max · Up to 1 GB · Processed locally, never sent to a server.
A photo of a page taken during a meeting, a screenshot of an error message, a scanned receipt, a slide captured from the back of a room: text that is perfectly visible and impossible to select. This page reads it back and hands you a downloadable text file, named after your image with "-texte.txt" appended to it.
Recognition is delegated to Tesseract, in its JavaScript version 5.0.5 served by the site itself, with a compute core compiled to WebAssembly. The mode selected is neural only: the older shape-matching engine, less accurate on modern typefaces, is never called. Your image is read by the browser and handed to an isolated worker, which is shut down as soon as the text is obtained, including when the run ends in an error. Of the tools filed under this heading, this is the one that genuinely runs a trained model, and it runs it on your own machine.
The difference with PDF recognition changes the advice worth following. Here no intermediate rendering takes place. The image goes to analysis at its original resolution, with no deskewing, no conversion to black and white, no cropping and no contrast correction. A 12-megapixel photo is examined across its entire surface. Your shot, and nothing else, determines the quality of the result.
How to use it
- Drop an image One file at a time, through "Drop your file here" or "Choose a file". Any format your browser can display will do, including JPEG, PNG, WebP, GIF and BMP; an iPhone HEIC usually needs a pass through HEIC to JPG conversion first.
- State the language of the text Six settings are offered: French, English, French and English together, German, Spanish, Italian. The choice determines which model is downloaded and which characters are expected, accented ones included.
- Press Run The bar reports the OCR engine downloading, then text recognition proper. The very first run requires a connection and can take a good minute before anything appears.
- Check the number of words recognized The result line announces a count, for example "213 words recognized". A total well below what you can see in the image points to a skewed or blurred photo, or to the wrong language setting.
- Download the text file The .txt is encoded in UTF-8 and contains characters only: no font, no color, no position. "Start over" chains directly into another image without reloading the page.
The four factors that decide the result
Sharpness comes first. A handheld shot taken thirty centimeters from a sheet of paper is usually a little soft, and blur dissolves the strokes of letters: "rn" reads as "m", "cl" reads as "d", and no amount of language modeling downstream repairs that. The most reliable test is to display the image at 100%. If you have to squint to read a line, the engine will fail on the same line.
Geometry comes next, and it is the commonest defect in photographs. The engine assumes horizontal lines of text; a page shot at an angle produces converging lines that nothing here straightens out. Photograph square on to the sheet rather than from where you happen to be sitting. Contrast matters just as much: pale gray text on cream paper, a photo of a screen with its reflections, or a page crossed by the shadow of your own phone all give mediocre output.
The background, finally, generates noise that the engine reads as strokes: a colored stamp, a security pattern, fluorescent highlighting, the weave of a tablecloth. Cropping to the block of text before you upload removes a good part of that interference and shortens the analysis at the same time.
What crosses the network on the first run
The journey runs the opposite way to what most people assume: the reader travels to the image, not the image to the reader. Three resources are fetched the first time you use the page:
- the Tesseract script, served from the site’s own assets
- the WebAssembly core, roughly three megabytes
- the model for the language you selected, some ten megabytes once compressed — the only one of the three still fetched from an outside CDN, jsDelivr — the only one of the three still fetched from an outside CDN, jsDelivr
Your browser caches all three, which is why later extractions manage without a connection. Your image takes no part in these exchanges: it is read locally and handed to the recognition worker running inside your tab. Switching language does trigger the download of a new model, with the previous ones staying in cache. If the engine has not loaded within two minutes the run is abandoned, with a message inviting you to check your connection.
The shape of the text you get back
The file follows the lines of the image, not the paragraphs the author wrote. A scanned justified text comes back with a line break at every printed line, which you reassemble by hand or with a find and replace. Words broken by a hyphen at the end of a line stay broken.
Column layouts and tables are the weak point. Cells emerge one after another and the alignment disappears entirely: a screenshot of a spreadsheet becomes a list of values whose structure has to be rebuilt from memory, and a screenshot of source code loses its indentation. When the engine finds no word at all, no empty file is produced. A message reports the failure instead, and points you at sharpness and language as the two things to check.
When this is not the right page
If your document is a PDF, the recognition page dedicated to it handles several pages in one run and separates the results page by page, which saves you exporting images first. If the text is already selectable on screen, copy it: optical recognition can only degrade characters that are already exact.
Handwriting is out of reach. None of the six models offered is trained for it, so a handwritten note, a prescription or an annotation in a margin comes back as strings of unrelated characters. And the tool takes one image at a time: a run of thirty photographs means thirty passes, with the tab left open throughout.
Frequently asked questions
Is a phone photo good enough?
Often yes, provided the sheet is flat, the lens is parallel to the page and the lighting is even. Failure rarely comes from the resolution of the sensor. It comes almost always from the tilt of the shot or from the shadow the device itself casts across the page.
Why do I get "no text recognized" when I can read the page easily?
The engine finished without isolating a single word, and it refuses to hand you an empty file. The usual causes are an image rotated a quarter turn, a photo of a screen, a very pale document, or a language setting that does not match the text.
My document mixes English and French, which setting should I use?
The combined French and English setting loads both models and lets the engine arbitrate between them. It is slower and hesitates slightly more on a text that is purely one language, but it stops the other language being lost.
Is my image sent somewhere to be analyzed?
No. What crosses the network on first use is the reading program and the trained data file for the language you chose. The image itself stays in the tab. That is precisely why the first extraction needs a connection and the ones after it do not.
Can I recover the original layout?
No, the output is plain text. Only the order of the lines is preserved. Bold, italics, type sizes, columns and images have no equivalent inside a .txt file and are dropped.
How long does an extraction take?
A few seconds for a screenshot once the engine sits in cache, longer for a several-megapixel photograph whose entire surface has to be examined. Cropping to the useful area cuts the wait noticeably.
Similar tools
Discover other tools
- PDF → JPG — Export each PDF page as a high-quality image.
- Compress image — Lighter JPG, PNG and WebP with real gains shown.
- Case converter — UPPERCASE, lowercase, Title or Sentence case.
- Markdown → HTML — Markdown converted to clean, semantic HTML.