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

Přehled

Extrahování textu z prezentací je běžný, ale zároveň zásadní úkol pro vývojáře pracující se obsahem snímků. Ať už pracujete se soubory Microsoft PowerPoint ve formátu PPT nebo PPTX, nebo s OpenDocument prezentacemi (ODP), přístup k textovým datům a jejich získávání může být klíčové pro analýzu, automatizaci, indexaci či migraci obsahu.

Tento článek poskytuje komplexní průvodce, jak efektivně extrahovat text z různých formátů prezentací, včetně PPT, PPTX a ODP, pomocí Aspose.Slides for .NET. Naučíte se, jak systematicky procházet prvky prezentace, abyste přesně získali požadovaný textový obsah.

Extrahování textu ze snímku

Aspose.Slides for .NET poskytuje prostor názvů Aspose.Slides.Util, který obsahuje třídu SlideUtil. Tato třída exponuje 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á objekt typu IBaseSlide jako parametr. Při provedení metoda prohledá celý snímek 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;

using var presentation = new Presentation("demo.pptx");

var slide = presentation.Slides[slideIndex];

var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextBoxes(slide);

foreach (var textFrame in textFrames)
{
    foreach (var paragraph in textFrame.Paragraphs)
    {
        foreach (var portion in paragraph.Portions)
        {
            var portionText = portion.Text;
            Console.WriteLine(portionText);

            var portionFormat = portion.PortionFormat;
            var fontHeight = portionFormat.FontHeight;
            Console.WriteLine(fontHeight);

            var latinFont = portionFormat.LatinFont;
            if (latinFont != null)
            {
                var fontName = latinFont.FontName;
                Console.WriteLine(fontName);
            }
        }
    }
}

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. Zadruhé hodnota typu Boolean, která určuje, zda mají být zahrnuty master snímky při skenování textu z prezentace.

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ě master snímků.

using var presentation = new Presentation("demo.pptx");

var includeMasterSlides = true;
var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(presentation, includeMasterSlides);

foreach (var textFrame in textFrames)
{
    foreach (var paragraph in textFrame.Paragraphs)
    {
        foreach (var portion in paragraph.Portions)
        {
            var portionText = portion.Text;
            Console.WriteLine(portionText);

            var portionFormat = portion.PortionFormat;
            var fontHeight = portionFormat.FontHeight;
            Console.WriteLine(fontHeight);

            var latinFont = portionFormat.LatinFont;
            if (latinFont != null)
            {
                var fontName = latinFont.FontName;
                Console.WriteLine(fontName);
            }
        }
    }
}

Kategorizované a rychlé extrahování textu

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

IPresentationText GetPresentationText(string file, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode, ILoadOptions options);

Argument výčtu TextExtractionArrangingMode určuje režim uspořádání výsledku extrakce textu a může být nastaven na následující hodnoty:

  • Unarranged - Neupravený 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, když je rychlost kritická; je rychlejší než uspořádaný režim.

IPresentationText představuje neupravený text extrahovaný z prezentace. Jeho vlastnost SlidesText 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í vlastnosti:

  • Text - Text uvnitř tvarů snímku.
  • MasterText - Text uvnitř tvarů master snímku, který je k tomuto snímku přiřazen.
  • LayoutText - Text uvnitř tvarů layout snímku, který je k tomuto snímku přiřazen.
  • NotesText - Text uvnitř tvarů poznámkového snímku, který je k tomuto snímku přiřazen.
  • CommentsText - Text uvnitř komentářů přiřazených k tomuto snímku.
var presentationPath = "presentation.ppt";
var arrangingMode = TextExtractionArrangingMode.Unarranged;
var presentationText = PresentationFactory.Instance.GetPresentationText(presentationPath, arrangingMode);
var firstSlideText = presentationText.SlidesText[0];

Console.WriteLine(firstSlideText.Text);
Console.WriteLine(firstSlideText.LayoutText);
Console.WriteLine(firstSlideText.MasterText);
Console.WriteLine(firstSlideText.NotesText);
Console.WriteLine(firstSlideText.CommentsText);

Často kladené dotazy

Jak rychle Aspose.Slides zpracovává velké prezentace při extrahování 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 v reálném čase nebo hromadného zpracování.

Může Aspose.Slides extrahovat text z tabulek a grafů v prezentacích?

Ano. Aspose.Slides dokáže extrahovat text z mnoha prvků snímků, 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 extrahování textu z prezentací?

Text můžete extrahovat pomocí bezplatné zkušební verze Aspose.Slides, i když bude mít určité 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.