Pokročilé extrahování textu z prezentací v JavaScriptu

Přehled

Extrahování textu z prezentací je běžný, ale zásadní úkol pro vývojáře pracující se snímky. Ať už pracujete s soubory Microsoft PowerPoint ve formátu PPT nebo PPTX, nebo s prezentacemi OpenDocument (ODP), přístup a získávání textových dat 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 Node.js prostřednictvím Java. Naučíte se, jak systematicky procházet prvky prezentace a přesně získat požadovaný textový obsah.

Extrahování textu ze snímku

Aspose.Slides pro Node.js prostřednictvím 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 getAllTextBoxes . Tato metoda přijímá jako parametr objekt snímku. Po spuštění metoda prohledá celý snímek a vrátí pole objektů TextFrame , přičemž zachová veškeré formátování textu.

Následující ukázkový kód extrahuje celý text z prvního snímku v prezentaci:

const slideIndex = 0;

const presentation = new aspose.slides.Presentation("demo.pptx");
try {
    const slide = presentation.getSlides().get_Item(slideIndex);

    const textFrames = aspose.slides.SlideUtil.getAllTextBoxes(slide);

    for (let textFrameIndex = 0; textFrameIndex < textFrames.length; textFrameIndex++) {
        const textFrame = textFrames[textFrameIndex];

        const paragraphs = textFrame.getParagraphs();
        const paragraphCount = paragraphs.getCount();
        for (let paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
            const paragraph = paragraphs.get_Item(paragraphIndex);

            const portions = paragraph.getPortions();
            const portionCount = portions.getCount();
            for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
                const portion = portions.get_Item(portionIndex);

                const portionText = portion.getText();
                console.log(portionText);

                const portionFormat = portion.getPortionFormat();
                const fontHeight = portionFormat.getFontHeight();
                console.log(fontHeight);

                const latinFont = portionFormat.getLatinFont();
                if (latinFont !== null) {
                    const fontName = latinFont.getFontName();
                    console.log(fontName);
                }
            }
        }
    }
} finally {
    presentation.dispose();
}

Extrahování textu z prezentace

Pro prohledání textu v celé prezentaci použijte statickou metodu getAllTextFrames vystavenou třídou SlideUtil . Přijímá dva parametry:

  1. První je objekt Presentation , který představuje prezentaci PowerPoint nebo OpenDocument, ze které bude text extrahován.
  2. Druhý je hodnota typu boolean, určující, zda mají být při skenování textu zahrnuty hlavní snímky.

Metoda vrací pole objektů 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ů.

const presentation = new aspose.slides.Presentation("demo.pptx");
try {
    const includeMasterSlides = true;
    const textFrames = aspose.slides.SlideUtil.getAllTextFrames(presentation, includeMasterSlides);

    for (let textFrameIndex = 0; textFrameIndex < textFrames.length; textFrameIndex++) {
        const textFrame = textFrames[textFrameIndex];

        const paragraphs = textFrame.getParagraphs();
        const paragraphCount = paragraphs.getCount();
        for (let paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
            const paragraph = paragraphs.get_Item(paragraphIndex);

            const portions = paragraph.getPortions();
            const portionCount = portions.getCount();
            for (let portionIndex = 0; portionIndex < portionCount; portionIndex++) {
                const portion = portions.get_Item(portionIndex);

                const portionText = portion.getText();
                console.log(portionText);

                const portionFormat = portion.getPortionFormat();
                const fontHeight = portionFormat.getFontHeight();
                console.log(fontHeight);

                const latinFont = portionFormat.getLatinFont();
                if (latinFont !== null) {
                    const fontName = latinFont.getFontName();
                    console.log(fontName);
                }
            }
        }
    }
} finally {
    presentation.dispose();
}

Kategorizované a rychlé extrahování textu

Třída PresentationFactory také poskytuje metody pro extrahování veškerého textu z prezentací:

PresentationText getPresentationText(String file, int mode);
PresentationText getPresentationText(InputStream stream, int mode);
PresentationText getPresentationText(InputStream stream, int mode, LoadOptions options);

Argument výčtu TextExtractionArrangingMode určuje režim uspořádání výsledku extrakce textu a může nabývat následujících hodnot:

  • Unarranged – surový 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.

Režim Unarranged lze použít, když je rychlost klíčová; je rychlejší než režim Arranged.

PresentationText představuje surový text extrahovaný z prezentace. Jeho metoda getSlidesText vrací pole objektů, z nichž každý představuje text na příslušném snímku. Každý objekt textu snímku má následující metody:

  • Metoda getText vrací text uvnitř tvarů snímku.
  • Metoda getMasterText vrací text uvnitř tvarů hlavního snímku přiřazeného k tomuto snímku.
  • Metoda getLayoutText vrací text uvnitř tvarů rozložení snímku přiřazeného k tomuto snímku.
  • Metoda getNotesText vrací text uvnitř tvarů poznámkového snímku přiřazeného k tomuto snímku.
  • Metoda getCommentsText vrací text v komentářích přiřazených k tomuto snímku.
const presentationPath = "presentation.ppt";
const arrangingMode = aspose.slides.TextExtractionArrangingMode.Unarranged;
const presentationText = aspose.slides.PresentationFactory.getInstance().getPresentationText(presentationPath, arrangingMode);
const firstSlideText = presentationText.getSlidesText()[0];

console.log(firstSlideText.getText());
console.log(firstSlideText.getLayoutText());
console.log(firstSlideText.getMasterText());
console.log(firstSlideText.getNotesText());
console.log(firstSlideText.getCommentsText());

Často kladené otázky

Jak rychle Aspose.Slides zpracovává velké prezentace během extrakce textu?

Aspose.Slides je optimalizován 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 prezentací.

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ž bude mít některá omezení , například zpracování pouze omezeného počtu snímků. Pro neomezené použití a práci s většími prezentacemi se doporučuje zakoupení plné licence.