✳paperly.

Paperly / Scanned PDF OCR

OCR a scanned PDF without sending it anywhere

A scanned PDF is a pile of photographs of paper. There is no text inside it to extract, so something has to look at the pixels and guess the characters. Paperly runs that step in the browser tab with a WebAssembly build of Tesseract.

Run OCR on a scan ↗

First: is it actually scanned?

Open the file and try to drag-select a sentence. If nothing highlights, the page has no text layer. Another quick tell: a 40-page text PDF is usually under 2 MB, while a 40-page scan is often 20 MB or more, because every page is a full image.

Paperly makes the same check automatically. A page with fewer than roughly thirty extractable characters is routed to OCR instead of the text pipeline, so mixed documents work too: typed pages are parsed normally, scanned pages are recognised.

How the local pipeline runs

  1. The PDF is opened with pdf.js inside the tab.
  2. Each page is rendered to a canvas at double resolution — OCR quality depends heavily on how many pixels the recogniser gets.
  3. The canvas is handed to a Tesseract worker running as WebAssembly, one worker per language set, reused across pages.
  4. Word boxes come back with coordinates. Lines are rebuilt from them, and headings are estimated from section numbering rather than font size, because a rendered image has no font metadata.

Nothing in that list touches the network except the first model download.

Languages and their cost

ModelDownloadBest for
English≈3 MBContracts, invoices, reports, English receipts
Simplified Chinese≈1.7 MBMainland documents, receipts, statements
English + ChinesebothMixed-language paperwork; slower per page

Models download once and stay in the browser cache. Choosing a language you have not used before triggers a one-time download, which is why the first scan of a new language pauses for a moment.

What improves accuracy

Where OCR fails honestly. Stamps over text, handwritten margin notes, tables without ruling lines, and photos of pages taken at an angle. Expect to fix names, part numbers and totals by hand — always check numbers against the scan.

After recognition

The output is Markdown with headings, lists and simple tables where the geometry allowed it. From there it can be copied as rich text into Notion or Docs, downloaded as .md, or exported to Word, Excel, PowerPoint or EPUB. For a walk through the conversion side, see PDF to Markdown.

Questions

How do I know if my PDF is scanned?

Try to select a sentence. If nothing highlights, there is no text layer and OCR is required. Pages under about thirty extractable characters are treated as scans automatically.

Which languages are supported?

English and Simplified Chinese, individually or together. Each is a separate model, downloaded on first use.

Why is a scan slower than a normal PDF?

A text PDF is parsed in milliseconds. A scan must be rendered to a canvas and recognised line by line, which is CPU work. Expect a few seconds per page on a laptop, longer on a phone.

Does OCR work on tables in scans?

Partially. Columns are inferred from word positions, so a clean table with visible alignment usually converts. Merged cells and borderless tables are unreliable.

Recognise your scan ↗