OCRmyPDF
Command-line tool and Python library that adds a searchable OCR text layer to scanned PDFs.
Operated by James R. Barlow
Opens the vendor's own site.
Jobs covered
Open a task to see exactly what the vendor documentation supports.
OCR
Browse all ocr toolsadding a searchable optical-character-recognition text layer to existing scanned PDFs with OCRmyPDF: rasterising page images, running Tesseract with the requested language packs, and writing the recognised text back as an invisible layer so the PDF becomes searchable/copyable, with documented deskew, page-rotation, unpaper cleaning and image optimisation, PDF/A output modes, sidecar OCR text and batch/watch-folder workflows.
The scope records OCR/searchable-text-layer generation and the documented image-processing/output options, and explicitly excludes generic text extraction to arbitrary formats, editing or reflowing the visible body text, OCR of handwriting, redaction/content removal, digital signatures, semantic accessibility remediation/validation and understanding of arbitrary scanned content
Compress
Browse all compress toolsreducing PDF size through OCRmyPDF's image-oriented optimizer, which runs after a successful OCR: lossless optimisation at the default level and optional lossy optimisation at higher levels, with the output size not guaranteed to decrease
Where your files are processed
No server involved
Command-line tool and Python library, usually run on your own machine or in your own container. No vendor service in the path. That is a property of the library itself: what an application built with it does with your file depends on that application, not on this.
A locally installed program, Python library or Docker image running on the caller's own machine/hardware; the OCRmyPDF project itself operates no hosted processing service. The documentation shows native Windows, WSL/Cygwin, macOS, Linux, FreeBSD and Docker installation paths.
The bundled Flask/Streamlit web wrapper is documented as a demonstration without authentication, not a public hosted service. Network I/O is controlled by the caller; local processing is architectural rather than a guarantee that every deployment is air-gapped.
What it does
OCRmyPDF is an MPL-2.0 Python command-line tool and importable library, currently at 17.13.0 (28 September 2026), that adds a searchable OCR text layer to existing scanned PDFs. It rasterises pages, runs Tesseract over the images, and writes the recognised text back as an invisible layer so a scan becomes searchable and copyable while retaining its page images.
It can deskew, rotate, clean, optimise and convert to PDF/A, write a sidecar text file containing OCR text, use multiple CPU cores, run as a Python API/CLI, and be deployed through native packages, Docker or watched-folder/batch workflows. Tesseract and its language packs are external dependencies; accuracy is bounded by Tesseract, handwriting is unsupported, and multi-column layouts can be merged or garbled.
It does not extract arbitrary text to other formats, edit body content, redact, sign, produce semantic accessibility remediation or understand scanned content beyond OCR; sidecar text is OCR output, and generic extraction should use a separate text extractor.
Best for
Archivists and integrators who need repeatable, automatable OCR over large scan collections on their own hardware, with a searchable text layer and optional PDF/A output.
Worth knowing
Accuracy is bounded by Tesseract: handwriting is not recognised, each language needs its own installed language pack, and multi-column layouts can be merged or garbled. OCR adds a hidden text layer to scanned page images; it does not edit or reflow the document's visible body text, remove content, redact, sign, perform semantic accessibility remediation or understand arbitrary scanned content.
A sidecar text file is OCR output, not a general extraction API; OCRmyPDF's documentation recommends a text extractor such as Poppler pdftotext for that. Tesseract is an external dependency, and pikepdf/pypdfium2, Ghostscript or other rasterizers have their own licensing and installation requirements; the MPL-2.0 project licence is not the whole dependency answer.
The bundled Flask/Streamlit HTTP demo wrapper has no authentication and is not for public deployment. Native Windows, WSL/Cygwin, macOS, Linux, FreeBSD and Docker paths differ in available dependencies and quality; check the platform-specific install notes.
Details, and where each comes from
Vendor statements, our own reading of their pages, and the things nobody has established yet, each answered separately. Where we have not confirmed something it says so rather than guessing, and a row nobody has established is greyed out.
- Versions covered
- Windows · macOS · Linux · Self-hosted
- Website
- ocrmypdf.readthedocs.io
- Requires an account
- Not applicable
- Watermark on the free tier
- Not verified
- Maximum file size
- Not verified
- Batch processing
- Yes
- Data residency
- Self-hosted
- Open source
- Yes
- Self-hostable
- Yes
- Licence
-
MPL-2.0 for the OCRmyPDF project itself.
MPL-2.0 for the OCRmyPDF project itself. Current PyPI metadata for 17.13.0 requires Python >=3.11 and lists fpdf2, img2pdf, packaging, pdfminer.six, pikepdf[pdfa], Pillow, pluggy, pydantic, pypdfium2, rich, typing-extensions and uharfbuzz as dependencies; Tesseract is an external OCR dependency.
Ghostscript is optional/alternative depending on the rasterizer, and its AGPL-3.0 licence matters if it is installed or redistributed. The bundled Flask/Streamlit demo is not a hosted service.
- Redaction
- No redaction feature
- Programmatic access
- Embeddable library · Command line
- Last availability check
- Responded in 92 ms 21 October 2026
Checked automatically by our own runner, not reported by the vendor. 100% of our last 30 checks got a response.
What the redaction verdict rests on
From the vendor's own documentation, read 22 September 2026. Not tested by us.
What that does not establish
The vendor’s own site was read on 22 September 2026 and contains no mention of redaction, sanitisation, blackout or whiteout. Absence from a vendor’s own material is not proof that a feature does not exist - it may be undocumented, or on a page the reading did not reach - but for a NEGATIVE claim it is the strongest evidence available, and it is weaker than a positive quote.
Recorded as such rather than presented as certainty.
Sponsorship is distribution, not an endorsement or a promise of search rankings, AI citations, traffic, or sales. This listing is a free entry, compiled from published sources.
Related reading
- Which PDF tools keep your file on your machine - what we count as processing on your own device.
- Open source PDF tools, and what their licences require - what open source does and does not tell you.
Compared head to head
- OCRmyPDF vs Tesseract OCR The OCR engine, and the tool built on top of it.