E-Mail-Adressen aus PDF-Dateien extrahieren

Vier bewährte Methoden – vom einfachen Kopieren bis zum automatisierten Python-Skript

← Zurück zum E-Mail Extractor

Warum die E-Mail-Extraktion aus PDFs technisch anspruchsvoll ist

Das Extrahieren von Daten aus PDF-Dokumenten ist technisch anspruchsvoll, da das PDF-Format primär für die Darstellung und nicht für die Datenstrukturierung entwickelt wurde. Zeilenumbrüche mitten in einer Adresse oder unsichtbare Steuerzeichen führen bei manuellem Kopieren oft zu Fehlern. Typische Beispiele für E-Mails in PDFs:

Empfehlung

Verschicke sofort und sicher günstige Newsletter über rapidmail.
  • Rechnungen und Angebote: Kontaktdaten des Absenders oder Empfängers stehen oft im Kopf- oder Fußbereich des Dokuments.
  • Verträge und Vereinbarungen: Juristische Dokumente enthalten die E-Mail-Adressen aller Vertragsparteien.
  • Newsletter und Rundschreiben: Archivierte Newsletter im PDF-Format beinhalten häufig Kontakt- und Abmeldeadressen.
  • Gescannte Visitenkarten: Visitenkarten werden oft als PDF eingescannt und enthalten E-Mail-Adressen als Bilddaten.
  • Konferenz- und Veranstaltungsunterlagen: Teilnehmerlisten, Referentenverzeichnisse und Tagungsbände enthalten zahlreiche Kontaktadressen.
  • Behördliche Dokumente: Formulare, Bescheide und Informationsblätter enthalten Ansprechpartner mit E-Mail-Kontakt.

Wenn du nur wenige E-Mails aus einem einzelnen Dokument benötigst, reicht manuelles Kopieren. Sobald du jedoch regelmäßig oder aus vielen Dateien E-Mail-Adressen sammeln musst, lohnt sich eine automatisierte Lösung.

Methode 1: Kopieren und Einfügen aus dem PDF

Die einfachste Methode funktioniert ohne zusätzliche Software – vorausgesetzt, das PDF enthält selektierbaren Text (kein gescanntes Bild).

  1. Öffne die PDF-Datei in einem beliebigen PDF-Viewer (Adobe Acrobat Reader, Browser, Vorschau auf macOS).
  2. Markiere den gesamten Text mit Strg+A (Windows/Linux) oder Cmd+A (macOS).
  3. Kopiere den markierten Text mit Strg+C bzw. Cmd+C.
  4. Füge den Text in unser kostenloses Online-Tool ein.
  5. Das Tool erkennt alle E-Mail-Adressen automatisch per Regex und zeigt sie als bereinigte Liste an.

Vorteile: Keine Installation nötig, funktioniert sofort, keine Datenübertragung an einen Server.

Einschränkungen: Funktioniert nur bei PDFs mit selektierbarem Text. Bei gescannten Dokumenten oder PDFs mit Schutzmechanismen gegen Kopieren ist diese Methode nicht möglich.

Methode 2: Der Browser-basierte Weg (Empfohlen)

Mit extract-emails.com nutzen wir die pdf.js-Library, um das Dokument direkt in deinem Browser zu rendern. Da keine Daten auf einen Server geladen werden, bleibt die Vertraulichkeit (z.B. bei Rechnungen oder Verträgen) gewahrt.

So funktioniert es

  1. Besuche extract-emails.com/de.
  2. Ziehe deine PDF-Datei per Drag & Drop in das Upload-Feld oder klicke auf „Datei auswählen“.
  3. Das Tool verwendet pdf.js (die PDF-Bibliothek von Mozilla), um den Text direkt im Browser zu extrahieren.
  4. Anschließend wird ein Regex-Muster auf den extrahierten Text angewendet, um alle E-Mail-Adressen zu finden.
  5. Die Ergebnisse werden dedupliziert und als übersichtliche Liste dargestellt. Du kannst die Liste kopieren oder als Datei herunterladen.

Technische Details

Im Hintergrund verwendet das Tool die Open-Source-Bibliothek pdf.js, die von Mozilla für den Firefox-Browser entwickelt wurde. Diese Bibliothek kann PDF-Dateien vollständig in JavaScript parsen und den Textinhalt seitenweise auslesen. Der extrahierte Text wird dann mit dem bewährten E-Mail-Regex-Muster durchsucht:

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

Vorteile: Kein Herunterladen von Software, keine Kommandozeile, vollständige Privatsphäre durch clientseitige Verarbeitung.

Einschränkungen: Funktioniert nur bei text-basierten PDFs. Für gescannte Dokumente wird OCR benötigt (siehe Methode weiter unten).

E-Mail Marketing Tool

Methode 3: Python-Skript mit PyPDF2 oder pdfplumber

