Erweiterte Textextraktion aus Präsentationen in Python via Java

Übersicht

Das Extrahieren von Text aus Präsentationen ist eine häufige, aber wesentliche Aufgabe für Entwickler, die mit Folieninhalten arbeiten. Egal, ob Sie Microsoft PowerPoint-Dateien im PPT- oder PPTX-Format oder OpenDocument‑Präsentationen (ODP) bearbeiten, der Zugriff auf und das Abrufen von Textdaten kann für Analyse, Automatisierung, Indizierung oder Inhaltsmigration entscheidend sein.

Dieser Artikel bietet eine umfassende Anleitung, wie Sie Text effizient aus verschiedenen Präsentationsformaten, einschließlich PPT, PPTX und ODP, mit Aspose.Slides für Python via Java extrahieren können. Sie erfahren, wie Sie systematisch durch Präsentationselemente iterieren, um den benötigten Textinhalt genau zu erhalten.

Text aus einer Folie extrahieren

Aspose.Slides für Python via Java stellt die Klasse SlideUtil bereit. Diese Klasse bietet mehrere überladene statische Methoden zum Extrahieren von Text aus einer Präsentation oder Folie. Um Text aus einer Folie einer Präsentation zu extrahieren, verwenden Sie die Methode SlideUtil.getAllTextBoxes. Diese Methode akzeptiert ein Objekt vom Typ BaseSlide als Parameter. Bei Ausführung durchsucht die Methode die gesamte Folie nach Text und gibt ein Array von Objekten des Typs TextFrame zurück, wobei sämtliche Textformatierungen beibehalten werden.

Der folgende Codeausschnitt extrahiert den gesamten Text aus der ersten Folie der Präsentation:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SlideUtil

slide_index = 0

presentation = Presentation("demo.pptx")
try:
    slide = presentation.getSlides().get_Item(slide_index)
    text_frames = SlideUtil.getAllTextBoxes(slide)

    for text_frame in text_frames:
        for paragraph in text_frame.getParagraphs():
            for portion in paragraph.getPortions():
                portion_text = portion.getText()
                print(portion_text)

                portion_format = portion.getPortionFormat()
                font_height = portion_format.getFontHeight()
                print(font_height)

                latin_font = portion_format.getLatinFont()
                if latin_font is not None:
                    font_name = latin_font.getFontName()
                    print(font_name)
finally:
    presentation.dispose()

Text aus einer Präsentation extrahieren

Um Text aus der gesamten Präsentation zu durchsuchen, verwenden Sie die statische Methode SlideUtil.getAllTextFrames, die von der Klasse SlideUtil bereitgestellt wird. Sie akzeptiert zwei Parameter:

  1. Zunächst ein Presentation-Objekt, das eine PowerPoint- oder OpenDocument‑Präsentation darstellt, aus der Text extrahiert werden soll.
  2. Als zweites ein bool‑Wert, der angibt, ob die Master‑Folien beim Durchsuchen des Textes aus der Präsentation einbezogen werden sollen.

Die Methode gibt ein Array von Objekten des Typs TextFrame zurück, das Textformatierungsinformationen enthält. Der untenstehende Code durchsucht den Text und die Formatierungsdetails einer Präsentation, einschließlich der Master‑Folien.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SlideUtil

presentation = Presentation("demo.pptx")
try:
    include_master_slides = True
    text_frames = SlideUtil.getAllTextFrames(presentation, include_master_slides)

    for text_frame in text_frames:
        for paragraph in text_frame.getParagraphs():
            for portion in paragraph.getPortions():
                portion_text = portion.getText()
                print(portion_text)

                portion_format = portion.getPortionFormat()
                font_height = portion_format.getFontHeight()
                print(font_height)

                latin_font = portion_format.getLatinFont()
                if latin_font is not None:
                    font_name = latin_font.getFontName()
                    print(font_name)
finally:
    presentation.dispose()

Kategorisierte und schnelle Textextraktion

