2016-11-02 4 views
3

Ich versuche, text aus Überschriften (jeder Ebene) in einem MS Word-Dokument (DOCX-Datei) zu extrahieren. Derzeit versuche ich zu lösen mit python-docx, aber leider bin ich immer noch nicht in der Lage herauszufinden, ob es sogar nach dem Lesen möglich ist (vielleicht bin ich falsch).Extrahieren von Überschriften Text aus Word-Dokument

Ich habe versucht, die Lösungen online zu suchen, aber nichts speziell für meine Aufgabe gefunden. Es wäre toll, wenn mich jemand hier führen könnte.

+1

Also, was haben Sie versucht, können Sie uns zeigen und was das Problem ist, dass Sie laufen? – MooingRawr

Antwort

4

Die grundlegende Herausforderung besteht darin, Überschriften zu identifizieren. Es gibt nichts, was einen Autor daran hindert, einen "normalen" Absatz so zu formatieren, dass er für einen Leser so aussieht (und ihm auch dient).

Es ist jedoch nicht ungewöhnlich, dass Autoren Stile zum Erstellen von Überschriften zuverlässig verwenden, da dies die automatische Zusammenstellung dieser Überschriften zu einem Inhaltsverzeichnis ermöglicht.

In diesem Fall können Sie einfach über die Absätze iterieren und diejenigen mit einer der Überschriften Stile auswählen.

def iter_headings(paragraphs): 
    for paragraph in paragraphs: 
     if paragraph.style.name.startswith('Heading'): 
      yield paragraph 

for heading in iter_headings(document.paragraphs): 
    print heading.text 

Schriftsebene können aus dem vollen Artnamen analysiert werden, wenn sie die Vorgaben gehalten haben (wie ‚Überschrift 1‘, ‚Überschrift 2‘, ...).

Dies muss möglicherweise angepasst werden, wenn der Autor die Überschriftenstile umbenannt hat.

Es gibt anspruchsvollere Ansätze, die zuverlässiger sind (was Stilnamen-unabhängig angeht), aber diese haben keine API-Unterstützung, so dass Sie den internen Code eingrenzen und mit einigen Stilen interagieren müssen XML direkt erwarte ich.