استخراج پیشرفته متن از ارائه‌ها در پایتون از طریق جاوا

مروری کلی

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

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

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

Aspose.Slides برای Python via Java کلاس SlideUtil را فراهم می‌کند. این کلاس چندین متد استاتیک overload شده برای استخراج تمام متن از یک ارائه یا اسلاید ارائه می‌دهد. برای استخراج متن از یک اسلاید در یک ارائه، از متد SlideUtil.getAllTextBoxes استفاده کنید. این متد شی‌ای از نوع BaseSlide را به‌عنوان پارامتر می‌پذیرد. هنگام اجرا، متد تمام اسلاید را برای یافتن متن جستجو می‌کند و آرایه‌ای از اشیای نوع TextFrame را بر می‌گرداند که قالب‌بندی متن را حفظ می‌کند.

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SlideUtil

slide_index = 0

presentation = Presentation("demo.pptx")
try:
    slide = presentation.getSlides().get_Item(slide_index)
    text_frames = SlideUtil.getAllTextBoxes(slide)

    for text_frame in text_frames:
        for paragraph in text_frame.getParagraphs():
            for portion in paragraph.getPortions():
                portion_text = portion.getText()
                print(portion_text)

                portion_format = portion.getPortionFormat()
                font_height = portion_format.getFontHeight()
                print(font_height)

                latin_font = portion_format.getLatinFont()
                if latin_font is not None:
                    font_name = latin_font.getFontName()
                    print(font_name)
finally:
    presentation.dispose()

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

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

  1. اول، شی‌ای از نوع Presentation که نمایانگر یک ارائه PowerPoint یا OpenDocument است و از آن متن استخراج می‌شود.
  2. دوم، مقدار bool که نشان می‌دهد آیا اسلایدهای مستر در هنگام اسکن متن از ارائه گنجانده شوند یا نه.

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SlideUtil

presentation = Presentation("demo.pptx")
try:
    include_master_slides = True
    text_frames = SlideUtil.getAllTextFrames(presentation, include_master_slides)

    for text_frame in text_frames:
        for paragraph in text_frame.getParagraphs():
            for portion in paragraph.getPortions():
                portion_text = portion.getText()
                print(portion_text)

                portion_format = portion.getPortionFormat()
                font_height = portion_format.getFontHeight()
                print(font_height)

                latin_font = portion_format.getLatinFont()
                if latin_font is not None:
                    font_name = latin_font.getFontName()
                    print(font_name)
finally:
    presentation.dispose()

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

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, PresentationFactory, TextExtractionArrangingMode
from java.io import FileInputStream

mode = TextExtractionArrangingMode.Unarranged
load_options = LoadOptions()

# متن را از یک فایل استخراج کنید.
file_text = PresentationFactory.getInstance().getPresentationText("presentation.pptx", mode)

# متن را از یک جریان استخراج کنید.
stream = FileInputStream("presentation.pptx")
try:
    stream_text = PresentationFactory.getInstance().getPresentationText(stream, mode)
finally:
    stream.close()

# متن را از یک جریان با استفاده از گزینه‌های بارگذاری استخراج کنید.
stream_with_options = FileInputStream("presentation.pptx")
try:
    stream_text_with_options = PresentationFactory.getInstance().getPresentationText(stream_with_options, mode, load_options)
finally:
    stream_with_options.close()

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

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

حالت Unarranged وقتی سرعت حیاتی است قابل استفاده است؛ این حالت سریع‌تر از حالت Arranged می‌باشد.

PresentationText متن خام استخراج‌شده از ارائه را نشان می‌دهد. متد getSlidesText این کلاس آرایه‌ای از اشیای نوع SlideText را بر می‌گرداند. هر شیء متن اسلاید مربوطه را نمایندگی می‌کند. شیء نوع SlideText دارای متدهای زیر است:

  • getText – متن داخل شکل‌های اسلاید.
  • getMasterText – متن داخل شکل‌های اسلاید مستر مرتبط با این اسلاید.
  • getLayoutText – متن داخل شکل‌های اسلاید لایه‌بندی مرتبط با این اسلاید.
  • getNotesText – متن داخل شکل‌های اسلاید یادداشت‌ها مرتبط با این اسلاید.
  • getCommentsText – متن داخل نظرات مرتبط با این اسلاید.
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PresentationFactory, TextExtractionArrangingMode

presentation_path = "presentation.ppt"
arranging_mode = TextExtractionArrangingMode.Unarranged
presentation_text = PresentationFactory.getInstance().getPresentationText(presentation_path, arranging_mode)
first_slide_text = presentation_text.getSlidesText()[0]

print(first_slide_text.getText())
print(first_slide_text.getLayoutText())
print(first_slide_text.getMasterText())
print(first_slide_text.getNotesText())
print(first_slide_text.getCommentsText())

پرسش‌های متداول

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

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

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

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

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

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