OCR — scanned PDF
Extract text from a scan to copy and search it. Free, no upload. 1 GB max · Up to 1 GB · Processed locally, never sent to a server.
A PDF that came out of a scanner, a photocopier or a camera holds no text: every page in it is a photograph. A keyword search finds nothing, selection catches nothing, copy and paste returns emptiness, and the document stays inert as far as an indexing engine is concerned. This tool reads those images back character by character and hands you a text file you can actually work with.
Recognition rests on Tesseract, the open source engine born at HP and later developed by Google, used here in its JavaScript build compiled for the browser. Each page you keep is rendered by PDF.js into a canvas at twice its display size, then handed to the engine’s LSTM neural network, the one that recognises whole lines rather than isolated letters.
The engine and the model for the language you pick weigh about 15 MB and are downloaded on the first run, which means a connection is needed that once. The browser cache takes over afterwards and the analysis runs on your own machine: what travels over the network is the recognition program, never the pages you give it to read.
How to use it
- Load the scanned PDF The file has to open without a password. A native text PDF is accepted but has nothing to gain from going through optical recognition.
- Choose the language of the document Six settings: French, English, French plus English, German, Spanish and Italian. The model steers the recognition of accents and of words; a wrong choice degrades the result noticeably.
- Narrow down the pages if you need to The pages field accepts 1-3 or 2, 5, 8-10, and stays empty to process everything. Numbers outside the document are simply ignored. On a long file, a trial range lets you judge the quality before committing to the whole thing.
- Start the OCR and leave the tab open The bar names the page being read along with its rank in the queue, so page 4 can show up as 2/6. Allow a few seconds per page; closing or reloading the tab stops the job.
- Collect the text file The .txt is encoded in UTF-8 and reports how many words were recognised. Pages are separated inside it by a line reading — Page 3 —.
What scanning quality is needed
Tesseract reads what it is given. A scan at 300 dots per inch, straight, in clean black and white or in greyscale, gives solid results. Below 200 dpi small characters start to run together: rn turns into m, zero turns into O, accents drop out.
Three defects weigh heavier than resolution:
- skew, because the engine assumes horizontal lines and a few degrees off true are enough to sink recognition
- blur, typical of documents photographed handheld with a phone
- background noise: greyed paper, a coloured stamp, a security tint or fluorescent highlighting all produce marks the engine reads as strokes
Rendering is done at a scale of 2, which is about 144 dots per inch. A scan captured at 600 dpi is therefore not exploited at its full fineness, but the margin stays comfortable for ordinary text, and a poor original will not improve by passing through here.
The languages, and what the model changes
Each language offered corresponds to a separately trained model, downloaded on demand. Switching from French to German therefore triggers a fresh fetch, cached in its turn.
The model is not only there to recognise shapes: it carries a dictionary and statistics on character sequences that settle the ambiguous cases. That is why French text read with the English model loses its accents and splits words badly, the engine having no reason to expect an é at that point. The French plus English setting loads both and lets the engine arbitrate, which helps on a report full of English technical terms, at the cost of a slower run and a little hesitation on a document that is purely French.
None of the models offered here is trained for handwriting. A handwritten letter, a prescription or notes in the margin will come out as noise.
What the text file keeps and what it loses
The .txt holds the words in the reading order the engine reconstructed, page after page. It holds no bold, no italic, no font size, no colour, no image, and nothing about where the blocks sat on the sheet.
Complex layout is the weak point. On a two column document the engine follows the blocks after a fashion, but a table almost always comes out as a run of lines whose cells get mixed together, and a form made of boxes loses the link between a label and its value. The final word count gives a first indication: a figure far below what the page actually holds points to a badly chosen language, a scan that is too pale, or pages lying sideways.
When another tool suits better
If your PDF already contains selectable text, optical recognition is a detour that can only degrade the result: a plain conversion recovers the original characters with no margin of error. The test takes two seconds, so try selecting a sentence in your usual reader first.
And if what you are after is a searchable PDF, that is, a document that keeps its appearance while becoming queryable, this page does not produce one: it returns a separate text file, to reuse or to paste in elsewhere.
Frequently asked questions
How long does fifty pages take?
A few seconds per page on a recent computer, longer on a phone: allow several minutes, during which the tab has to stay open. Working in slices with the pages field avoids losing everything if the job is interrupted.
I changed language, why is it downloading again?
Each language has its own model. A first run in French puts about 15 MB in cache; choosing German after that triggers the fetch of the German model. Models already obtained stay available.
My PDF already has text, will OCR improve it?
No, it will make it worse. The tool ignores the existing text layer and reads an image of the page instead: the result will at best be equivalent, with extra errors on top.
Are tables and columns respected?
Partly for columns, rarely for tables. The output is plain text: cells arrive as successive lines and the alignment disappears. A scanned bank statement stays readable but needs reformatting.
What does it mean when no text is recognised?
The engine finished without finding a single word and refuses to hand over an empty file. Three causes dominate: a badly chosen language, a scan that is too pale or too dark, and pages that are upside down. Check the orientation, then run a single page as a test.
Does the engine stay active once the job is done?
No, the recognition worker is shut down as soon as the last page is finished, including when an error interrupts the run partway through. Only the engine files stay in cache for next time.
Similar tools
Discover other tools
- Word counter — Words, characters, sentences and reading time, live.
- MP4 → MP3 — Extract a video's audio track to MP3.
- VAT calculator — Net ↔ gross instantly, common rates included.
- Translation — Machine translation via a free API (internet required).