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:

  1. Nejprve objekt IPresentation představující PowerPoint nebo OpenDocument prezentaci, ze které bude text extrahován.
  2. Dále hodnota typu boolean urč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.