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 "Raw-XML-Zugriff" weiter unten.
Erstellen eines neuen Dokuments
Verwenden Sie den Workflow "Erstellen eines neuen Word-Dokuments".
Bearbeiten eines vorhandenen Dokuments
-
Ihr eigenes Dokument + einfache Änderungen Verwenden Sie den Workflow "Basic-OOXML-Bearbeitung".
-
Dokument einer anderen Person Verwenden Sie den "Redlining-Workflow" (empfohlener Standard).
-
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 für die Beibehaltung der Dokumentstruktur und kann Änderungsnachverfolgung anzeigen:
# Dokument mit Änderungsnachverfolgung in Markdown konvertieren
pandoc --track-changes=all pfad-zur-datei.docx -o ausgabe.md
# Optionen: --track-changes=accept/reject/all
Raw-XML-Zugriff
Sie benötigen Raw-XML-Zugriff für: Kommentare, komplexe Formatierungen, Dokumentstruktur, eingebettete Medien und Metadaten. Für diese Funktionen müssen Sie ein Dokument entpacken und seine rohen XML-Inhalte 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- Änderungsnachverfolgung verwendet
<w:ins>(Einfügungen) und<w:del>(Löschungen) Tags
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
- ERFORDERLICH - GANZE DATEI LESEN: Lesen Sie
docx-js.md(~500 Zeilen) vollständig von Anfang bis Ende. Setzen Sie beim Lesen dieser Datei NIEMALS Bereichsbeschränkungen. 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 Document-, Paragraph- und TextRun-Komponenten (Sie können davon ausgehen, dass alle Abhängigkeiten installiert sind; falls nicht, lesen Sie den Abschnitt zu Abhängigkeiten unten).
- Exportieren Sie als .docx mit Packer.toBuffer()
Bearbeiten eines vorhandenen Word-Dokuments
Verwenden Sie beim Bearbeiten eines vorhandenen Word-Dokuments die Document Library (eine Python-Bibliothek für OOXML-Manipulation). Die Bibliothek übernimmt automatisch die Infrastruktureinrichtung und stellt Methoden zur Dokumentmanipulation bereit. Für komplexe Szenarien können Sie direkt über die Bibliothek auf das zugrunde liegende DOM zugreifen.
Workflow
- ERFORDERLICH - GANZE DATEI LESEN: Lesen Sie
ooxml.md(~600 Zeilen) vollständig von Anfang bis Ende. Setzen Sie beim Lesen dieser Datei NIEMALS Bereichsbeschränkungen. Lesen Sie den vollständigen Dateiinhalt für die Document Library API und XML-Muster zur direkten Bearbeitung 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 Library aus (siehe Abschnitt "Document Library" in ooxml.md).
- Packen Sie das endgültige Dokument:
python ooxml/scripts/pack.py <eingabe_verzeichnis> <office_datei>
Die Document Library bietet sowohl High-Level-Methoden für allgemeine Vorgänge als auch direkten DOM-Zugriff für komplexe Szenarien.
Redlining-Workflow für die Dokumentenprüfung
Dieser Workflow ermöglicht es Ihnen, umfassende Änderungsnachverfolgung mit Markdown zu planen, bevor Sie sie in OOXML implementieren. KRITISCH: Für eine vollständige Änderungsnachverfolgung müssen Sie ALLE Änderungen systematisch implementieren.
Batching-Strategie: Gruppieren Sie verwandte Änderungen in Batches von 3-10 Änderungen. Dies hält die Fehlersuche handhabbar und bewahrt die Effizienz. Testen Sie jeden Batch, bevor Sie zum nächsten übergehen.
Prinzip: Minimale, präzise Änderungen
Markieren Sie bei der Implementierung von Änderungsnachverfolgung nur den Text, der sich tatsächlich ändert. Das Wiederholen von unverändertem Text erschwert die Überprüfung von Änderungen und wirkt unprofessionell. Unterteilen Sie Ersetzungen 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 <w:r>-Element aus dem Original extrahieren und wiederverwenden.
Beispiel – Ändern von "30 Tage" in "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 geändert wurde, behält 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 Änderungsnachverfolgung
-
Markdown-Darstellung abrufen: Konvertieren Sie das Dokument in Markdown mit erhaltener Änderungsnachverfolgung:
pandoc --track-changes=all pfad-zur-datei.docx -o aktuell.md -
Änderungen identifizieren und gruppieren: Überprüfen Sie das Dokument und identifizieren Sie ALLE erforderlichen Änderungen, indem Sie sie in logische Batches organisieren:
Lokalisierungsmethoden (zum Auffinden von Änderungen in XML):
- Abschnitts-/Überschriftsnummern (z. B. "Abschnitt 3.2", "Artikel IV")
- Absatzkennungen, falls nummeriert
- Grep-Muster mit eindeutigem umgebendem Text
- Dokumentstruktur (z. B. "erster Absatz", "Unterschriftsblock")
- Verwenden Sie KEINE Markdown-Zeilennummern – sie sind nicht auf die XML-Struktur abgebildet
Batch-Organisation (gruppieren Sie 3-10 verwandte Änderungen pro Batch):
- Nach Abschnitt: "Batch 1: Abschnitt 2 Änderungen", "Batch 2: Abschnitt 5 Aktualisierungen"
- Nach Typ: "Batch 1: Datumskorrekturen", "Batch 2: Parteinamenänderungen"
- Nach Komplexität: Beginnen Sie mit einfachen Textersetzungen, dann komplexe strukturelle Änderungen
- Sequenziell: "Batch 1: Seiten 1-3", "Batch 2: Seiten 4-6"
-
Dokumentation lesen und entpacken:
- ERFORDERLICH - GANZE DATEI LESEN: Lesen Sie
ooxml.md(~600 Zeilen) vollständig von Anfang bis Ende. Setzen Sie beim Lesen dieser Datei NIEMALS Bereichsbeschränkungen. Achten Sie besonders auf die Abschnitte "Document Library" und "Tracked Change Patterns". - Entpacken Sie das Dokument:
python ooxml/scripts/unpack.py <datei.docx> <verz> - Notieren Sie die vorgeschlagene RSID: Das Entpackskript wird eine RSID für Ihre Änderungsnachverfolgung vorschlagen. Kopieren Sie diese RSID für die Verwendung in Schritt 4b.
- ERFORDERLICH - GANZE DATEI LESEN: Lesen Sie
-
Änderungen in Batches implementieren: Gruppieren Sie Änderungen logisch (nach Abschnitt, Typ oder Nähe) und implementieren Sie sie gemeinsam in einem einzigen Skript. Dieser Ansatz:
- Macht die Fehlersuche einfacher (kleinerer Batch = einfacher, Fehler zu isolieren)
- Ermöglicht inkrementellen Fortschritt
- Bewahrt die Effizienz (Batch-Größe von 3-10 Änderungen funktioniert gut)
Vorgeschlagene Batch-Gruppierungen:
- Nach Dokumentabschnitt (z. B. "Abschnitt 3 Änderungen", "Definitionen", "Kündigungsklausel")
- Nach Änderungstyp (z. B. "Datumsänderungen", "Parteinamenaktualisierungen", "Ersetzungen juristischer Begriffe")
- Nach Nähe (z. B. "Änderungen auf Seiten 1-3", "Änderungen in der ersten Hälfte des Dokuments")
Für jeden Batch verwandter Änderungen:
a. Text XML zuordnen: Grepen Sie in
word/document.xmlnach Text, um zu überprüfen, wie der Text auf<w:r>-Elemente aufgeteilt ist.b. Skript erstellen und ausführen: Verwenden Sie
get_node, um Knoten zu finden, implementieren Sie Änderungen, danndoc.save(). Siehe Abschnitt "Document Library" 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, konvertieren Sie das entpackte Verzeichnis zurück in .docx:
python ooxml/scripts/pack.py entpackt überprüftes-dokument.docx -
Abschließende Überprüfung: Führen Sie eine umfassende Prüfung des vollständigen Dokuments durch:
- Konvertieren Sie das endgültige Dokument in Markdown:
pandoc --track-changes=all überprüftes-dokument.docx -o überprüfung.md - Überprüfen Sie, ob ALLE Änderungen korrekt angewendet wurden:
grep "ursprüngliche Phrase" überprüfung.md # Sollte NICHT gefunden werden grep "ersetzte Phrase" überprüfung.md # Sollte gefunden werden - Überprüfen Sie, dass keine unbeabsichtigten Änderungen eingeführt wurden
- Konvertieren Sie das endgültige Dokument in Markdown:
Konvertieren von Dokumenten in Bilder
Um Word-Dokumente visuell zu analysieren, konvertieren Sie sie 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: Auflösung auf 150 DPI setzen (für Qualitäts-/Größenverhältnis anpassen)-jpeg: JPEG-Format ausgeben (verwenden Sie-pngfür PNG, falls bevorzugt)-f N: Erste zu konvertierende Seite (z. B.-f 2startet 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 Seiten 2-5
Code-Stil-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, 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 zur Konvertierung von PDF in Bilder) - defusedxml:
pip install defusedxml(für sicheres XML-Parsing)