Skip to content

Библиотеки, сервисы, API для конвертации презентаций в текст из ppt, pptx, odp

marilisok edited this page Oct 24, 2020 · 6 revisions

Из pptx в текст

  1. Библиотека для создания и редактирования pptx: python-pptx.

Извлечь текст из слайда можно следующим образом:

  • посмотреть на все слайды и каждую форму на слайде

  • если есть фигура с атрибутом текста, распечатать shape.text

    from pptx import Presentation
    
    prs = Presentation("file.pptx")
    
    for slide in prs.slides:
    
      for shape in slide.shapes:
    
          if hasattr(shape, "text"):
    
              print(shape.text)
    

Больше информации можно получить из документации.

  1. Существует API для конвертации PPTX презентаций в txt. Установки данного API:

    pip install cloudmersive-convert-api-client
    

После установки. Мы можем написать функцию конвертации PPTX в txt. Пример приведен ниже:

from __future__ import print_function

import time

import cloudmersive_convert_api_client

from cloudmersive_convert_api_client.rest import ApiException

from pprint import pprint

# Configure API key authorization: Apikey

configuration = cloudmersive_convert_api_client.Configuration()

configuration.api_key['Apikey'] = 'YOUR_API_KEY'

# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed

# configuration.api_key_prefix['Apikey'] = 'Bearer'

# create an instance of the API class

api_instance = cloudmersive_convert_api_client.ConvertDocumentApi(cloudmersive_convert_api_client.ApiClient(configuration))

input_file = '/path/to/file' # file | Input file to perform the operation on.

try:

# Convert PowerPoint PPTX Presentation to Text (txt)

api_response = api_instance.convert_document_pptx_to_txt(input_file)

pprint(api_response)

except ApiException as e:

print("Exception when calling ConvertDocumentApi->convert_document_pptx_to_txt: %s\n" % e)

Из ppt в текст

Конвертируем в pptx c помощью кода описанного ниже, чтобы использовать библиотеку и api описанные выше:

# Instantiate a Presentation object that represents a PPTX file

pres= self.Presentation

pres = pres(self.dataDir + "Presentation1.pptx")

# Saving the PPTX presentation to PPTX format

save_format = self.SaveFormat

pres.save(self.dataDir + "Aspose.pptx", save_format.Pptx)

print("Document has been converted, please check the output file.")

Из odp в текст

По сути, файл OpenDocument - это просто zip-архив, но с другим расширением. Файлы в zip-файле - это в основном файлы XML, например content.xml, settings.xml и styles.xml.

По сути, нам просто нужны два стандартных модуля python для извлечения данных из файла OpenDocument: zipfile для обработки сжатия zip и xml.parsers.expat (или другой модуль синтаксического анализатора xml) для разбора xml. Пример с файлом электронной таблицы pelican.ods выглядит следующим образом:

# import the needed modules

import zipfile

import xml.parsers.expat

# get content xml data from OpenDocument file

ziparchive = zipfile.ZipFile("pelican.ods", "r")

xmldata = ziparchive.read("content.xml")

ziparchive.close()

class Element(list):

    def __init__(self, name, attrs):

        self.name = name

        self.attrs = attrs


class TreeBuilder:

    def __init__(self):

        self.root = Element("root", None)

        self.path = [self.root]

    def start_element(self, name, attrs):

        element = Element(name, attrs)

        self.path[-1].append(element)

        self.path.append(element)

    def end_element(self, name):

        assert name == self.path[-1].name

        self.path.pop()

    def char_data(self, data):

        self.path[-1].append(data)

# create parser and parsehandler

parser = xml.parsers.expat.ParserCreate()

treebuilder = TreeBuilder()

# assign the handler functions

parser.StartElementHandler  = treebuilder.start_element

parser.EndElementHandler    = treebuilder.end_element

parser.CharacterDataHandler = treebuilder.char_data

parse the data

parser.Parse(xmldata, True)

Ссылки на источники:

  1. https://cloudmersive.medium.com/how-to-convert-a-powerpoint-pptx-to-text-txt-in-python-e1edb86bbebe

  2. https://stackoverflow.com/questions/39418620/extracting-text-from-multiple-powerpoint-files-using-python/51905465

  3. https://docs.aspose.com/slides/java/converting-ppt-to-pptx-in-python/#:~:text=Python%20Code,to%20PPTX%20format%20save_format%20%3D%20self.