Für die Verarbeitung vieler PDF-Dateien oder die Integration in bestehende Arbeitsabläufe ist ein Python-Skript die beste Wahl. Zwei beliebte Bibliotheken stehen zur Verfügung:

Variante A: Mit PyPDF2

Installation und Skript
pip install PyPDF2

import re
from PyPDF2 import PdfReader

def extract_emails_from_pdf(pdf_path):
    reader = PdfReader(pdf_path)
    text = ""
    for page in reader.pages:
        page_text = page.extract_text()
        if page_text:
            text += page_text + "\n"

    pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
    emails = list(set(re.findall(pattern, text)))
    return sorted(emails)

# Beispiel
emails = extract_emails_from_pdf("rechnung.pdf")
for email in emails:
    print(email)

Variante B: Mit pdfplumber (bessere Textextraktion)

Installation und Skript
pip install pdfplumber

import re
import pdfplumber

def extract_emails_from_pdf(pdf_path):
    text = ""
    with pdfplumber.open(pdf_path) as pdf:
        for page in pdf.pages:
            page_text = page.extract_text()
            if page_text:
                text += page_text + "\n"

    pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
    emails = list(set(re.findall(pattern, text)))
    return sorted(emails)

# Beispiel
emails = extract_emails_from_pdf("vertrag.pdf")
print(f"{len(emails)} E-Mail-Adressen gefunden:")
for email in emails:
    print(f"  {email}")

Mehrere PDFs in einem Ordner verarbeiten

Stapelverarbeitung mit Python
import os
import re
import pdfplumber

def extract_emails_from_folder(folder_path):
    all_emails = set()
    for filename in os.listdir(folder_path):
        if filename.lower().endswith(".pdf"):
            filepath = os.path.join(folder_path, filename)
            try:
                with pdfplumber.open(filepath) as pdf:
                    for page in pdf.pages:
                        text = page.extract_text()
                        if text:
                            pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
                            emails = re.findall(pattern, text)
                            all_emails.update(emails)
                print(f"{filename}: verarbeitet")
            except Exception as e:
                print(f"{filename}: Fehler - {e}")
    return sorted(all_emails)

# Alle PDFs im Ordner "dokumente" verarbeiten
emails = extract_emails_from_folder("./dokumente")
print(f"\nInsgesamt {len(emails)} eindeutige E-Mail-Adressen gefunden:")
for email in emails:
    print(email)

Welche Bibliothek wählen? pdfplumber liefert in der Regel eine bessere Textextraktion, insbesondere bei komplexen Layouts mit Tabellen oder mehrspaltigen Dokumenten. PyPDF2 ist leichtgewichtiger und für einfache PDFs völlig ausreichend.

Methode 4: Kommandozeile mit pdftotext (Linux/Mac)

Auf Linux- und macOS-Systemen steht mit pdftotext ein leistungsstarkes Kommandozeilen-Tool zur Verfügung. Es ist Teil des Pakets poppler-utils und wandelt PDF-Dateien in reinen Text um.

Installation

poppler-utils installieren
# Debian / Ubuntu
sudo apt-get install poppler-utils

# macOS (mit Homebrew)
brew install poppler

# Fedora / RHEL
sudo dnf install poppler-utils

E-Mails aus einer einzelnen PDF extrahieren

Einzeiler für die Kommandozeile
pdftotext rechnung.pdf - | grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' | sort -u

Erklärung der einzelnen Teile:

  • pdftotext rechnung.pdf - – Konvertiert das PDF in Text und gibt ihn auf stdout aus (das - verhindert die Erstellung einer separaten Textdatei).
  • grep -oE '...' – Sucht mit einem erweiterten regulären Ausdruck und gibt nur die Treffer aus.
  • sort -u – Sortiert die Ergebnisse und entfernt Duplikate.

Alle PDFs in einem Verzeichnis verarbeiten

Stapelverarbeitung im Terminal
for file in *.pdf; do
  echo "--- $file ---"
  pdftotext "$file" - | grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
done | sort -u

Ergebnisse in eine CSV-Datei speichern

E-Mails sammeln und exportieren
for file in *.pdf; do
  pdftotext "$file" - | grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
done | sort -u > gefundene-emails.csv

Vorteile: Sehr schnell, keine zusätzlichen Bibliotheken erforderlich, ideal für die Verarbeitung großer Datenmengen und für die Einbindung in Shell-Skripte oder Cron-Jobs.

E-Mail Marketing Tool

Gescannte PDFs verarbeiten (OCR mit Tesseract)

Gescannte Dokumente enthalten keinen selektierbaren Text – der Inhalt liegt als Bilddaten vor. Um E-Mail-Adressen aus solchen PDFs zu extrahieren, benötigst du eine optische Zeichenerkennung (OCR). Das Open-Source-Tool Tesseract ist hierfür die am weitesten verbreitete Lösung.

Installation

