Skip to main content
Scanned pages, faxes, and photographed documents carry their text as pixels rather than as an extractable text layer. Meibel handles these through the same endpoints as digital PDFs. OCR runs automatically on the pages that need it, with page orientation corrected, and the structured result comes back in the same shape it has for a digital PDF. This guide covers what to submit, what happens to a scan on the way through, and how to read a result you can trust.

Submit a scan the same way

There is no separate endpoint or flag for scanned input. Submit the file exactly as you would a digital PDF, and parsing decides per page whether OCR is needed.

What happens to a scanned page

A scanned page cannot yield text by reading a text layer, because there is none. Parsing detects this per page and switches that page to OCR. Three things happen before you see a result:
  • OCR runs only where it is needed. A scorer weighs signals from each page, including the quality of any embedded text, how much of the page is image, and whether the text reads coherently. A page with a clean text layer skips OCR and stays fast, while a scanned or garbled page is recognized from its image.
  • Orientation is corrected. A page rotated sideways or upside down, common in scans and faxes, is set upright before recognition, so its text reads correctly.
  • Text is recognized, in many languages. Recognition reads the characters off the image and covers a large multilingual character set, so documents in non-Latin scripts are handled through the same path.
The result is that a scanned document returns the same typed, positioned elements as a digital one. Your code does not branch on whether the source was scanned.
A document can be mixed: some pages with a clean text layer, some scanned. Parsing decides page by page, so a single file with both kinds is handled efficiently in one pass.

Watch the trace to see OCR run

For a long scan you can watch the work in progress rather than only polling for the final status. The trace stream emits events as pages are extracted and recognition steps complete, which is useful for surfacing progress in a UI or for confirming that OCR ran on the pages you expected.
Trace events arrive as Server-Sent Events. Each one is a small object describing a parsing step as it completes.

Read the result with confidence in mind

OCR is less certain than reading a digital text layer, and the confidence scores reflect that. When you process scans at scale, gate on the document and element confidence and route low-scoring pages to review. This keeps recognition error out of anything downstream that assumes clean text.
Python
A poor original limits what OCR can recover. Low-resolution faxes, heavy skew, and handwriting reduce accuracy. The confidence scores are the signal for when a page needs a human to check it.

How parsing works

Where OCR and orientation correction sit in the pipeline.

Confidence Scoring

How Meibel evaluates recognition and extraction quality.