CodeGym /Kurse /Python SELF DE /Text aus PDF-Dokumenten extrahieren für die Datenanalyse

Text aus PDF-Dokumenten extrahieren für die Datenanalyse

Python SELF DE
Level 43 , Lektion 2
Verfügbar

1. Text extrahieren

Fast jeder kennt die Situation: Man braucht Infos aus einem PDF-Dokument, sei es ein Finanzbericht, eine Studie oder sogar ein Lieblings-eBook. Aber was tun, wenn man die Daten nicht manuell, sondern automatisch extrahieren will? Genau hier kommen Python und die großartige PyPDF2-Bibliothek ins Spiel.

Grundlegende Schritte bei der Textextraktion

Um erfolgreich Text aus PDF zu extrahieren, solltest du diese einfachen Schritte befolgen:

  1. Die PDF-Datei lesen.
  2. Den Inhalt der PDF parsen.
  3. Text für die weitere Analyse extrahieren.

2. Lesen und Parsen von PDF-Dateien

Schauen wir uns an, wie man ein PDF-Dokument in Python öffnet und liest. Zuerst müssen wir PyPDF2 importieren:

Python

import PyPDF2

Jetzt öffnen wir die PDF-Datei. Angenommen, wir haben eine Datei namens sample.pdf, die wir analysieren möchten. Lass uns die Datei laden und erfahren, wie viele Seiten sie hat.

PDF-Datei laden

Python

# Öffnen der PDF-Datei
with open("sample.pdf", "rb") as pdf_file:
    # PDF-Reader-Objekt erstellen
    pdf_reader = PyPDF2.PdfReader(pdf_file)

    # Gesamte Seitenanzahl erhalten
    num_pages = len(pdf_reader.pages)
    print(f"Gesamte Seitenanzahl im Dokument: {num_pages}")

Text extrahieren

Jetzt, da die PDF-Datei geöffnet ist, lass uns daraus Text extrahieren. Dazu benötigen wir:

  • PdfReader öffnet die PDF-Datei zum Lesen.
  • Wir verwenden eine for-Schleife, um alle Seiten durchzugehen und extract_text() aufzurufen, um den Text zu extrahieren.
  • Der extrahierte Text wird in der Variablen text gespeichert und kann ausgegeben oder weiterverarbeitet werden.

So könnte das Ganze aussehen:

Python

import PyPDF2

# Öffnen der PDF-Datei
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    # Text aus jeder Seite extrahieren
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

print(text)

Text von bestimmten Seiten extrahieren

Was, wenn wir nur den Text von einer bestimmten Seite benötigen? Angenommen, wir möchten nur den Text der dritten Seite extrahieren. So geht's:

Python

import PyPDF2

with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    page = pdf_reader.pages[2]  # Text der dritten Seite extrahieren (Index 2)
    text = page.extract_text()

print(text)

Dieses Beispiel ermöglicht das Extrahieren von Text nur aus der dritten Seite, was nützlich sein kann, wenn ein Dokument viele Seiten enthält und du die Verarbeitung einschränken willst. PyPDF2 verwendet die Seitennummerierung ab 0.

3. Automatisierung der Textverarbeitung aus PDFs

Nach der Textextraktion aus PDFs kann dieser analysiert und für eine tiefere Datenanalyse verarbeitet werden. PyPDF2 ermöglicht die Automatisierung dieses Prozesses, was besonders bei der Arbeit mit großen Mengen an Dokumenten hilfreich ist.

Text extrahieren und in eine separate Datei speichern

Für eine vereinfachte spätere Analyse kann der extrahierte Text in eine Textdatei gespeichert werden. Das macht die weitere Verarbeitung einfacher.

Python

import PyPDF2

# Öffnen der PDF-Datei
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

# Extrahierten Text in einer Datei speichern
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
    text_file.write(text)

Verarbeitung und Analyse des extrahierten Textes

Nach der Textextraktion kann dieser in Python analysiert werden. Dazu werden oft solche Bibliotheken wie re (reguläre Ausdrücke), nltk (Natural Language Toolkit) oder pandas verwendet.

Wörter zählen und Schlüsselphrasen suchen

Angenommen, wir haben eine Textdatei extracted_text.txt und möchten die Anzahl bestimmter Wörter und Phrasen im Dokument zählen.

Python

import re

# Extrahierten Text öffnen
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
    text = text_file.read()

# Schlüsselwörter suchen und zählen
keywords = ["bericht", "daten", "analyse"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}

print("Häufigkeit der Schlüsselwörter:", keyword_counts)

Details:

  • Wir öffnen den gespeicherten Text.
  • Verwenden reguläre Ausdrücke, um Schlüsselwörter zu zählen (unabhängig von Groß-/Kleinschreibung).
  • Erhalten die Häufigkeit jedes Schlüsselworts.

4. Vorteile und Einschränkungen von PyPDF2

Vorteile:

  • Einfachheit bei der grundlegenden Textextraktion und Seitenbearbeitung.
  • Unterstützung der Hauptfunktionen: Textlesen, Dokumente zusammenführen und teilen.
  • Leichte Integration mit anderen Python-Bibliotheken.

Einschränkungen:

  • PyPDF2 extrahiert nicht immer korrekt Text aus komplexen PDFs mit mehrschichtigen Formaten, Tabellen und Bildern.
  • Keine direkte Unterstützung für die Extraktion von Bildern und Tabellen.
  • Unterstützt nicht die Verarbeitung von verschlüsselten oder passwortgeschützten Dateien (wenn das Passwort bekannt ist, kann man versuchen, die Schutzfunktion zu deaktivieren).
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION