การสกัดข้อความขั้นสูงจากพรีเซนเทชันใน Python ผ่าน Java
ภาพรวม
การสกัดข้อความจากพรีเซนเทชันเป็นงานทั่วไปแต่สำคัญสำหรับนักพัฒนาที่ทำงานกับเนื้อหาแบบสไลด์ ไม่ว่าคุณจะทำงานกับไฟล์ Microsoft PowerPoint ในรูปแบบ PPT หรือ PPTX หรือพรีเซนเทชัน OpenDocument (ODP) การเข้าถึงและดึงข้อมูลข้อความอาจเป็นสิ่งที่จำเป็นสำหรับการวิเคราะห์, การทำอัตโนมัติ, การทำดัชนี, หรือการย้ายเนื้อหา
บทความนี้ให้คำแนะนำอย่างเต็มที่เกี่ยวกับวิธีสกัดข้อความจากรูปแบบพรีเซนเทชันต่าง ๆ ได้แก่ PPT, PPTX, และ ODP โดยใช้ Aspose.Slides for Python via Java คุณจะได้เรียนรู้วิธีวนผ่านองค์ประกอบของพรีเซนเทชันอย่างเป็นระบบเพื่อดึงข้อความที่ต้องการอย่างแม่นยำ
สกัดข้อความจากสไลด์
Aspose.Slides for Python via Java มีคลาส SlideUtil คลาสนี้เปิดเผยเมธอดสแตติกหลายรูปแบบสำหรับสกัดข้อความทั้งหมดจากพรีเซนเทชันหรือสไลด์ เพื่อสกัดข้อความจากสไลด์ในพรีเซนเทชัน ให้ใช้เมธอด 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 เมธอดนี้รับพารามิเตอร์สองค่า:
- ครั้งแรก เป็นอ็อบเจกต์ Presentation ซึ่งแทนพรีเซนเทชัน PowerPoint หรือ OpenDocument ที่ต้องการสกัดข้อความ
- ครั้งที่สอง เป็นค่า
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 แต่ละอ็อบเจกต์แทนข้อความบนสไลด์ที่สอดคล้อง มีเมธอดต่อไปนี้:
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 แม้ว่าจะมี ข้อจำกัดบางประการ เช่น การประมวลผลจำนวนสไลด์ที่จำกัด สำหรับการใช้งานโดยไม่จำกัดและเพื่อจัดการพรีเซนเทชันขนาดใหญ่ ควรซื้อใบอนุญาตเต็มรูปแบบ