استخراج پیشرفته متن از ارائهها در اندروید
مرور کلی
استخراج متن از ارائهها یک کار رایج اما اساسی برای توسعهدهندگانی است که با محتوای اسلایدها کار میکنند. چه با فایلهای Microsoft PowerPoint در قالب PPT یا PPTX کار کنید و چه با ارائههای OpenDocument (ODP)، دسترسی و بازیابی دادههای متنی میتواند برای تجزیه و تحلیل، خودکارسازی، فهرستبندی یا مهاجرت محتوا حیاتی باشد.
این مقاله یک راهنمای کامل در مورد نحوه استخراج مؤثر متن از فرمتهای مختلف ارائه، از جمله PPT، PPTX و ODP، با استفاده از Aspose.Slides برای Android از طریق Java ارائه میدهد. شما یاد میگیرید که چگونه بهصورت سیستماتیک بر عناصر ارائه تکرار کنید تا بهدقت محتوای متنی مورد نیاز خود را بازیابی کنید.
استخراج متن از یک اسلاید
Aspose.Slides برای Android از طریق Java کلاس SlideUtil را فراهم میکند. این کلاس چندین متد استاتیک بارگذاریشده برای استخراج تمام متن از یک ارائه یا اسلاید را ارائه میدهد. برای استخراج متن از یک اسلاید در یک ارائه، از متد getAllTextBoxes استفاده کنید. این متد یک شیء از نوع IBaseSlide را به عنوان پارامتر میپذیرد. هنگام اجرا، متد تمام اسلاید را برای متن اسکن میکند و یک آرایه از اشیاء نوع ITextFrame را بر میگرداند که قالببندی متن را حفظ میکند.
int slideIndex = 0;
Presentation presentation = new Presentation("demo.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(slideIndex);
ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
استخراج متن از یک ارائه
برای اسکن متن از کل ارائه، از متد استاتیک getAllTextFrames ارائهشده توسط کلاس SlideUtil استفاده کنید. این متد دو پارامتر میپذیرد:
- اولین پارامتر، شیء IPresentation است که نمایانگر یک ارائه PowerPoint یا OpenDocument است که متن آن استخراج میشود.
- دومین پارامتر، یک مقدار
booleanاست که نشان میدهد آیا اسلایدهای اصلی هنگام اسکن متن از ارائه گنجانده شوند یا خیر.
این متد یک آرایه از اشیاء نوع ITextFrame را بر میگرداند که شامل اطلاعات قالببندی متن است. کد زیر متن و جزئیات قالببندی را از یک ارائه، از جمله اسلایدهای اصلی، اسکن میکند.
Presentation presentation = new Presentation("demo.pptx");
try {
boolean includeMasterSlides = true;
ITextFrame[] textFrames = SlideUtil.getAllTextFrames(presentation, includeMasterSlides);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
String portionText = portion.getText();
System.out.println(portionText);
IPortionFormat portionFormat = portion.getPortionFormat();
float fontHeight = portionFormat.getFontHeight();
System.out.println(fontHeight);
IFontData latinFont = portionFormat.getLatinFont();
if (latinFont != null) {
String fontName = latinFont.getFontName();
System.out.println(fontName);
}
}
}
}
} finally {
presentation.dispose();
}
استخراج متن دستهبندیشده و سریع
کلاس PresentationFactory نیز روشهایی برای استخراج تمام متن از ارائهها فراهم میکند:
IPresentationText getPresentationText(String file, int mode);
IPresentationText getPresentationText(InputStream stream, int mode);
IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);
آرگومان enum TextExtractionArrangingMode نشاندهنده حالت سازماندهی نتایج استخراج متن است و میتواند به مقادیر زیر تنظیم شود:
Unarranged- متن خام بدون در نظر گرفتن موقعیت آن در اسلاید.Arranged- متن به همان ترتیبی که در اسلاید است، سازماندهی میشود.
حالت Unarranged میتواند زمانی که سرعت حیاتی است استفاده شود؛ سریعتر از حالت Arranged است.
IPresentationText نمایانگر متن خام استخراجشده از ارائه است. متد getSlidesText آن یک آرایه از اشیاء نوع ISlideText را بر میگرداند. هر شیء متن مربوط به اسلاید متناظر را نشان میدهد. شیء نوع ISlideText دارای متدهای زیر است:
getText- متنی که در اشکال اسلاید وجود دارد.getMasterText- متنی که در اشکال اسلاید اصلی (master) مرتبط با این اسلاید وجود دارد.getLayoutText- متنی که در اشکال اسلاید چیدمان (layout) مرتبط با این اسلاید وجود دارد.getNotesText- متنی که در اشکال اسلاید یادداشتها (notes) مرتبط با این اسلاید وجود دارد.getCommentsText- متنی که در نظرات مرتبط با این اسلاید وجود دارد.
String presentationPath = "presentation.pptx";
int arrangingMode = TextExtractionArrangingMode.Unarranged;
IPresentationText presentationText = PresentationFactory.getInstance().getPresentationText(presentationPath, arrangingMode);
ISlideText firstSlideText = presentationText.getSlidesText()[0];
System.out.println(firstSlideText.getText());
System.out.println(firstSlideText.getLayoutText());
System.out.println(firstSlideText.getMasterText());
System.out.println(firstSlideText.getNotesText());
System.out.println(firstSlideText.getCommentsText());
سوالات متداول
Aspose.Slides در هنگام استخراج متن چقدر سریع اسلایدهای بزرگ را پردازش میکند؟
Aspose.Slides برای عملکرد بالا بهینهسازی شده است و حتی میتواند ارائههای بزرگ را پردازش کند، که آن را برای سناریوهای پردازش بلادرنگ یا دستهای مناسب میسازد.
آیا Aspose.Slides میتواند متن را از جداول و نمودارهای موجود در ارائهها استخراج کند؟
بله. Aspose.Slides میتواند متن را از بسیاری از عناصر اسلاید، از جمله جداول و اشیاء مربوط به نمودارها، استخراج کند، بنابراین میتوانید به محتوای متنی در ساختارهای رایج ارائه دسترسی داشته و آن را تجزیه و تحلیل کنید.
آیا برای استخراج متن از ارائهها نیاز به لایسنس ویژه Aspose.Slides دارم؟
میتوانید با نسخه آزمایشی رایان Aspose.Slides متن را استخراج کنید، هرچند که این نسخه دارای محدودیتهای خاص است، مانند پردازش تعداد محدودی اسلاید. برای استفاده بدون محدودیت و برخورداری از قابلیت پردازش ارائههای بزرگتر، خرید یک لایسنس کامل توصیه میشود.