1. ParsingFortgeschritten

PDF-Dokumente mit PyMuPDF parsen

5. November 2025
10 Minuten Lesezeit
Équipe de Recherche Ailog

Beherrschen Sie das PDF-Parsing: extrahieren Sie Text, Bilder, Tabellen und Metadaten aus PDFs mit PyMuPDF und Alternativen.

Warum PDFs schwierig sind

PDFs sind für die Anzeige konzipiert, nicht für die Datenextraktion. Der Text kann sein :

  • Bilder (gescannte Dokumente)
  • Eingebettete Schriftarten mit benutzerdefinierten Codierungen
  • Komplexe Layouts (Mehrspaltig, Tabellen)
  • Geschützt oder verschlüsselt

PyMuPDF : Die Referenz (2025)

PyMuPDF (fitz) ist der schnellste und zuverlässigste PDF-Parser.

DEVELOPERpython
import fitz # PyMuPDF def extract_pdf_content(pdf_path): doc = fitz.open(pdf_path) full_text = "" metadata = { "title": doc.metadata.get("title", ""), "author": doc.metadata.get("author", ""), "pages": len(doc) } for page_num, page in enumerate(doc): # Text mit Layouterhaltung extrahieren text = page.get_text("text") full_text += f"\n\n--- Page {page_num + 1} ---\n{text}" return full_text, metadata

Bilder aus PDFs extrahieren

DEVELOPERpython
def extract_images(pdf_path): doc = fitz.open(pdf_path) images = [] for page_num, page in enumerate(doc): image_list = page.get_images() for img_index, img in enumerate(image_list): xref = img[0] base_image = doc.extract_image(xref) images.append({ "page": page_num + 1, "image_data": base_image["image"], "extension": base_image["ext"] }) return images

Gescannte PDFs verarbeiten (OCR)

Pour les PDF basés sur images, utilisez Tesseract OCR :

DEVELOPERpython
from PIL import Image import pytesseract import fitz def ocr_pdf(pdf_path): doc = fitz.open(pdf_path) text = "" for page in doc: # Seite in ein Bild konvertieren pix = page.get_pixmap() img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples) # OCR auf dem Bild durchführen page_text = pytesseract.image_to_string(img) text += page_text + "\n\n" return text

Tabellen extrahieren

Utilisez pdfplumber pour l'extraction de tableaux :

DEVELOPERpython
import pdfplumber def extract_tables(pdf_path): tables = [] with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: page_tables = page.extract_tables() tables.extend(page_tables) return tables

Layout-bewusste Extraktion

Préserver la structure du document :

DEVELOPERpython
def extract_with_layout(pdf_path): doc = fitz.open(pdf_path) structured_content = [] for page in doc: blocks = page.get_text("dict")["blocks"] for block in blocks: if block["type"] == 0: # Textblock text = "" for line in block["lines"]: for span in line["spans"]: text += span["text"] structured_content.append({ "type": "text", "content": text, "bbox": block["bbox"], # Position "page": page.number }) return structured_content

Leistungsoptimierung

Parallele Verarbeitung für große PDFs :

DEVELOPERpython
from concurrent.futures import ThreadPoolExecutor def parse_pdf_parallel(pdf_path, num_workers=4): doc = fitz.open(pdf_path) def process_page(page_num): page = doc[page_num] return page.get_text() with ThreadPoolExecutor(max_workers=num_workers) as executor: texts = list(executor.map(process_page, range(len(doc)))) return "\n\n".join(texts)

Alternative Werkzeuge (2025)

  • PyPDF2 : Einfach, aber langsamer
  • pdfplumber : Hervorragend für Tabellen
  • Camelot : Spezialisierte Tabellenerfassung
  • Adobe PDF Extract API : Kommerziell, sehr präzise

Beste Vorgehensweisen

  1. Zuerst mit Beispiel-Dokumenten testen
  2. Verschlüsselte PDFs robust handhaben
  3. Seitenzahlen beibehalten für Zitate
  4. Metadaten extrahieren (Titre, Auteur, Date)
  5. OCR nur bei Bedarf verwenden (langsamer)
  6. Analysierte Ergebnisse cachen um erneute Verarbeitung zu vermeiden

PDFs sind das Rückgrat des Unternehmenswissens. Beherrschen Sie die PDF-Analyse, um das Potenzial Ihres RAG freizusetzen.

Tags

pdfanalysepymupdfextraction-texte

Verwandte Artikel

Ailog Assistant

Ici pour vous aider

Salut ! Pose-moi des questions sur Ailog et comment intégrer votre RAG dans vos projets !