Zum Hauptinhalt springen
Entwickleranleitung

Tesseract OCR für PDF
und durchsuchbare PDFs.

Der komplette, getestete Leitfaden für OCR von PDFs mit Tesseract: Seiten rasterisieren, durchsuchbare PDFs erstellen, OCRmyPDF und pdfsandwich nutzen, durchgängig in Python umsetzen und die häufigsten Fehler beheben.

Kurzfassung (ein Befehl)

Für ein echtes mehrseitiges PDF ist OCRmyPDF der schnellste Weg.

bash
pip install ocrmypdf      # oder: apt install ocrmypdf
ocrmypdf eingabe.pdf ausgabe.pdf

Kein OCRmyPDF? Rasterisieren Sie und nutzen Sie die Tesseract-CLI direkt — siehe unten.

Warum PDFs rasterisiert werden müssen

Tesseract erkennt Bilder, keine PDF-Container.

Ein PDF ist ein Container: Es kann Vektortext, eingebettete Schriften oder gescannte Seitenbilder enthalten. Tesseract liest Rasterbilder (TIFF, PNG, JPEG, WebP …), daher müssen Seiten zuerst in Bilder umgewandelt werden. Wählen Sie den Rasterizer je nach Installation:

ToolInstallationHinweise
pdftoppm (poppler)apt install poppler-utilsSchnell, skriptbar, die klassische Wahl
pdftocairo (poppler)poppler-utilsÄhnlich zu pdftoppm, Cairo-Ausgabe
ImageMagickapt install imagemagickconvert -density 300 in.pdf out.tif
PyMuPDFpip install pymupdfReines Python, keine externen Binaries
pdf2imagepip install pdf2imagePython-Wrapper um poppler
bash
# PDF -> ein PNG pro Seite bei 300 DPI
pdftoppm -png -r 300 eingabe.pdf seite

Die DPI ist am wichtigsten: 300 DPI ist der Standard; 600 DPI für kleine Schriften oder Archivierung; unter 200 DPI vermeiden.

Durchsuchbares PDF mit der Tesseract-CLI erstellen

Ein Bild wird mit der Ausgabe-Konfiguration pdf zu einer durchsuchbaren PDF-Seite.

bash
# Bild -> durchsuchbares PDF
tesseract seite-1.png ausgabe pdf

# Nur Textebene (ohne sichtbares Bild)
tesseract scan.png ausgabe textonly_pdf

# Mehrere Seiten in ein PDF: Bildliste übergeben
tesseract bildliste.txt ausgabe pdf

Für ein mehrseitiges PDF schreiben Sie jeden Bildpfad in eine eigene Zeile in bildliste.txt. Vollständige Formatreferenz: Dokumentation.

Methode B — OCRmyPDF (empfohlen für echte PDFs)

OCRmyPDF übernimmt Rasterisieren, OCR, Entzerren, Drehen und die unsichtbare Textebene in einem Befehl.

bash
ocrmypdf eingabe.pdf ausgabe.pdf                    # Basis
ocrmypdf -l eng+deu eingabe.pdf ausgabe.pdf         # Sprachen
ocrmypdf --deskew --rotate-pages eingabe.pdf ausgabe.pdf
ocrmypdf --optimize 2 eingabe.pdf ausgabe.pdf       # Datei verkleinern
ocrmypdf --skip-text eingabe.pdf ausgabe.pdf        # Seiten mit Text behalten

OCRmyPDF nutzt Tesseract und benötigt Ghostscript und die poppler-Tools. Nützliche Flags: --force-ocr, --redo-ocr, --pages 1-10.

Methode C — pdfsandwich

Ein leichterer Wrapper, der eine Textebene hinzufügt und Vorverarbeitung wie Entzerren durchführt.

bash
pdfsandwich scan.pdf          # erzeugt scan_ocr.pdf
pdfsandwich -lang eng+deu scan.pdf

Methode D — Python von Anfang bis Ende

Nutzen Sie pdf2image zum Rasterisieren und pytesseract für das durchsuchbare PDF, dann mit pypdf zusammenführen.

pdf.py
import io, pytesseract
from pdf2image import convert_from_path
from pypdf import PdfWriter, PdfReader

pages = convert_from_path("eingabe.pdf", dpi=300)   # benötigt poppler
writer = PdfWriter()
for page in pages:
    pdf_bytes = pytesseract.image_to_pdf_or_hocr(page, extension="pdf", lang="deu")
    writer.add_page(PdfReader(io.BytesIO(pdf_bytes)).pages[0])
with open("ausgabe.pdf", "wb") as f:
    writer.write(f)

Unter Windows übergeben Sie den poppler-bin-Ordner mit poppler_path=. Mehr Details in der pytesseract-Anleitung.

Welche Methode soll ich verwenden?

MethodeIdeal fürEinrichtungMehrseitig
OCRmyPDFEchte PDFs, AutomatisierungGhostscript + popplerJa, in einem Befehl
pdfsandwichSchnelle Textebene mit Vorverarbeitungpoppler + ImageMagickJa
Tesseract-CLIBilder oder BildlistenNur TesseractÜber eine Bildliste
Python (pdf2image)Pipelines und eigene Logikpoppler + pytesseractSchleife und Zusammenführen

Layout-Treue und Textüberlagerung

Warum durchsuchbare PDFs manchmal verschoben aussehen und wie Sie die Geometrie erhalten.

Qualität und Performance

Fehlerbehebung

SymptomUrsacheLösung
Unable to get page count. Is poppler installed?pdf2image findet poppler nichtInstallieren Sie poppler-utils oder setzen Sie poppler_path unter Windows.
Ausgabe-PDF ohne durchsuchbaren TextOCR lief nicht oder falsche SpracheErfolg prüfen und -l/--language auf die Dokumentsprache setzen.
Textüberlagerung ist verschobenFalsche DPI oder SeitengrößeBei 300 DPI mit Originalgröße rasterisieren.
Ausgabedatei ist riesigVerlustfreie Bilder bei 600 DPI--optimize / JPEG nutzen oder DPI reduzieren.
Passwortgeschütztes PDF schlägt fehlVerschlüsselte EingabeZuerst entschlüsseln oder das Passwort-Flag des Tools nutzen.

Häufige Fragen zu PDF

Wie mache ich ein PDF durchsuchbar?

Nutzen Sie ocrmypdf eingabe.pdf ausgabe.pdf oder rasterisieren Sie die Seiten und führen Sie tesseract seite.tif ausgabe pdf aus.

Warum liest Tesseract ein PDF nicht direkt?

Tesseract erkennt Rasterbilder, daher müssen PDF-Seiten zuerst in Bilder umgewandelt werden.

Welche DPI soll ich verwenden?

300 DPI für die meisten Dokumente; 600 DPI für kleine Schriften oder Archivierung.

Kann ich ein PDF in Python OCR-en?

Ja — nutzen Sie pdf2image mit poppler und pytesseract.image_to_pdf_or_hocr und führen Sie die Seiten mit pypdf zusammen.

Wie bleibt das Layout exakt?

Verwenden Sie dieselbe Seitengröße und DPI und bevorzugen Sie OCRmyPDF, das das Originalbild erhält und die Textebene darüberlegt.