DEV Community

SirOnly
SirOnly

Posted on

Mit Python Text und Bilder aus Word-Dokumenten extrahieren

Inhalte aus Word-Dokumenten zu extrahieren ermöglicht es uns, diese für andere Operationen zu verwenden, wie z.B. Inhalte in Datenbanken zu speichern, Inhalte in andere Programme zu importieren, für KI-Trainings zu verwenden und andere Dokumente zu erstellen. Mit Spire.Doc for Python ist es ein Leichtes, Text und Bilder aus Word-Dokumenten zu extrahieren, ohne aufwendiges Kopieren und Einfügen oder komplizierten Code. Dieser Artikel erklärt, wie man mit einfachem Code Text und Bildinhalte aus Word-Dokumenten extrahiert und speichert.

Spire.Doc for Python importieren

Bevor man mit diesem Tool Word-Dokumente bearbeiten kann, muss man es in das Projekt importieren. Es kann von der offiziellen Website von Spire.Doc for Python heruntergeladen oder direkt mit pip installiert werden. Der Code sieht wie folgt aus:

pip install Spire.Doc
pip install plum-dispatch==1.7.4
Enter fullscreen mode Exit fullscreen mode

Musterdokument

Mit Python Text und Bilder aus Word-Dokumenten extrahieren

Text aus Word-Dokument extrahieren und in TXT-Datei schreiben

Die Methode Document.GetText() von Spire.Doc für Python kann den gesamten Text aus dem Word-Dokument abrufen und als Zeichenfolge zurückgeben. Wir können die zurückgegebene Zeichenfolge in eine Textdatei zum Speichern schreiben. Die Schritte sind wie folgt:

  • Ein Document-Objekt erstellen.
  • Das Word-Dokument mit der Document.LoadFromFile()-Methode laden.
  • Den Text aus dem Dokument mit der Document.GetText()-Methode abrufen.
  • Den abgerufenen Text in eine Textdatei schreiben.

Codebeispiel
Python

Copy
from turtle import st
from spire.doc import *
from spire.doc.common import *

def WriteAllText(fname:str,text:List[str]):
        fp = open(fname,"w")
        for s in text:
            fp.write(s)
        fp.close()

inputFile = "Beispiel.docx"
outputFile = "Extrahierter Text.txt"

#Document-Objekt erstellen  
document = Document()

#Word-Dokument laden
document.LoadFromFile(inputFile)

#Text aus Dokument abrufen
text = document.GetText()

#Text in Textdatei schreiben
WriteAllText(outputFile, text)
document.Close()
Enter fullscreen mode Exit fullscreen mode

Extrahierter Text

Text aus Word-Dokument extrahieren und in TXT-Datei schreiben

Bilder aus Word-Dokument extrahieren und speichern

Das Extrahieren von Bildern ist etwas komplexer. Man muss prüfen, ob das untergeordnete Objekt des Dokumentenelements ein Bild oder ein zusammengesetztes Objekt ist. Bei einem Bild wird es gespeichert, bei einem zusammengesetzten Objekt muss geprüft werden, ob dessen untergeordnete Objekte Bilder enthalten. Die Schritte:

  • Ein Document-Objekt erstellen.
  • Das Word-Dokument mit der Document.loadFromFile()-Methode laden.
  • Eine Warteschlange für zusammengesetzte Objekte erstellen und die Dokumentenelemente hinzufügen.
  • Eine Liste zum Speichern der extrahierten Bilder erstellen.
  • Die Dokumentenelemente durchlaufen und die untergeordneten Objekte jedes Knotens durchlaufen, um zu prüfen, ob es sich um ein zusammengesetztes Objekt oder Bildobjekt handelt.
  • Prüfen, ob das untergeordnete Element ein Bildobjekt ist. Wenn ja, die Bilddaten extrahieren und zur Liste hinzufügen.
  • Prüfen, ob das untergeordnete Element ein zusammengesetztes Objekt ist. Wenn ja, zur Warteschlange hinzufügen und weiter prüfen.
  • Bilder in einen Ordner speichern.

Codebeispiel
Python

Copy
import queue
from spire.doc import * 
from spire.doc.common import *
import os

outputPath = "Bilder/"
inputFile = "Beispiel.docx"

if not os.path.exists(outputPath):
    os.makedirs(outputPath)

#Document-Objekt erstellen
document = Document()  

#Word-Dokument laden
document.LoadFromFile(inputFile)

#Warteschlange erstellen und Dokumentenelemente hinzufügen
nodes = queue.Queue()
nodes.put(document)

#Liste erstellen
images = []

#Dokumentenelemente durchlaufen
while nodes.qsize() > 0:
    node = nodes.get()
    for i in range(node.ChildObjects.Count):
        #Untergeordnetes Objekt des Dokumentenelements abrufen
        child = node.ChildObjects.get_Item(i)
        #Prüfen, ob es ein Bild ist
        if child.DocumentObjectType == DocumentObjectType.Picture:
            picture = child if isinstance(child, DocPicture) else None
            dataBytes = picture.ImageBytes
            #Zur Liste hinzufügen
            images.append(dataBytes)
        #Prüfen, ob es ein zusammengesetztes Objekt ist
        elif isinstance(child, ICompositeObject):
            #Zur Warteschlange hinzufügen
            nodes.put(child if isinstance(child, ICompositeObject) else None)

#Bilder speichern
for i, item in enumerate(images):
    fileName = "Bild-{}.png".format(i)
    with open(outputPath+fileName,'wb') as imageFile:
        imageFile.write(item)

document.Close()
Enter fullscreen mode Exit fullscreen mode

Extrahierte Bilder
Bilder aus Word-Dokument extrahieren und speichern

Der extrahierte Text wird mit angehängten Bewertungsinformationen gespeichert. Sie können die Bewertungsinformationen direkt am Anfang des Textes löschen. Die extrahierten Bilder sind nicht mit einem Wasserzeichen versehen.

Das war eine Einführung, wie man mit Spire.Doc für Python Text und Bilder aus Word-Dokumenten extrahiert. Spire.Doc für Python unterstützt viele weitere Dokumentoperationen. Schauen Sie auf der offiziellen Website vorbei oder nehmen Sie am Spire.Doc Forum teil.

Top comments (0)