Was macht DOCX-Erstellung, -Bearbeitung und -Analyse?
Überblick
Ein Benutzer kann Sie bitten, den Inhalt einer .docx-Datei zu erstellen, zu bearbeiten oder zu analysieren. Eine .docx-Datei ist im Wesentlichen ein ZIP-Archiv, das XML-Dateien und andere Ressourcen enthält, die Sie lesen oder bearbeiten können. Für verschiedene Aufgaben stehen Ihnen unterschiedliche Tools und Workflows zur Verfügung.
Workflow-Entscheidungsbaum
Lesen/Analysieren von Inhalten
Verwenden Sie die Abschnitte „Textextraktion" oder „Roher XML-Zugriff" weiter unten
Neues Dokument erstellen
Verwenden Sie den Workflow „Erstellen eines neuen Word-Dokuments"
Vorhandenes Dokument bearbeiten
-
Ihr eigenes Dokument + einfache Änderungen Verwenden Sie den Workflow „Einfache OOXML-Bearbeitung"
-
Fremdes Dokument Verwenden Sie den „Redlining-Workflow" (empfohlene Standardeinstellung)
-
Juristische, akademische, geschäftliche oder behördliche Dokumente Verwenden Sie den „Redlining-Workflow" (erforderlich)
Lesen und Analysieren von Inhalten
Textextraktion
Wenn Sie nur den Textinhalt eines Dokuments lesen müssen, konvertieren Sie das Dokument mit Pandoc in Markdown. Pandoc bietet hervorragende Unterstützung zur Erhaltung der Dokumentstruktur und kann Änderungsverfolgung anzeigen:
# Dokument mit Änderungsverfolgung in Markdown konvertieren
pandoc --track-changes=all pfad-zur-datei.docx -o ausgabe.md
# Optionen: --track-changes=accept/reject/all
Roher XML-Zugriff
Sie benötigen rohen XML-Zugriff für: Kommentare, komplexe Formatierungen, Dokumentstruktur, eingebettete Medien und Metadaten. Für diese Funktionen müssen Sie ein Dokument entpacken und seinen rohen XML-Inhalt lesen.
Entpacken einer Datei
python ooxml/scripts/unpack.py <office_datei> <ausgabe_verzeichnis>
Wichtige Dateistrukturen
word/document.xml- Hauptdokumentinhaltword/comments.xml- Kommentare, auf die in document.xml verwiesen wirdword/media/- Eingebettete Bilder und Mediendateien- Änderungsverfolgung verwendet Tags
<w:ins>(Einfügungen) und<w:del>(Löschungen)
Erstellen eines neuen Word-Dokuments
Verwenden Sie beim Erstellen eines neuen Word-Dokuments von Grund auf docx-js, mit dem Sie Word-Dokumente mit JavaScript/TypeScript erstellen können.
Workflow
- VERPFLICHTEND - GESAMTE DATEI LESEN: Lesen Sie
docx-js.md(~500 Zeilen) vollständig von Anfang bis Ende. Setzen Sie beim Lesen dieser Datei niemals Bereichsgrenzen. Lesen Sie den vollständigen Dateiinhalt für detaillierte Syntax, kritische Formatierungsregeln und Best Practices, bevor Sie mit der Dokumenterstellung fortfahren. - Erstellen Sie eine JavaScript/TypeScript-Datei mit den Komponenten Document, Paragraph, TextRun (Sie können davon ausgehen, dass alle Abhängigkeiten installiert sind; falls nicht, lesen Sie den Abschnitt „Abhängigkeiten" weiter unten)
- Exportieren Sie als .docx mit Packer.toBuffer()
Bearbeiten eines vorhandenen Word-Dokuments
Verwenden Sie beim Bearbeiten eines vorhandenen Word-Dokuments die Document-Bibliothek (eine Python-Bibliothek für OOXML-Manipulation). Die Bibliothek kümmert sich automatisch um die Infrastruktur und stellt Methoden zur Dokumentenmanipulation bereit. Für komplexe Szenarien können Sie über die Bibliothek direkt auf das zugrunde liegende DOM zugreifen.
Workflow
- VERPFLICHTEND - GESAMTE DATEI LESEN: Lesen Sie
ooxml.md(~600 Zeilen) vollständig von Anfang bis Ende. Setzen Sie beim Lesen dieser Datei niemals Bereichsgrenzen. Lesen Sie den vollständigen Dateiinhalt für die API der Document-Bibliothek und XML-Muster zum direkten Bearbeiten von Dokumentdateien. - Entpacken Sie das Dokument:
python ooxml/scripts/unpack.py <office_datei> <ausgabe_verzeichnis> - Erstellen und führen Sie ein Python-Skript mit der Document-Bibliothek aus (siehe Abschnitt „Document-Bibliothek" in ooxml.md)
- Packen Sie das endgültige Dokument:
python ooxml/scripts/pack.py <eingabe_verzeichnis> <office_datei>
Die Document-Bibliothek bietet sowohl High-Level-Methoden für allgemeine Operationen als auch direkten DOM-Zugriff für komplexe Szenarien.
Redlining-Workflow für die Dokumentenprüfung
Mit diesem Workflow können Sie umfassende Änderungsverfolgung mit Markdown planen, bevor Sie sie in OOXML implementieren. KRITISCH: Für eine vollständige Änderungsverfolgung müssen Sie ALLE Änderungen systematisch implementieren.
Batch-Strategie: Gruppieren Sie zusammenhängende Änderungen in Batches von 3-10 Änderungen. Dies macht das Debuggen handhabbar und bleibt gleichzeitig effizient. Testen Sie jeden Batch, bevor Sie zum nächsten übergehen.
Prinzip: Minimale, präzise Bearbeitungen
Markieren Sie bei der Implementierung von Änderungsverfolgung nur den Text, der sich tatsächlich ändert. Das Wiederholen von unverändertem Text erschwert die Überprüfung von Bearbeitungen und wirkt unprofessionell. Teilen Sie Ersetzungen auf in: [unveränderter Text] + [Löschung] + [Einfügung] + [unveränderter Text]. Bewahren Sie die RSID des ursprünglichen Laufs für unveränderten Text, indem Sie das Element <w:r> aus dem Original extrahieren und wiederverwenden.
Beispiel – Änderung von „30 Tage" zu „60 Tage" in einem Satz:
# SCHLECHT - Ersetzt den gesamten Satz
'<w:del><w:r><w:delText>Die Frist beträgt 30 Tage.</w:delText></w:r></w:del><w:ins><w:r><w:t>Die Frist beträgt 60 Tage.</w:t></w:r></w:ins>'
# GUT - Markiert nur was sich geändert hat, bewahrt das ursprüngliche <w:r> für unveränderten Text
'<w:r w:rsidR="00AB12CD"><w:t>Die Frist beträgt </w:t></w:r><w:del><w:r><w:delText>30</w:delText></w:r></w:del><w:ins><w:r><w:t>60</w:t></w:r></w:ins><w:r w:rsidR="00AB12CD"><w:t> Tage.</w:t></w:r>'
Workflow für Änderungsverfolgung
-
Markdown-Darstellung erhalten: Dokument mit erhaltener Änderungsverfolgung in Markdown konvertieren:
pandoc --track-changes=all pfad-zur-datei.docx -o aktuell.md -
Änderungen identifizieren und gruppieren: Das Dokument prüfen und ALLE erforderlichen Änderungen identifizieren, in logische Batches organisieren:
Ortungsmethoden (zum Auffinden von Änderungen in XML):
- Abschnitts-/Überschriftnummern (z. B. „Abschnitt 3.2", „Artikel IV")
- Absatzkennungen, falls nummeriert
- Grep-Muster mit eindeutigem umgebenden Text
- Dokumentstruktur (z. B. „erster Absatz", „Unterschriftenblock")
- Markdown-Zeilennummern NICHT verwenden – sie bilden nicht die XML-Struktur ab
Batch-Organisation (3-10 zusammenhängende Änderungen pro Batch gruppieren):
- Nach Abschnitt: „Batch 1: Änderungen Abschnitt 2", „Batch 2: Aktualisierungen Abschnitt 5"
- Nach Typ: „Batch 1: Datumskorrekturen", „Batch 2: Namensänderungen Parteien"
- Nach Komplexität: Beginnen Sie mit einfachen Textersetzungen, dann komplexe strukturelle Änderungen
- Sequentiell: „Batch 1: Seiten 1-3", „Batch 2: Seiten 4-6"
-
Dokumentation lesen und entpacken:
- VERPFLICHTEND - GESAMTE DATEI LESEN: Lesen Sie
ooxml.md(~600 Zeilen) vollständig von Anfang bis Ende. Setzen Sie beim Lesen dieser Datei niemals Bereichsgrenzen. Achten Sie besonders auf die Abschnitte „Document-Bibliothek" und „Muster für Änderungsverfolgung". - Dokument entpacken:
python ooxml/scripts/unpack.py <datei.docx> <verzeichnis> - Notieren Sie die vorgeschlagene RSID: Das Entpack-Skript wird eine RSID zur Verwendung für Ihre Änderungsverfolgung vorschlagen. Kopieren Sie diese RSID für Schritt 4b.
- VERPFLICHTEND - GESAMTE DATEI LESEN: Lesen Sie
-
Änderungen in Batches implementieren: Änderungen logisch gruppieren (nach Abschnitt, Typ oder Nähe) und gemeinsam in einem einzigen Skript implementieren. Dieser Ansatz:
- Macht das Debuggen einfacher (kleinerer Batch = leichter Fehler zu isolieren)
- Ermöglicht schrittweisen Fortschritt
- Bleibt effizient (Batchgröße von 3-10 Änderungen funktioniert gut)
Vorgeschlagene Batch-Gruppierungen:
- Nach Dokumentabschnitt (z. B. „Änderungen Abschnitt 3", „Definitionen", „Kündigungsklausel")
- Nach Änderungstyp (z. B. „Datumsänderungen", „Aktualisierungen von Parteinamen", „Ersetzung rechtlicher Begriffe")
- Nach Nähe (z. B. „Änderungen auf Seiten 1-3", „Änderungen in der ersten Hälfte des Dokuments")
Führen Sie für jeden Batch zusammenhängender Änderungen Folgendes durch:
a. Text zu XML zuordnen: Grepen Sie in
word/document.xml, um zu überprüfen, wie der Text auf<w:r>-Elemente verteilt ist.b. Skript erstellen und ausführen: Verwenden Sie
get_node, um Knoten zu finden, implementieren Sie Änderungen, danndoc.save(). Siehe Abschnitt „Document-Bibliothek" in ooxml.md für Muster.Hinweis: Grepen Sie
word/document.xmlimmer unmittelbar vor dem Schreiben eines Skripts, um aktuelle Zeilennummern zu erhalten und den Textinhalt zu überprüfen. Zeilennummern ändern sich nach jedem Skriptdurchlauf. -
Dokument packen: Nachdem alle Batches abgeschlossen sind, das entpackte Verzeichnis zurück in .docx konvertieren:
python ooxml/scripts/pack.py entpackt ueberprueftes-dokument.docx -
Abschließende Überprüfung: Führen Sie eine umfassende Prüfung des vollständigen Dokuments durch:
- Endgültiges Dokument in Markdown konvertieren:
pandoc --track-changes=all ueberprueftes-dokument.docx -o verifikation.md - Überprüfen, ob ALLE Änderungen korrekt angewendet wurden:
grep "ursprüngliche Phrase" verifikation.md # Sollte NICHT gefunden werden grep "ersetzte Phrase" verifikation.md # Sollte gefunden werden - Prüfen, dass keine unbeabsichtigten Änderungen eingeführt wurden
- Endgültiges Dokument in Markdown konvertieren:
Konvertieren von Dokumenten in Bilder
Zur visuellen Analyse von Word-Dokumenten konvertieren Sie diese in einem zweistufigen Prozess in Bilder:
-
DOCX in PDF konvertieren:
soffice --headless --convert-to pdf dokument.docx -
PDF-Seiten in JPEG-Bilder konvertieren:
pdftoppm -jpeg -r 150 dokument.pdf seiteDies erstellt Dateien wie
seite-1.jpg,seite-2.jpgusw.
Optionen:
-r 150: Setzt die Auflösung auf 150 DPI (für Qualität/Größen-Verhältnis anpassen)-jpeg: JPEG-Format ausgeben (verwenden Sie-pngfür PNG, falls bevorzugt)-f N: Erste zu konvertierende Seite (z. B.-f 2beginnt ab Seite 2)-l N: Letzte zu konvertierende Seite (z. B.-l 5stoppt bei Seite 5)seite: Präfix für Ausgabedateien
Beispiel für einen bestimmten Bereich:
pdftoppm -jpeg -r 150 -f 2 -l 5 dokument.pdf seite # Konvertiert nur die Seiten 2-5
Codestil-Richtlinien
WICHTIG: Beim Generieren von Code für DOCX-Operationen:
- Schreiben Sie prägnanten Code
- Vermeiden Sie ausführliche Variablennamen und redundante Operationen
- Vermeiden Sie unnötige print-Anweisungen
Abhängigkeiten
Erforderliche Abhängigkeiten (installieren Sie diese, falls nicht verfügbar):
- pandoc:
sudo apt-get install pandoc(für Textextraktion) - docx:
npm install -g docx(zum Erstellen neuer Dokumente) - LibreOffice:
sudo apt-get install libreoffice(für PDF-Konvertierung) - Poppler:
sudo apt-get install poppler-utils(für pdftoppm, um PDF in Bilder zu konvertieren) - defusedxml:
pip install defusedxml(für sicheres XML-Parsing)