استخراج پیشرفته متن از ارائه‌ها در .NET

بررسی کلی

استخراج متن از ارائه‌ها کار رایجی است که برای توسعه‌دهندگانی که با محتوای اسلایدها کار می‌کنند، ضروری می‌باشد. چه با فایل‌های Microsoft PowerPoint در فرمت PPT یا PPTX، چه با ارائه‌های OpenDocument (ODP) سر و کار داشته باشید، دسترسی و بازیابی داده‌های متنی می‌تواند برای تحلیل، خودکارسازی، ایندکس‌گذاری یا مهاجرت محتوا حیاتی باشد.

این مقاله راهنمای جامعی برای استخراج مؤثر متن از فرمت‌های مختلف ارائه، از جمله PPT، PPTX و ODP، با استفاده از Aspose.Slides for .NET ارائه می‌دهد. شما یاد خواهید گرفت که چگونه به‌صورت سیستماتیک بر عناصر ارائه پیمایش کنید تا محتوای متنی مورد نیاز خود را به‌دقت بازیابی کنید.

استخراج متن از یک اسلاید

Aspose.Slides for .NET فضای‌نامی Aspose.Slides.Util را فراهم می‌کند که شامل کلاس SlideUtil است. این کلاس چندین متد استاتیک بارگذاری‌شده برای استخراج تمام متن از یک ارائه یا اسلاید ارائه می‌دهد. برای استخراج متن از یک اسلاید در ارائه، از متد GetAllTextBoxes استفاده کنید. این متد یک شیء از نوع IBaseSlide را به‌عنوان پارامتر می‌پذیرد. هنگام اجرا، متد کل اسلاید را برای متن اسکن می‌کند و یک آرایه از اشیاء نوع ITextFrame را برمی‌گرداند که قالب‌بندی متن را حفظ می‌کند.

کد زیر تمام متن اولین اسلاید ارائه را استخراج می‌کند:

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);
            }
        }
    }
}

استخراج متن از یک ارائه

برای اسکن متن از کل ارائه، از متد استاتیک GetAllTextFrames که توسط کلاس SlideUtil ارائه شده است، استفاده کنید. این متد دو پارامتر می‌گیرد:

  1. ابتدا، یک شیء IPresentation که نمایانگر یک ارائه PowerPoint یا OpenDocument است و متن از آن استخراج خواهد شد.
  2. دوم، یک مقدار Boolean که نشان می‌دهد آیا اسلایدهای مستر هنگام اسکن متن از ارائه شامل شوند یا نه.

متد یک آرایه از اشیاء نوع ITextFrame را برمی‌گرداند که شامل اطلاعات قالب‌بندی متن است. کد زیر متن و جزئیات قالب‌بندی را از یک ارائه اسکن می‌کند، از جمله اسلایدهای مستر.

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);
            }
        }
    }
}

استخراج متن دسته‌بندی‌شده و سریع

کلاس PresentationFactory نیز متدهایی برای استخراج تمام متن از ارائه‌ها فراهم می‌کند:

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

آرگومان enum TextExtractionArrangingMode حالت سازماندهی نتایج استخراج متن را مشخص می‌کند و می‌تواند به مقادیر زیر تنظیم شود:

  • Unarranged - متن خام بدون در نظر گرفتن موقعیت آن در اسلاید.
  • Arranged - متن به همان ترتیب که در اسلاید قرار دارد، سازماندهی می‌شود.

حالت unarranged می‌تواند وقتی سرعت حائز اهمیت است، استفاده شود؛ این حالت سریع‌تر از حالت arranged است.

IPresentationText متن خام استخراج‌شده از ارائه را نمایندگی می‌کند. ویژگی SlidesText آن یک آرایه از اشیاء نوع ISlideText را برمی‌گرداند. هر شیء متن اسلاید مربوطه را نشان می‌دهد. شیء نوع ISlideText دارای ویژگی‌های زیر است:

  • Text - متن داخل شکل‌های اسلاید.
  • MasterText - متن داخل شکل‌های اسلاید مستر مرتبط با این اسلاید.
  • LayoutText - متن داخل شکل‌های اسلاید لایه‌بندی مرتبط با این اسلاید.
  • NotesText - متن داخل شکل‌های اسلاید یادداشت‌های این اسلاید.
  • CommentsText - متن داخل نظرات مرتبط با این اسلاید.
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);

سوالات متداول

Aspose.Slides تا چه حد سریع می‌تواند ارائه‌های بزرگ را هنگام استخراج متن پردازش کند؟

Aspose.Slides برای عملکرد بالا بهینه‌سازی شده است و حتی می‌تواند ارائه‌های بزرگ را پردازش کند، بنابراین برای سناریوهای پردازش زمان واقعی یا دسته‌ای مناسب است.

آیا Aspose.Slides می‌تواند متن را از جداول و نمودارها درون ارائه‌ها استخراج کند؟

بله. Aspose.Slides می‌تواند متن را از بسیاری از عناصر اسلاید، از جمله جداول و اشیاء مرتبط با نمودارها، استخراج کند، بنابراین می‌توانید به محتوای متنی در ساختارهای رایج ارائه دسترسی داشته و آن را تجزیه و تحلیل کنید.

آیا برای استخراج متن از ارائه‌ها به یک لایسنس خاص Aspose.Slides نیاز دارم؟

می‌توانید با نسخه آزمایشی رایگان Aspose.Slides متن را استخراج کنید، هرچند که محدودیت‌های معینی دارد، مانند پردازش تعداد محدودی اسلاید. برای استفاده بدون محدودیت و پردازش ارائه‌های بزرگ‌تر، خرید یک لایسنس کامل توصیه می‌شود.