Extract
Extract text from an image
Optical character recognition normally means sending your document to somebody else's server. This tool runs the recognition engine inside your browser instead, so a contract, a payslip or a page of notes is read on your own machine and nothing is transmitted. The first run downloads the recognition model, after which it is cached.
How to extract text from an image
- Drop an image onto the upload area, or choose a file from your device.
- Wait while the recognition engine loads, the first time only.
- Watch the progress as the text is recognised.
- Review the result, then copy it or download it as plain text, Markdown, JSON or CSV.
Supported formats
This tool accepts JPG, PNG, WebP and BMP files. Everything is decoded by your own browser, so the formats available depend on what your browser can open - which for HEIC in particular varies between Safari and other browsers.
Frequently asked questions
Is my document uploaded for OCR?
No. The recognition engine itself is downloaded to your browser and then runs there, which is the reverse of how most OCR services work. Your image is read by code executing on your own device, so a confidential document never travels over the network at all.
Why is the first run slower?
Because the recognition engine and the language model you chose have to be downloaded before anything can be read - the engine is a few megabytes and each model is between half a megabyte and two. Your browser caches them, so the second and later runs start almost immediately, and switching language downloads only that one model. That download is the price of not sending your document away.
How accurate is the result?
Good on clean, level, reasonably high-resolution text, and much weaker on handwriting, heavy compression, unusual fonts, low contrast or photographs taken at an angle. Always read the output before you rely on it. The tool shows a confidence figure and will tell you when the result looks unreliable.
Which languages are supported?
Seven: English, French, Spanish, German, Portuguese, Italian and Russian. Each is a separate model that is actually shipped and actually loaded when you pick it - not a label on the same engine. This matters more than it sounds, because a model can only produce characters that exist in its own alphabet: the English model contains exactly one accented letter, e-acute, so reading a French page with it returns words spelled with the nearest shapes English owns, and a high confidence score for having done so. Choosing the language is therefore the difference between your text and an approximation of it. The tool states any gap in the model you have chosen - the Spanish one cannot write u-diaeresis, for instance - and every one of those claims is measured from the model file rather than asserted.
Does it keep the layout of the original?
It preserves line and paragraph breaks, which is enough for prose, notes and code, and it will not invent headings or emphasis because nothing in the result says how large or bold anything was. Tables are the one exception, and they are handled carefully: when the words on the page line up into columns, the tool offers a grid, shows it to you first, and tells you what percentage of the lines actually fitted it. That is an inference from where the words sit rather than a table the engine recognised, and it is presented that way - a spreadsheet with values under the wrong headings looks exactly as convincing as a correct one, which is why you are shown the grid before you can export it.
Related tools
- Extract Table from ImageTurn a photographed or scanned table into rows and columns you can open in a spreadsheet.
- Screenshot to TextTurn a screenshot into copyable text in your browser.
- AI Alt Text GeneratorGenerate alt text using an AI vision model.
- Image to PDFCombine JPG, PNG and WebP images into a single PDF, in the order you choose.
Looking for something else? Browse all ImageUtility tools.