Skip to content

Tutorial

PDF Text to Speech: Fix Scanned Files with OCR First

Scanned PDFs are images, so text to speech reads nothing until you add an OCR text layer. Follow the steps to turn a scan into clean, narratable text.

Murmur10 min read

Free plan with Kokoro voices, scripts up to 1,500 characters · 3-day Pro trial, then $49 once

Direct answer: a scanned PDF is a set of page images, so text to speech tools read nothing, or read nonsense, until the file has a real text layer. Run optical character recognition (OCR) on the scan first, then check that the recognized text is selectable, in the right reading order, and free of obvious errors. Once the text is clean, you can narrate it with any text to speech app. If the PDF already contains a good text layer, skip OCR and go straight to the audio step.

A PDF page can hold two very different kinds of content. A born-digital file stores each character as text with a font, so a text to speech tool or a screen reader can select and speak it. A scanned page is one large picture placed inside a PDF container, which is why the words look sharp on screen but vanish the moment you try to select them. The fix is not to convert the page and back again, it is to give the scan the missing layer that OCR produces. That single step decides whether the narration works, and it is why the private documents guide starts by checking the file rather than the voice.

Why a scanned PDF has no text to read

Optical character recognition turns images of typed text into machine text that can be selected, searched, copied, and spoken. The OCRmyPDF documentation describes the job plainly: OCR adds text layers to images inside PDFs so that scanned files become searchable. The picture itself does not change. The recognized characters are stored alongside it, usually invisibly, and mapped to the position of each word on the page. When the layer is good, the file behaves like a text document. When it is missing, every downstream tool, including a narrator, an ebook reader, and a search box, sees only pixels.

What you haveWhat a text tool seesWhat you should do
Born-digital PDF, text layer presentReal characters it can select and readNothing extra. Narrate directly, or copy the text out first.
Scanned PDF, no OCROne image per page, no charactersRun OCR to add a text layer, then verify it.
Scanned PDF, OCR already runA text layer of unknown qualityTest selectability and accuracy before trusting it.
Photo of a single pageAn image, not a documentUse a text recognition tool or OCR the page, but keep expectations modest for handwriting.

Run the selectability test before anything else. It takes seconds and tells you which row of that table you are in.

Check the PDF before you run OCR

Before spending time on OCR, confirm that the file actually needs it and that the scan is worth processing.

  • Open the PDF and drag-select a sentence. If nothing highlights, there is no text layer and text to speech will produce nothing useful. In Preview, choose Tools > Text Selection first, because Apple notes that the tool may simply be off, and that a password-protected file can also block copying.
  • Search for a word you can see on the page. Press Command-F in Preview and type a visible word. If it cannot be found, the words are pixels, not text.
  • Test more than the first page. Some files carry a text layer on one page and pure images on the next, so sample a few pages and note where the text disappears.
  • Flag the hard layouts. OCR engines can struggle with multi-column pages, tables, and running headers, and Tesseract in particular may join text across columns or miss the natural reading order. Mark those pages for close proofreading.
  • Judge the scan itself. A skewed page, uneven lighting, or a low-resolution image lowers accuracy before OCR starts, and no setting can recover text that was never legible in the picture.

If the words are clear on screen but cannot be selected, the scan is fine and only the layer is missing, which is the easy case. If the page is crooked, dim, or photographed at an angle, fix or rescan it first. The Tesseract guidance on improving output is direct about this: results depend on image quality, and pre-processing such as deskewing and rescaling to roughly 300 dpi often matters more than any engine setting.

Run OCR and create a real text layer

There are three practical routes, and the right one depends on how many pages you have and what software you already own.

RouteBest forWhat to watch
Built-in macOS text tools (Live Text in Preview, Quick Look, and the screenshot tools)Grabbing a paragraph from a page or twoIt copies recognized text into another app. It does not write a searchable layer back into the PDF, so it is a spot fix rather than a whole-book solution.
A desktop OCR tool such as Adobe AcrobatA non-technical workflow, or a file that must stay a PDFThe OCR feature usually sits behind a paid plan. Check the vendor pricing page for the current figure before you commit.
A command-line tool such as OCRmyPDF with the Tesseract engineBooks, forms, and batches where you want a searchable, archive-safe PDFIt needs a terminal and Python, and the Tesseract engine's own accuracy limits still apply.

For a whole document, the command-line route gives the most control and leaves you with a file you keep. OCRmyPDF uses Tesseract to recognize the text, then writes the layer back into the original PDF instead of rebuilding the pages from scratch. By default it produces a PDF/A file, an archival subset designed for long-term readability. If another app dislikes PDF/A, the cookbook shows how to output a standard PDF with the --output-type pdf option.

  1. Install OCRmyPDF and its dependencies, including Tesseract and the language data for every language in the document.
  2. Work on a copy, never your only original, so a bad run cannot cost you the source file.
  3. Tell the tool the language or languages with the -l option, for example -l eng for English or -l eng+deu for a mixed document. OCRmyPDF assumes English otherwise, and a wrong language is a common cause of poor output.
  4. Add the image clean-up options the file needs, such as deskew to straighten a crooked scan, or rotate-pages to fix a landscape page inside a portrait document. Review the result, because these steps can remove content as well as noise.
  5. Write a companion text file with the sidecar option if you want the plain recognized text on its own, then keep the output beside the original so you can compare page by page.

