OCRmyPDF README

The project's README from github.com/ocrmypdf/OCRmyPDF. As one markdown file: README.md.

OCRmyPDF

Build Status PyPI version Homebrew version ReadTheDocs Python versions

OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched or copy-pasted.

ocrmypdf                      # it's a scriptable command line program
   -l eng+fra                 # it supports multiple languages
   --rotate-pages             # it can fix pages that are misrotated
   --deskew                   # it can deskew crooked PDFs!
   --title "My PDF"           # it can change output metadata
   --jobs 4                   # it uses multiple cores by default
   --output-type pdfa         # it produces PDF/A by default
   input_scanned.pdf          # takes PDF input (or images)
   output_searchable.pdf      # produces validated PDF output

See the release notes for details on the latest changes.

Main features

Demo of OCRmyPDF in a terminal session

For details: please consult the documentation.

Motivation

I searched the web for a free command line tool to OCR PDF files: I found many, but none of them were really satisfying:

...so I decided to develop my own tool.

Installation

Linux, Windows, macOS and FreeBSD are supported. Docker images are also available, for both x64 and ARM.

Operating system Install command
Debian, Ubuntu apt install ocrmypdf
Windows Subsystem for Linux apt install ocrmypdf
Fedora dnf install ocrmypdf
macOS (Homebrew) brew install ocrmypdf
macOS (MacPorts) port install ocrmypdf
macOS (nix) nix-env -i ocrmypdf
LinuxBrew brew install ocrmypdf
FreeBSD pkg install py-ocrmypdf
OpenBSD pkg_add ocrmypdf
Ubuntu Snap snap install ocrmypdf

For everyone else, see our documentation for installation steps.

Languages

OCRmyPDF uses Tesseract for OCR, and relies on its language packs. For Linux users, you can often find packages that provide language packs:


# Debian/Ubuntu users
apt-cache search tesseract-ocr # Display a list of all Tesseract language packs
apt-get install tesseract-ocr-chi-sim  # Example: Install Chinese Simplified language pack


# Arch Linux users
pacman -S tesseract-data-eng tesseract-data-deu # Example: Install the English and German language packs

# OpenBSD users
pkg_info -aQ tesseract  # Display a list of all Tesseract language packs
pkg_add tesseract-cym  # Example: Install the Welsh language pack

# brew macOS users
brew install tesseract-lang

# Fedora users
dnf search tesseract-langpack # Display a list of all Tesseract language packs 
dnf install tesseract-langpack-ita # Example: Install the Italian language pack

You can then pass the -l LANG argument to OCRmyPDF to give a hint as to what languages it should search for. Multiple languages can be requested.

OCRmyPDF supports Tesseract 4.1.1+. It will automatically use whichever version it finds first on the PATH environment variable. On Windows, if PATH does not provide a Tesseract binary, we use the highest version number that is installed according to the Windows Registry.

Documentation and support

Once OCRmyPDF is installed, the built-in help which explains the command syntax and options can be accessed via:

ocrmypdf --help

Our documentation is served on Read the Docs.

Please report issues on our GitHub issues page, and follow the issue template for quick response.

Feature demo

# Add an OCR layer and require PDF/A
ocrmypdf --output-type pdfa input.pdf output.pdf

# Convert an image to single page PDF
ocrmypdf input.jpg output.pdf

# Add OCR to a file in place (only modifies file on success)
ocrmypdf myfile.pdf myfile.pdf

# OCR with non-English languages (look up your language's ISO 639-3 code)
ocrmypdf -l fra LeParisien.pdf LeParisien.pdf

# OCR multilingual documents
ocrmypdf -l eng+fra Bilingual-English-French.pdf Bilingual-English-French.pdf

# Deskew (straighten crooked pages)
ocrmypdf --deskew input.pdf output.pdf

For more features, see the documentation.

Requirements

In addition to the required Python version, OCRmyPDF requires external program installations of Ghostscript and Tesseract OCR. OCRmyPDF is pure Python, and runs on pretty much everything: Linux, macOS, Windows and FreeBSD.

Plugins

OCRmyPDF provides a plugin interface allowing its capabilities to be extended or replaced. Here are some plugins we are aware of:

paperless-ngx provides integration of OCRmyPDF into a searchable document management system.

Press & Media

Business enquiries

OCRmyPDF would not be the software that it is today without companies and users choosing to provide support for feature development and consulting enquiries. We are happy to discuss all enquiries, whether for extending the existing feature set, or integrating OCRmyPDF into a larger system.

License

The OCRmyPDF software is licensed under the Mozilla Public License 2.0 (MPL-2.0). This license permits integration of OCRmyPDF with other code, included commercial and closed source, but asks you to publish source-level modifications you make to OCRmyPDF.

Some components of OCRmyPDF have other licenses, as indicated by standard SPDX license identifiers or the DEP5 copyright and licensing information file. Generally speaking, non-core code is licensed under MIT, and the documentation and test files are licensed under Creative Commons ShareAlike 4.0 (CC-BY-SA 4.0).

Disclaimer

The software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

OCRmyPDF (ocrmypdf/OCRmyPDF)

Searching Database…

35.1K ·GitHub
What is this?OCRmyPDF adds an OCR text layer to scanned PDF files so the text becomes searchable and copy-pasteable, while keeping the original image intact.
Is this a Python library or a command-line tool?It's primarily a CLI tool you run against PDF files, though it also exposes a plugin interface for extending or replacing the OCR engine.
How do I install and run it?Install via your OS package manager (apt, dnf, brew, pkg, snap, etc.) or Docker image, then run the ocrmypdf command on a PDF; built-in help explains the syntax and options.
What external programs does it need besides Python?It needs Ghostscript and Tesseract OCR installed separately; Tesseract's language packs determine which languages can be recognized.
Does it work on every operating system, and what about Tesseract versions?It supports Linux, Windows, macOS and FreeBSD, but needs Tesseract 4.1.1 or newer on PATH (or found via the Windows Registry on Windows); without that it won't run.
Does it send my documents anywhere?No, processing happens entirely locally using Tesseract, so your documents and their contents stay on your machine.
What does OCRmyPDF output look like compared to the original?It produces a searchable PDF/A file with the OCR text placed accurately under the original image, keeping the exact resolution of embedded images and often shrinking file size through optimization.
Why did the author build this instead of using an existing OCR tool?Existing free tools misplaced text under images, mangled accented/multilingual characters, degraded image resolution, produced bloated or invalid PDFs, or crashed, and none produced archival PDF/A output.
Can I swap out Tesseract for a different OCR engine?Yes, via plugins like OCRmyPDF-AppleOCR (macOS Vision Framework), OCRmyPDF-EasyOCR (PyTorch-based, GPU recommended), and OCRmyPDF-PaddleOCR (GPU-accelerated).
How many languages can it recognize?It relies on Tesseract's language packs and can recognize more than 100 languages, with multiple languages requestable at once via the -l flag.
What are similar projects?tesseract, Umi-OCR, PyMuPDF, docling, chandra, olmocr, nougat, liteparse
Creator
ocrmypdf
Size
70.5 MB
Stars
35.1K
Age
12y
Commits · 90 Days