Руководство по Python: извлечение изображений и текста из PPT
Когда нам нужно извлечь материалы, такие как изображения и текст из презентации PowerPoint, выполнение этого вручную — копирование и вставка по одному — не только отнимает много времени, но и повышает риск пропустить что-то или допустить ошибку. Сегодня я расскажу о простом способе пакетного извлечения изображений и текста из PPT с помощью Python.
Подготовка
Сначала необходимо установить Spire.Presentation для Python. Вы можете установить его через команду pip:
pip install Spire.Presentation
Извлечение изображений из PPT
Часто изображения в PPT являются именно тем материалом, который нам нужен. Следующий код демонстрирует, как извлечь все изображения из PPT и сохранить их локально:
from spire.presentation.common import *
from spire.presentation import *
# Создаём экземпляр Presentation
ppt = Presentation()
# Загружаем документ PowerPoint
ppt.LoadFromFile("sample.pptx")
# Проходим по всем изображениям в документе
for i, image in enumerate(ppt.Images):
# Извлекаем и сохраняем изображение
ImageName = «ExtractImage/Images_» + str(i) + «.png»
image.Image.Save(ImageName)
ppt.Dispose()
Как это работает:
- Presentation(): создаёт объект документа PPT
- LoadFromFile(): загружает обрабатываемый PPT-файл
- ppt.Images: получает коллекцию всех изображений в документе
- image.Image.Save(): сохраняет изображение в формате PNG
После выполнения все изображения будут последовательно сохранены в папку ExtractImage с именами Images_0.png, Images_1.png и так далее.
Извлечение текста из PPT
Помимо изображений, извлечение текстового содержания также является частой задачей. Следующий код проходит по каждому слайду и извлекает текст из всех фигур:
from spire.presentation import *
from spire.presentation.common import *
# Создаём объект Presentation
pres = Presentation()
# Загружаем презентацию PowerPoint
pres.LoadFromFile("Sample.pptx")
text = []
# Проходим по каждому слайду
for slide in pres.Slides:
# Проходим по каждой фигуре
for shape in slide.Shapes:
# Проверяем, является ли фигура типом IAutoShape (может содержать текст)
if isinstance(shape, IAutoShape):
# Извлекаем текст из фигуры
for paragraph in shape.TextFrame.Paragraphs:
text.append(paragraph.Text)
# Записываем извлечённый текст в файл
with open("output/SlideText.txt«, «w», encoding=’utf-8′) as f:
for s in text:
f.write(s + «\n»)
pres.Dispose()
Как это работает:
- pres.Slides: получает коллекцию всех слайдов
- slide.Shapes: получает все фигуры на каждом слайде
- IAutoShape: представляет тип автофигуры, которая может содержать текст
- shape.TextFrame.Paragraphs: получает коллекцию абзацев в фигуре
- В конце весь текст записывается в файл SlideText.txt, по одному абзацу на строку
Важные замечания
- Освобождение ресурсов : После использования объекта Presentation обязательно вызовите метод Dispose(), чтобы освободить ресурсы и избежать утечек памяти.
- Пути к файлам : Убедитесь, что путь к PPT-файлу указан верно. Папки для сохранения изображений и текста нужно создать заранее или программно.
- Кодировка текста : При записи в текстовые файлы используйте кодировку utf-8 для корректной обработки неанглийских символов, например кириллицы.
- Формат изображений : Метод Save() по умолчанию сохраняет изображения в формате PNG. Обратитесь к официальной документации, если вам нужны другие форматы.
- Типы фигур : Извлечение текста обрабатывает только тип IAutoShape. Если текст находится в других типах фигур, например в таблицах или диаграммах, потребуется дополнительная обработка.
Заключение
С помощью Spire.Presentation для Python вы можете пакетно извлекать изображения и текст из PPT всего несколькими строками кода. Эта библиотека мощная и простая в использовании, что делает её идеальной для сценариев офисной автоматизации. Надеюсь, эта статья поможет вам повысить эффективность работы!
Если у вас есть более широкие задачи по автоматизации обработки PPT, такие как создание презентаций, изменение содержимого, добавление диаграмм и т.д., Spire.Presentation предлагает множество других богатых возможностей, готовых к изучению.