Pokročilé extrahování textu z prezentací v Pythonu přes Java
Přehled
Extrahování textu z prezentací je běžná, ale zásadní úloha pro vývojáře pracující s obsahem snímků. Ať už pracujete se soubory Microsoft PowerPoint ve formátu PPT nebo PPTX, nebo s prezentacemi OpenDocument (ODP), přístup k textovým datům může být klíčový pro analýzu, automatizaci, indexování nebo migraci obsahu.
Tento článek poskytuje ucelený návod, jak efektivně extrahovat text z různých formátů prezentací, včetně PPT, PPTX a ODP, pomocí Aspose.Slides pro Python přes Java. Naučíte se systematicky procházet prvky prezentace a přesně získat požadovaný textový obsah.
Extrahovat text ze snímku
Aspose.Slides pro Python přes Java poskytuje třídu SlideUtil. Tato třída nabízí několik přetížených statických metod pro extrahování veškerého textu z prezentace nebo snímku. Pro extrahování textu ze snímku v prezentaci použijte metodu SlideUtil.getAllTextBoxes. Tato metoda přijímá jako parametr objekt typu BaseSlide. Po spuštění metoda prohledá celý snímek a vrátí pole objektů typu TextFrame, přičemž zachová formátování textu.
Následující úryvek kódu extrahuje veškerý text z prvního snímku prezentace:
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()
Extrahovat text z celé prezentace
Pro skenování textu v celé prezentaci použijte statickou metodu SlideUtil.getAllTextFrames, kterou nabízí třída SlideUtil. Přijímá dva parametry:
- Nejprve objekt typu Presentation, který představuje PowerPoint nebo OpenDocument prezentaci, ze které bude text extrahován.
- Dále hodnotu typu
bool, která určuje, zda mají být při skenování textu zahrnuty i hlavní snímky (master slides).
Metoda vrací pole objektů typu TextFrame, včetně informací o formátování textu. Níže uvedený kód prohledá text a podrobnosti o formátování v prezentaci, včetně hlavních snímků.
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()
Kategorizovaná a rychlá extrakce textu
Třída PresentationFactory také poskytuje metody pro extrahování veškerého textu z prezentací:
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()
# Extrahovat text ze souboru.
file_text = PresentationFactory.getInstance().getPresentationText("presentation.pptx", mode)
# Extrahovat text z proudu.
stream = FileInputStream("presentation.pptx")
try:
stream_text = PresentationFactory.getInstance().getPresentationText(stream, mode)
finally:
stream.close()
# Extrahovat text z proudu pomocí možností načtení.
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()
Argument výčtu TextExtractionArrangingMode určuje režim uspořádání výsledků extrakce textu a může být nastaven na následující hodnoty:
- Unarranged – surový text bez ohledu na jeho polohu na snímku.
- Arranged – text je uspořádán ve stejném pořadí jako na snímku.
Režim Unarranged lze použít, když je kritická rychlost; je rychlejší než režim Arranged.
Třída PresentationText představuje surový text extrahovaný z prezentace. Její metoda getSlidesText vrací pole objektů typu SlideText. Každý objekt představuje text na odpovídajícím snímku. Objekt typu SlideText má následující metody:
getText– Text uvnitř tvarů snímku.getMasterText– Text uvnitř tvarů hlavního snímku spojeného s tímto snímkem.getLayoutText– Text uvnitř tvarů rozložení snímku spojeného s tímto snímkem.getNotesText– Text uvnitř tvarů poznámkového snímku spojeného s tímto snímkem.getCommentsText– Text v komentářích spojených s tímto snímkem.
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())
Často kladené otázky
Jak rychle Aspose.Slides zpracovává velké prezentace při extrakci textu?
Aspose.Slides je optimalizováno pro vysoký výkon a dokáže zpracovat i velké prezentace, což jej činí vhodným pro scénáře v reálném čase i hromadného zpracování.
Dokáže Aspose.Slides extrahovat text z tabulek a grafů v prezentacích?
Ano. Aspose.Slides může extrahovat text z mnoha prvků snímku, včetně tabulek a objektů souvisejících s grafy, takže můžete přistupovat k textovému obsahu běžných strukturových prvků prezentace.
Potřebuji speciální licenci Aspose.Slides pro extrakci textu z prezentací?
Text můžete extrahovat pomocí bezplatné zkušební verze Aspose.Slides, i když má některá omezení, například zpracování jen omezeného počtu snímků. Pro neomezené používání a zpracování větších prezentací se doporučuje zakoupit plnou licenci.