Haladó szövegkivonás prezentációkból Pythonon keresztül Java-ral
Áttekintés
A prezentációkból szöveget kinyerni gyakori, ugyanakkor elengedhetetlen feladat a diatartalommal dolgozó fejlesztők számára. Akár Microsoft PowerPoint fájlokkal (PPT vagy PPTX formátumban), akár OpenDocument prezentációkkal (ODP) dolgozol, a szöveges adatok elérése és lekérdezése kritikus lehet elemzés, automatizálás, indexelés vagy tartalom‑migráció céljából.
Ez a cikk átfogó útmutatót nyújt arról, hogyan lehet hatékonyan kinyerni a szöveget különböző prezentációformátumokból, beleértve a PPT, PPTX és ODP formátumokat, az Aspose.Slides for Python via Java használatával. Megtanulod, hogyan iterálj rendszerezetten a prezentációelemeken a szükséges szövegtartalom pontos lekérdezéséhez.
Szöveg kinyerése egy diáról
Az Aspose.Slides for Python via Java biztosítja a SlideUtil osztályt. Ez az osztály több túlterhelt statikus metódust kínál a prezentáció vagy dia teljes szövegének kinyerésére. Egy diához tartozó szöveg kinyeréséhez a SlideUtil.getAllTextBoxes metódust kell használni. Ez a metódus egy BaseSlide típusú objektumot fogad paraméterként. Végrehajtáskor a metódus a teljes diát bejárja a szöveg után, és egy TextFrame típusú objektumok tömbjét adja vissza, megőrizve a szöveg formázását.
Az alábbi kódrészlet a prezentáció első diáján lévő összes szöveget nyeri ki:
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()
Szöveg kinyerése egy prezentációból
A teljes prezentáció szövegének beolvasásához használd a SlideUtil.getAllTextFrames statikus metódust, amely a SlideUtil osztályban érhető el. Két paramétert fogad:
- Először egy Presentation objektum, amely egy PowerPoint vagy OpenDocument prezentációt képvisel, ahonnan a szöveget ki kell nyerni.
- Másodszor egy
boolérték, amely azt jelzi, hogy a mesterdiák is bele legyenek foglalva a prezentáció szövegének beolvasásakor.
A metódus egy TextFrame típusú objektumok tömbjét adja vissza, amely tartalmazza a szöveg formázási információit is. Az alábbi kód beolvassa a szöveget és a formázási részleteket egy prezentációból, beleértve a mesterdiákat.
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()
Kategorizált és gyors szövegkivonás
A PresentationFactory osztály szintén rendelkezik módszerekkel a prezentációkból származó összes szöveg kinyerésére:
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()
# Kinyeri a szöveget egy fájlból.
file_text = PresentationFactory.getInstance().getPresentationText("presentation.pptx", mode)
# Kinyeri a szöveget egy adatfolyamból.
stream = FileInputStream("presentation.pptx")
try:
stream_text = PresentationFactory.getInstance().getPresentationText(stream, mode)
finally:
stream.close()
# Kinyeri a szöveget egy adatfolyamból betöltési beállításokkal.
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()
A TextExtractionArrangingMode felsorolt típusú argumentum jelzi a szövegkivonás eredményének rendezési módját, és a következő értékekre állítható:
- Unarranged – A nyers szöveg a dia pozíciójától függetlenül.
- Arranged – A szöveg ugyanabban a sorrendben van elrendezve, mint a dián.
A nem rendezett mód akkor használható, amikor a sebesség kritikus; gyorsabb, mint a rendezett mód.
PresentationText a prezentációból kinyert nyers szöveget képviseli. A getSlidesText metódusa egy SlideText típusú objektumok tömbjét adja vissza. Minden objektum a megfelelő dián lévő szöveget reprezentálja. A SlideText típusú objektumnak a következő metódusai vannak:
getText– A dia alakzatain belüli szöveg.getMasterText– A kapcsolódó mesterdia alakzatain belüli szöveg.getLayoutText– A kapcsolódó elrendezésdia alakzatain belüli szöveg.getNotesText– A kapcsolódó jegyzetdia alakzatain belüli szöveg.getCommentsText– A diához kapcsolódó megjegyzések szövege.
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
Milyen gyorsan dolgozza fel az Aspose.Slides a nagy prezentációkat szövegkivonás közben?
Az Aspose.Slides magas teljesítményre van optimalizálva, és még nagy prezentációkat is képes feldolgozni, így alkalmas valós idejű vagy tömeges feldolgozási helyzetekben.
Képes az Aspose.Slides szöveget kinyerni a táblázatokból és diagramokból a prezentációkban?
Igen. Az Aspose.Slides számos diáselemből képes szöveget kinyerni, beleértve a táblázatokat és a diagramokkal kapcsolatos objektumokat, így hozzáférhetsz és elemezheted a szöveges tartalmat a gyakori prezentációs struktúrákban.
Szükségem van speciális Aspose.Slides licencre a prezentációk szövegkivonásához?
A szöveget a Aspose.Slides ingyenes próbaverziójával is ki tudod nyerni, bár ez bizonyos korlátozásokkal jár, például csak korlátozott számú dia feldolgozásával. Korlátlan használathoz és nagyobb prezentációk kezelése esetén a teljes licenc megvásárlása ajánlott.