Python via Java ile Sunumlardan Gelişmiş Metin Çıkarma

Genel Bakış

Sunumlardan metin çıkarma, slayt içeriğiyle çalışan geliştiriciler için yaygın ancak önemli bir görevdir. Microsoft PowerPoint dosyaları PPT ya da PPTX formatında olsun ya da OpenDocument sunumları (ODP) ile çalışıyor olun, metinsel verilere erişmek ve bunları almak analiz, otomasyon, indeksleme veya içerik taşıma amacıyla kritik olabilir.

Bu makale, Aspose.Slides for Python via Java kullanarak PPT, PPTX ve ODP gibi çeşitli sunum formatlarından metni verimli bir şekilde nasıl çıkaracağınızı kapsamlı bir şekilde anlatır. Sunum öğeleri üzerinde sistematik olarak döngü yaparak ihtiyaç duyduğunuz metin içeriğini doğru şekilde almayı öğreneceksiniz.

Bir Slayttan Metin Çıkarma

Aspose.Slides for Python via Java, SlideUtil sınıfını sağlar. Bu sınıf, bir sunum veya slayttan tüm metni çıkarmak için birden fazla aşırı yüklenmiş statik yöntemi ortaya çıkarır. Bir sunumdaki slayttan metin çıkarmak için SlideUtil.getAllTextBoxes yöntemini kullanın. Bu yöntem, BaseSlide türünde bir nesneyi parametre olarak kabul eder. Çalıştırıldığında, yöntem slaydın tamamında metni tarar ve herhangi bir metin biçimlendirmesini koruyarak TextFrame türünde nesnelerden oluşan bir dizi döndürür.

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()

Bir Sunumdan Metin Çıkarma

Sunumun tamamındaki metni taramak için, SlideUtil.getAllTextFrames statik yöntemini kullanın. Bu yöntem iki parametre alır:

  1. İlk olarak, metni çıkarılacak PowerPoint ya da OpenDocument sunumunu temsil eden bir Presentation nesnesi.
  2. İkinci olarak, master slaytların da taranıp taranmayacağını belirten bir bool değeri.

Yöntem, metin biçimlendirme bilgilerini içeren TextFrame türünde nesnelerden oluşan bir dizi döndürür. Aşağıdaki kod, master slaytlar dahil olmak üzere bir sunumdan metin ve biçimlendirme ayrıntılarını tarar.

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()

Kategorize Edilmiş ve Hızlı Metin Çıkarma

PresentationFactory sınıfı da sunumlardan tüm metni çıkarmak için yöntemler sağlar:

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()

# Dosyadan metni çıkar.
file_text = PresentationFactory.getInstance().getPresentationText("presentation.pptx", mode)

# Akıştan metni çıkar.
stream = FileInputStream("presentation.pptx")
try:
    stream_text = PresentationFactory.getInstance().getPresentationText(stream, mode)
finally:
    stream.close()

# Yükleme seçeneklerini kullanarak akıştan metni çıkar.
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()

TextExtractionArrangingMode enum argümanı, metin çıkarma sonucunun nasıl düzenleneceğini belirtir ve şu değerlerden biri olarak ayarlanabilir:

  • Unarranged - Slayttaki konumuna bakılmaksızın ham metin.
  • Arranged - Metin, slayttaki sıraya aynı şekilde düzenlenir.

Hızın kritik olduğu durumlarda düzenlenmemiş (unarranged) mod kullanılabilir; bu mod, düzenli (arranged) moddan daha hızlıdır.

PresentationText sunumdan çıkarılan ham metni temsil eder. Its getSlidesText yöntemi, SlideText türünde nesnelerden oluşan bir dizi döndürür. Her nesne ilgili slaydın metnini temsil eder. SlideText türündeki nesnenin aşağıdaki yöntemleri vardır:

  • getText - Slaydın şekilleri içindeki metin.
  • getMasterText - Bu slaytla ilişkili master slaydın şekilleri içindeki metin.
  • getLayoutText - Bu slaytla ilişkili yerleşim slaydının şekilleri içindeki metin.
  • getNotesText - Bu slaytla ilişkili not slaydının şekilleri içindeki metin.
  • getCommentsText - Bu slaytla ilişkili yorumlardaki metin.
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())

SSS

Aspose.Slides büyük sunumları metin çıkarma sırasında ne kadar hızlı işliyor?

Aspose.Slides yüksek performans için optimize edilmiştir ve büyük sunumları bile işleyebilir, bu da gerçek zamanlı veya toplu işleme senaryoları için uygundur.

Aspose.Slides sunumlardaki tablolar ve grafiklerden metin çıkarabilir mi?

Evet. Aspose.Slides birçok slayt öğesinden, tablolar ve grafikle ilgili nesneler dahil, metin çıkarabilir, böylece yaygın sunum yapılarındaki metinsel içeriğe erişebilir ve analiz edebilirsiniz.

Sunumlardan metin çıkarmak için özel bir Aspose.Slides lisansına ihtiyacım var mı?

Metni, Aspose.Slides’in ücretsiz deneme sürümüyle çıkarabilirsiniz, ancak bu sürümde certain limitations gibi sınırlamalar bulunur; örneğin yalnızca sınırlı sayıda slayt işlenebilir. Sınırsız kullanım ve daha büyük sunumları işleyebilmek için tam lisans satın almanız önerilir.