PDF-Dokumente mit PyMuPDF parsen
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.
DEVELOPERpythonimport 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
DEVELOPERpythondef 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 :
DEVELOPERpythonfrom 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 :
DEVELOPERpythonimport 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 :
DEVELOPERpythondef 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 :
DEVELOPERpythonfrom 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
- Zuerst mit Beispiel-Dokumenten testen
- Verschlüsselte PDFs robust handhaben
- Seitenzahlen beibehalten für Zitate
- Metadaten extrahieren (Titre, Auteur, Date)
- OCR nur bei Bedarf verwenden (langsamer)
- 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
Verwandte Artikel
Grundlagen des Parsing von Dokumenten
Starten Sie Ihre RAG-Reise: Lernen Sie, Text, Metadaten und die Struktur von Dokumenten für die semantische Suche zu extrahieren.
RAG Multimodal: Bilder, PDFs und über den Text hinaus
Erweitern Sie Ihr RAG über den Text hinaus: Indexierung von Bildern, Extraktion von PDFs, Tabellen und Grafiken für einen wirklich umfassenden Assistenten.
OCR für gescannte Dokumente und Bilder
Extrahieren Sie Text aus gescannten PDFs und Bildern mit Tesseract, AWS Textract und modernen OCR-Techniken.