Watch out for a document that is only partly scanned. If some pages already carry good text, redoing OCR everywhere can replace a clean layer with a worse one. OCRmyPDF has modes for this: skip leaves pages that already have text alone, and redo replaces existing OCR without rasterizing the page. The command-line guide explains when each applies, and it is worth reading before you process a mix of scans and digital pages.

Verify and clean the recognized text

An OCR layer can be present and still be wrong. Accuracy varies with the scan, and the engine does not understand the subject, so it will confidently produce a plausible word in place of the real one. Read the recognized text before you narrate it, because a narrator reading a mistake aloud is worse than no narration at all.

  1. Extract the text and read it away from the page images. A sidecar text file or a copy pasted into a plain editor makes errors easier to spot than reading over the picture.
  2. Check names, numbers, units, and anything a listener cannot recover from context. Dates, prices, dosages, and version numbers are where OCR errors do the most damage.
  3. Watch for merged words and dropped spaces, which are common when a scan is tight or a font is unusual.
  4. Watch for hyphenated line breaks that OCR keeps as hard hyphens, because they will be spoken as if the word were split.
  5. Fix the reading order on multi-column pages. If sentences jump between columns, reorder them in the text before narrating, since the engine does not divide the page into the structure a human reader sees.

Raw OCR output: "The agree- ment shall re- main in force for 12 (twelve) months from the Ef fective Date." Cleaned for narration: "The agreement shall remain in force for 12 months from the effective date." Changes made: rejoined the hyphenated line breaks, removed the redundant number in parentheses, and lowercased the heading style so the line reads as a sentence.

Worked clean-up example

That example is a small one, but the pattern scales. Tesseract reports text and its position, not paragraphs or headings, and it does not tell you which font was used. Structure and clean sentences are your job, so budget proofreading time in proportion to how much the listening depends on the exact wording. For a legal clause or a set of instructions, read closely. For a chapter read for pleasure, a lighter pass may be enough.

Prepare the text for speech

Once the words are right, shape them for the ear. What reads fine on a page can sound wrong aloud, and the fixes are mostly about punctuation and abbreviation. The text normalization guide covers how spoken forms differ from written ones, and the punctuation fixes guide collects the small edits that stop a narrator from rushing or skipping.

  • Expand abbreviations the narrator would otherwise spell out or mangle, such as turning a section symbol into the word section.
  • Break very long sentences, because a line with four clauses can run out of breath in a generated read.
  • Space out lists and headings so the narrator pauses between items instead of running them together.
  • Remove page numbers, running headers, and footer text that the OCR layer swept up, unless they belong in the audio.
  • Keep a clean master of the corrected text so a later re-generation starts from the same reviewed source.

Turn the text into audio

With a verified text file, the narration step is quick. Murmur is a local-first voice studio for Apple Silicon Macs running macOS 15 or later. It handles text to speech, voice cloning, voice design, and multi-speaker projects, and it runs the models on your own machine, so there are no per-character fees and nothing is uploaded to a cloud service. That last point matters for scanned documents, which are often contracts, medical notes, or internal papers you would rather not send to a server. Murmur costs $49 one-time and has a free plan and a 3-day Pro trial.

A simple workflow keeps the OCR result and the audio in step: keep the corrected text as the source of record, generate one file per section or chapter, name each file so it sorts in order, and listen against the text before you publish. If the document is a book, the blog-to-audio workflow applies the same idea at chapter scale, and the audiobook narration guide covers long-form choices such as voice and pacing. For documents that must stay private end to end, the offline documents guide is the companion piece to this one.

When to skip OCR or use another tool

OCR is not always necessary, and Murmur is not always the right tool. If the PDF is a clean export from a word processor, it already has a text layer, and running OCR over it risks replacing good text with worse. Copy the text out instead. If the source is handwriting, most OCR engines, Tesseract included, will not recognize it well, so plan on a person or a transcription service. If the file is a scan you cannot modify, a browser tool that reads text aloud may be enough for a quick listen, though it usually wants to upload the file. And Murmur itself does not perform OCR or speech to text, so it cannot turn your scan into text; the OCR step happens first, in another tool. It is also a Mac app, so if you work on Windows, need live streaming speech, or want a shared cloud workspace, a cloud service will fit better.

Frequently asked questions

Sources

Narrate your scanned document with Murmur

Murmur is a local voice studio for Apple Silicon Macs running macOS 15 or later. Once your scan has a clean text layer, Murmur turns it into narration on your own machine, with no per-character fees and no upload. The website edition is $49 one-time, with a free plan and a 3-day Pro trial, and a 7-day refund policy. Listen to the public samples before you buy.

macOS 15+ · Apple Silicon required · 7-day refund policy