Pokročilá extrakce textu z prezentací v C++
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 a získávání textových dat může být klíčové pro analýzu, automatizaci, indexaci či migraci obsahu.
Tento článek poskytuje komplexní návod, jak efektivně extrahovat text z různých formátů prezentací, včetně PPT, PPTX a ODP, pomocí Aspose.Slides pro C++. Naučíte se, jak systematicky procházet prvky prezentace a přesně získat potřebný textový obsah.
Extrahování textu ze snímku
Aspose.Slides pro C++ poskytuje jmenný prostor Aspose.Slides.Util, který obsahuje 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á objekt typu IBaseSlide jako parametr. Po spuštění metoda prohledá celý snímek a vrátí pole objektů typu ITextFrame, zachovávajících veškeré formátování textu.
Následující úryvek kódu extrahuje veškerý text z prvního snímku prezentace:
auto slideIndex = 0;
auto presentation = System::MakeObject<Presentation>(u"demo.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto textFrames = Util::SlideUtil::GetAllTextBoxes(slide);
for (const auto& textFrame : textFrames)
{
for (const auto& paragraph : textFrame->get_Paragraphs())
{
for (const auto& portion : paragraph->get_Portions())
{
auto portionText = portion->get_Text();
Console::WriteLine(portionText);
auto portionFormat = portion->get_PortionFormat();
auto fontHeight = portionFormat->get_FontHeight();
Console::WriteLine(fontHeight);
auto latinFont = portionFormat->get_LatinFont();
if (latinFont != nullptr)
{
auto fontName = latinFont->get_FontName();
Console::WriteLine(fontName);
}
}
}
}
presentation->Dispose();
Extrahování textu z prezentace
Pro prohledání textu v celé prezentaci použijte statickou metodu GetAllTextFrames, kterou poskytuje třída SlideUtil. Přijímá dva parametry:
- První je objekt IPresentation, který představuje prezentaci PowerPoint nebo OpenDocument, ze které bude text extrahován.
- Druhý je hodnota typu
Boolean, která udává, zda mají být při prohledává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 prohledá text a podrobnosti o formátování v prezentaci, včetně hlavních snímků.
auto presentation = System::MakeObject<Presentation>(u"demo.pptx");
auto includeMasterSlides = true;
auto textFrames = Util::SlideUtil::GetAllTextFrames(presentation, includeMasterSlides);
for (const auto& textFrame : textFrames)
{
for (const auto& paragraph : textFrame->get_Paragraphs())
{
for (const auto& portion : paragraph->get_Portions())
{
auto portionText = portion->get_Text();
Console::WriteLine(portionText);
auto portionFormat = portion->get_PortionFormat();
auto fontHeight = portionFormat->get_FontHeight();
Console::WriteLine(fontHeight);
auto latinFont = portionFormat->get_LatinFont();
if (latinFont != nullptr)
{
auto fontName = latinFont->get_FontName();
Console::WriteLine(fontName);
}
}
}
}
presentation->Dispose();
Kategorizovaná a rychlá extrakce textu
Třída PresentationFactory také poskytuje metody pro extrahování veškerého textu z prezentací:
System::SharedPtr<IPresentationText> GetPresentationText(System::String file, TextExtractionArrangingMode mode);
System::SharedPtr<IPresentationText> GetPresentationText(System::SharedPtr<System::IO::Stream> stream, TextExtractionArrangingMode mode);
System::SharedPtr<IPresentationText> GetPresentationText(System::SharedPtr<System::IO::Stream> stream, TextExtractionArrangingMode mode, System::SharedPtr<ILoadOptions> options);
Argument výčtového typu TextExtractionArrangingMode určuje režim uspořádání výsledku extrakce textu a může být nastaven na následující hodnoty:
Unarranged- Surový text bez ohledu na jeho pozici 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 surový text extrahovaný z prezentace. Jeho metoda get_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í metody:
get_Text()– Text uvnitř tvarů snímku.get_MasterText()– Text uvnitř tvarů hlavního snímku (master slide) spojeného s tímto snímkem.get_LayoutText()– Text uvnitř tvarů rozložení snímku (layout slide) spojeného s tímto snímkem.get_NotesText()– Text uvnitř tvarů poznámkového snímku (notes slide) spojeného s tímto snímkem.get_CommentsText()– Text v poznámkách spojených s tímto snímkem.
auto presentationPath = u"presentation.ppt";
auto arrangingMode = TextExtractionArrangingMode::Unarranged;
auto presentationText = PresentationFactory::get_Instance()->GetPresentationText(presentationPath, arrangingMode);
auto firstSlideText = presentationText->get_SlidesText()[0];
Console::WriteLine(firstSlideText->get_Text());
Console::WriteLine(firstSlideText->get_LayoutText());
Console::WriteLine(firstSlideText->get_MasterText());
Console::WriteLine(firstSlideText->get_NotesText());
Console::WriteLine(firstSlideText->get_CommentsText());
Č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 large presentations, což jej č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í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 extrakci textu z prezentací?
Můžete extrahovat text pomocí bezplatné zkušební verze Aspose.Slides, i když má certain limitations, například zpracování pouze omezeného počtu snímků. Pro neomezené použití a zpracování větších prezentací se doporučuje zakoupit plnou licenci.