Tesseract und Abhängigkeiten installieren
# Debian / Ubuntu
sudo apt-get install tesseract-ocr tesseract-ocr-deu

# macOS
brew install tesseract tesseract-lang

# Python-Bibliotheken
pip install pytesseract pdf2image Pillow

Python-Skript für OCR-basierte Extraktion

Gescannte PDFs mit Tesseract verarbeiten
import re
import pytesseract
from pdf2image import convert_from_path

def extract_emails_from_scanned_pdf(pdf_path):
    # PDF-Seiten in Bilder umwandeln
    images = convert_from_path(pdf_path, dpi=300)

    text = ""
    for i, image in enumerate(images):
        # OCR auf jeder Seite durchfuehren
        page_text = pytesseract.image_to_string(image, lang="deu")
        text += page_text + "\n"
        print(f"Seite {i + 1} verarbeitet")

    # E-Mail-Adressen mit Regex extrahieren
    pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
    emails = list(set(re.findall(pattern, text)))
    return sorted(emails)

# Beispiel
emails = extract_emails_from_scanned_pdf("visitenkarten-scan.pdf")
print(f"\n{len(emails)} E-Mail-Adressen gefunden:")
for email in emails:
    print(f"  {email}")

Tipps für bessere OCR-Ergebnisse

  • Hohe Auflösung verwenden: Setze dpi=300 oder höher für bessere Erkennung.
  • Bild vorverarbeiten: Konvertiere in Graustufen und erhöhe den Kontrast vor der OCR.
  • Sprache angeben: Verwende lang="deu" für deutsche Dokumente, um die Zeichenerkennung zu verbessern.
  • Ergebnisse prüfen: OCR ist nicht perfekt – Zeichen wie @ können als (a) oder a erkannt werden. Prüfe die Ergebnisse manuell.

Tipps für beste Ergebnisse

Unabhängig von der gewählten Methode helfen dir diese Tipps, die besten Ergebnisse zu erzielen:

  • Text-PDFs bevorzugen: Wann immer möglich, verwende die Originalversion des Dokuments statt eines Scans. Text-PDFs liefern zuverlässigere Ergebnisse als OCR.
  • Ergebnisse deduplizieren: Verwende set() in Python oder sort -u in der Kommandozeile, um doppelte E-Mail-Adressen zu entfernen.
  • E-Mail-Adressen validieren: Nicht jeder Treffer des Regex-Musters ist eine gültige E-Mail-Adresse. Überprüfe die Ergebnisse auf offensichtliche Fehler wie fehlende TLDs oder ungültige Zeichen.
  • Große Dateien in Teilen verarbeiten: Bei sehr großen PDFs (mehrere hundert Seiten) empfiehlt es sich, die Verarbeitung seitenweise durchzuführen, um den Speicherverbrauch gering zu halten.
  • Passwortgeschützte PDFs: Sowohl PyPDF2 als auch pdfplumber unterstützen das Entschlüsseln passwortgeschützter PDFs, sofern du das Passwort kennst. Übergib es als Parameter: PdfReader("datei.pdf", password="geheim").
  • Datenschutz beachten: E-Mail-Adressen sind personenbezogene Daten. Stell sicher, dass du die DSGVO und andere Datenschutzvorschriften einhältst, wenn du E-Mail-Adressen aus Dokumenten extrahierst und weiterverarbeitest.
  • Kodierungsprobleme vermeiden: Manche PDFs verwenden ungewöhnliche Zeichenkodierungen. Falls die Textextraktion unleserliche Zeichen liefert, versuche eine andere Bibliothek oder exportiere den Text zunächst über Adobe Acrobat.

FAQ zur PDF-Extraktion

  • Funktioniert OCR? Unser Tool liest die Textebene. Bei reinen Bild-PDFs (Scans) ist eine vorherige OCR-Texterkennung nötig.
  • Gibt es Limits? Dank Virtual Scrolling verarbeiten wir PDF-Texte mit über 100.000 Zeilen flüssig.
  • Sind meine Daten sicher? Ja – die gesamte Verarbeitung erfolgt lokal in deinem Browser. Dein PDF verlässt niemals dein Gerät.

Kostenlosen E-Mail Extractor ausprobieren

Lade deine PDF-Datei direkt hoch und extrahiere alle E-Mail-Adressen – sofort und sicher in deinem Browser.

E-Mail Extractor öffnen

Empfehlung

Verschicke sofort und sicher günstige Newsletter über rapidmail.
DD
Über den Autor

Daniel Dorfer war fast vier Jahre im technischen Support bei GMX, einem der größten deutschen E-Mail-Anbieter, und knapp zwei Jahre bei united domains, einem führenden Domain-Hoster und Registrar. Er ist Gründungsmitglied des KIBC (KI Business Club). Diese Website wurde vollständig mit Hilfe von Claude Code (Opus 4.6) von Anthropic erstellt.

Checkdomain