Estrazione avanzata del testo dalle presentazioni in Python via Java
Panoramica
Estrarre testo dalle presentazioni è un’operazione comune ma fondamentale per gli sviluppatori che lavorano con contenuti diapositive. Che tu stia gestendo file Microsoft PowerPoint in formato PPT o PPTX, o presentazioni OpenDocument (ODP), accedere e recuperare i dati testuali può essere cruciale per analisi, automazione, indicizzazione o migrazione dei contenuti.
Questo articolo fornisce una guida completa su come estrarre efficientemente testo da vari formati di presentazione, inclusi PPT, PPTX e ODP, utilizzando Aspose.Slides per Python via Java. Imparerai come iterare sistematicamente attraverso gli elementi della presentazione per recuperare con precisione il contenuto testuale di cui hai bisogno.
Estrarre testo da una diapositiva
Aspose.Slides per Python via Java fornisce la classe SlideUtil. Questa classe espone diversi metodi statici sovraccaricati per estrarre tutto il testo da una presentazione o da una diapositiva. Per estrarre il testo da una diapositiva in una presentazione, utilizza il metodo SlideUtil.getAllTextBoxes. Questo metodo accetta come parametro un oggetto di tipo BaseSlide. Quando eseguito, il metodo scansiona l’intera diapositiva alla ricerca di testo e restituisce un array di oggetti di tipo TextFrame, mantenendo qualsiasi formattazione del testo.
Il seguente frammento di codice estrae tutto il testo dalla prima diapositiva della presentazione:
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()
Estrarre testo da una presentazione
Per scansionare il testo dell’intera presentazione, utilizza il metodo statico SlideUtil.getAllTextFrames esposto dalla classe SlideUtil. Accetta due parametri:
- Primo, un oggetto Presentation che rappresenta una presentazione PowerPoint o OpenDocument da cui verrà estratto il testo.
- Secondo, un valore
boolche indica se le diapositive master debbano essere incluse durante la scansione del testo della presentazione.
Il metodo restituisce un array di oggetti di tipo TextFrame, includendo le informazioni di formattazione del testo. Il codice qui sotto scansiona il testo e i dettagli di formattazione da una presentazione, incluse le diapositive master.
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()
Estrazione di testo categorizzata e veloce
La classe PresentationFactory fornisce anche metodi per estrarre tutto il testo dalle presentazioni:
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()
# Estrai il testo da un file.
file_text = PresentationFactory.getInstance().getPresentationText("presentation.pptx", mode)
# Estrai il testo da uno stream.
stream = FileInputStream("presentation.pptx")
try:
stream_text = PresentationFactory.getInstance().getPresentationText(stream, mode)
finally:
stream.close()
# Estrai il testo da uno stream usando le opzioni di caricamento.
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()
L’argomento enum TextExtractionArrangingMode indica la modalità per organizzare il risultato dell’estrazione del testo e può essere impostato sui seguenti valori:
- Unarranged - Il testo grezzo senza considerare la sua posizione sulla diapositiva.
- Arranged - Il testo è disposto nello stesso ordine della diapositiva.
La modalità Unarranged può essere usata quando la velocità è critica; è più veloce della modalità Arranged.
PresentationText rappresenta il testo grezzo estratto dalla presentazione. Il suo metodo getSlidesText restituisce un array di oggetti di tipo SlideText. Ogni oggetto rappresenta il testo sulla diapositiva corrispondente. L’oggetto di tipo SlideText ha i seguenti metodi:
getText- Il testo all’interno delle forme della diapositiva.getMasterText- Il testo all’interno delle forme della diapositiva master associate a questa diapositiva.getLayoutText- Il testo all’interno delle forme della diapositiva layout associate a questa diapositiva.getNotesText- Il testo all’interno delle forme della diapositiva note associate a questa diapositiva.getCommentsText- Il testo all’interno dei commenti associati a questa diapositiva.
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())
Domande frequenti
Quanto velocemente Aspose.Slides elabora grandi presentazioni durante l’estrazione del testo?
Aspose.Slides è ottimizzato per alte prestazioni e può elaborare anche grandi presentazioni, rendendolo adatto a scenari di elaborazione in tempo reale o in batch.
Aspose.Slides può estrarre testo da tabelle e grafici all’interno delle presentazioni?
Sì. Aspose.Slides può estrarre testo da molti elementi della diapositiva, incluse tabelle e oggetti correlati ai grafici, così puoi accedere e analizzare il contenuto testuale nelle strutture comuni delle presentazioni.
È necessaria una licenza speciale di Aspose.Slides per estrarre testo dalle presentazioni?
Puoi estrarre testo usando la versione di prova gratuita di Aspose.Slides, anche se avrà alcune limitazioni, come la possibilità di elaborare solo un numero limitato di diapositive. Per un uso senza restrizioni e per gestire presentazioni più grandi, è consigliato acquistare una licenza completa.