Pokročilá extrakce textu z prezentací na Androidu
Přehled
Extrahování textu z prezentací je běžný, ale zásadní úkol 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 údajům a jejich získání může být klíčové pro analýzu, automatizaci, indexování či migraci obsahu.
V tomto článku najdete komplexní průvodce, jak efektivně extrahovat text z různých formátů prezentací, včetně PPT, PPTX a ODP, pomocí Aspose.Slides pro Android prostřednictvím Javy. Naučíte se systematicky procházet prvky prezentace a přesně získat požadovaný textový obsah.
Extrahování textu ze snímku
Aspose.Slides pro Android prostřednictvím Javy 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. K extrahování textu ze snímku v prezentaci použijte metodu getAllTextBoxes. Tato metoda přijímá jako parametr objekt typu IBaseSlide. Po spuštění prohledá celý snímek na text a vrátí pole objektů typu ITextFrame, přičemž zachová veškeré formátování textu.
Následující úryvek kódu extrahuje veškerý text z prvního snímku prezentace:
int slideIndex = 0;
Presentation presentation = new Presentation("demo.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(slideIndex);
ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
Extrahování textu z prezentace
Pro skenování textu z celé prezentace použijte statickou metodu getAllTextFrames vystavenou třídou SlideUtil. Přijímá dva parametry:
- Nejprve objekt IPresentation představující PowerPoint nebo OpenDocument prezentaci, ze které bude text extrahován.
- Dále hodnota typu
booleanurčující, zda mají být při skenování textu zahrnuty hlavní snímky (master slides).
Metoda vrací pole objektů typu ITextFrame, včetně informací o formátování textu. Níže uvedený kód skenuje text a podrobnosti o formátování z prezentace, včetně hlavních snímků.
Presentation presentation = new Presentation("demo.pptx");
try {
boolean includeMasterSlides = true;
ITextFrame[] textFrames = SlideUtil.getAllTextFrames(presentation, includeMasterSlides);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
Kategorizovaná a rychlá extrakce textu
Třída PresentationFactory také poskytuje metody pro extrahování veškerého textu z prezentací:
IPresentationText getPresentationText(String file, int mode);
IPresentationText getPresentationText(InputStream stream, int mode);
IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);
Argument výčtového typu TextExtractionArrangingMode udává režim uspořádání výsledku extrakce textu a může být nastaven na následující hodnoty:
Unarranged– Neuspořádaný text bez ohledu na jeho umístění na snímku.Arranged– Text je uspořádán ve stejném pořadí jako na snímku.
Neuspořádaný režim lze použít, pokud je rychlost kritická; je rychlejší než uspořádaný režim.
IPresentationText představuje surový text extrahovaný z prezentace. Jeho metoda getSlidesText vrací pole objektů typu ISlideText. Každý objekt představuje text na odpovídajícím snímku. Objekt typu ISlideText má následující metody:
getText– Text uvnitř tvarů snímku.getMasterText– Text uvnitř tvarů hlavního snímku (master slide) spojeného s tímto snímkem.getLayoutText– Text uvnitř tvarů rozložení snímku (layout slide) spojeného s tímto snímkem.getNotesText– Text uvnitř tvarů poznámkového snímku (notes slide) spojeného s tímto snímkem.getCommentsText– Text v komentářích spojených s tímto snímkem.
String presentationPath = "presentation.pptx";
int arrangingMode = TextExtractionArrangingMode.Unarranged;
IPresentationText presentationText = PresentationFactory.getInstance().getPresentationText(presentationPath, arrangingMode);
ISlideText firstSlideText = presentationText.getSlidesText()[0];
System.out.println(firstSlideText.getText());
System.out.println(firstSlideText.getLayoutText());
System.out.println(firstSlideText.getMasterText());
System.out.println(firstSlideText.getNotesText());
System.out.println(firstSlideText.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ž ho činí vhodným pro scénáře zpracování v reálném čase nebo hromadně.
Umí Aspose.Slides extrahovat text z tabulek a grafů v prezentacích?
Ano. Aspose.Slides dokáž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 a analyzovat jej v běžných strukturách prezentace.
Potřebuji speciální licenci Aspose.Slides pro extrahování textu z prezentací?
Text můžete extrahovat pomocí bezplatné zkušební verze Aspose.Slides, i když má některá omezení, například zpracování pouze omezeného počtu snímků. Pro neomezené používání a práci s většími prezentacemi se doporučuje zakoupit plnou licenci.