Die Klasse PresentationFactory bietet ebenfalls Methoden zum Extrahieren des gesamten Textes aus Präsentationen:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, PresentationFactory, TextExtractionArrangingMode
from java.io import FileInputStream

mode = TextExtractionArrangingMode.Unarranged
load_options = LoadOptions()

# Text aus einer Datei extrahieren.
file_text = PresentationFactory.getInstance().getPresentationText("presentation.pptx", mode)

# Text aus einem Stream extrahieren.
stream = FileInputStream("presentation.pptx")
try:
    stream_text = PresentationFactory.getInstance().getPresentationText(stream, mode)
finally:
    stream.close()

# Text aus einem Stream mithilfe von Ladeoptionen extrahieren.
stream_with_options = FileInputStream("presentation.pptx")
try:
    stream_text_with_options = PresentationFactory.getInstance().getPresentationText(stream_with_options, mode, load_options)
finally:
    stream_with_options.close()

Das Enum‑Argument TextExtractionArrangingMode gibt den Modus zur Anordnung des Textextraktionsergebnisses an und kann auf die folgenden Werte gesetzt werden:

  • Unarranged – Der Rohtext ohne Rücksicht auf seine Position auf der Folie.
  • Arranged – Der Text wird in derselben Reihenfolge wie auf der Folie angeordnet.

Der Unarranged‑Modus kann verwendet werden, wenn Geschwindigkeit kritisch ist; er ist schneller als der Arranged‑Modus.

PresentationText stellt den rohen Text dar, der aus der Präsentation extrahiert wurde. Die Methode getSlidesText gibt ein Array von Objekten des Typs SlideText zurück. Jedes Objekt repräsentiert den Text auf der entsprechenden Folie. Das Objekt vom Typ SlideText verfügt über die folgenden Methoden:

  • getText – Der Text innerhalb der Formen der Folie.
  • getMasterText – Der Text innerhalb der Formen der Master‑Folie, die dieser Folie zugeordnet sind.
  • getLayoutText – Der Text innerhalb der Formen der Layout‑Folie, die dieser Folie zugeordnet sind.
  • getNotesText – Der Text innerhalb der Formen der Notizfolie, die dieser Folie zugeordnet sind.
  • getCommentsText – Der Text innerhalb von Kommentaren, die dieser Folie zugeordnet sind.
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PresentationFactory, TextExtractionArrangingMode

presentation_path = "presentation.ppt"
arranging_mode = TextExtractionArrangingMode.Unarranged
presentation_text = PresentationFactory.getInstance().getPresentationText(presentation_path, arranging_mode)
first_slide_text = presentation_text.getSlidesText()[0]

print(first_slide_text.getText())
print(first_slide_text.getLayoutText())
print(first_slide_text.getMasterText())
print(first_slide_text.getNotesText())
print(first_slide_text.getCommentsText())

FAQ

Wie schnell verarbeitet Aspose.Slides große Präsentationen bei der Textextraktion?

Aspose.Slides ist für hohe Leistung optimiert und kann selbst große Präsentationen verarbeiten, wodurch es für Echtzeit‑ oder Massenvorgänge geeignet ist.

Kann Aspose.Slides Text aus Tabellen und Diagrammen innerhalb von Präsentationen extrahieren?

Ja. Aspose.Slides kann Text aus vielen Folienelementen extrahieren, einschließlich Tabellen und diagrammbezogener Objekte, sodass Sie auf Textinhalte in gängigen Präsentationsstrukturen zugreifen und diese analysieren können.

Benötige ich eine spezielle Aspose.Slides‑Lizenz, um Text aus Präsentationen zu extrahieren?

Sie können Text mit der kostenlosen Testversion von Aspose.Slides extrahieren, allerdings hat sie bestimmte Einschränkungen, z. B. die Verarbeitung nur einer begrenzten Anzahl von Folien. Für uneingeschränkte Nutzung und zur Verarbeitung größerer Präsentationen wird der Kauf einer Voll‑Lizenz empfohlen.