2017-04-12 3 views
2

Je suis actuellement en train d'essayer de tirer du texte à partir de fichiers .ppt et .pptx. J'utilise avec succès python-pptx afin de gérer les fichiers .pptx, MAIS selon its documentation, "Les fichiers .ppt de PowerPoint 2003 et versions antérieures ne fonctionneront pas."python-pptx ".ppt" gestion de travail autour de

Lors de la création d'un élément de présentation en utilisant cette ligne de code:

`prs = Presentation("Filepath\\presentation.ppt")` 

Je reçois l'erreur suivante:

`Traceback (most recent call last): 
...shortened for brevity.... 
KeyError: "no relationship of type 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument' in collection"` 

Je crois que cette erreur se produit parce que python-pptx ne peut pas gérer fichiers .ppt. J'ai essayé de remédier à cette situation de trois façons:

  1. Je voulais utiliser la fonction .save() associée à python-pptx mais je dois faire un élément de présentation à faire. Je ne peux pas faire cela parce que je devrais utiliser python-pptx qui ne peut pas gérer le fichier .ppt en premier lieu.
  2. Faire usage de os.rename(src, dst)
    • Cela ne pas travail. Renommer le fichier ne fonctionne pas de la même manière que «enregistrer sous», ce qui rend le fichier corrompu.
  3. J'utilisé win32com pour ouvrir l'application PowerPoint, ouvrez le fichier .ppt, puis enregistrez le fichier en tant que .pptx, et à proximité à la fois le fichier et l'application.

    • Cette méthode a fonctionné MAIS c'est vraiment "maladroit". (Voir le code ci-dessous.)

    Application = win32com.client.Dispatch("PowerPoint.Application") Application.Visible = True Presentation = Application.Presentations.Open("Filepath\\presentation.ppt") Presentation.Saveas("Filepath\\presentation.pptx") Presentation.Close() Application.Quit()

Ma question à la communauté est de savoir s'il existe un moyen plus sophistiqué ou élégant pour résoudre mon dilemme. Mon dilemme étant que je veux être capable d'analyser le texte à partir de fichiers .ppt et python-pptx ne gère pas ces types de fichiers.

Répondre

1

Votre approche est la façon dont je le ferais, peut-être en traitement par lots avant de commencer le traitement python-pptx. J'utiliserais probablement IronPython pour accéder à l'API MS, mais c'est essentiellement la même approche.

Il est possible que vous puissiez le faire avec une bibliothèque Python qui s'adresse aux bibliothèques LibreOffice ou Open Office comme alternative (PyOO est un exemple). Cela pourrait avoir l'avantage de ne pas nécessiter Windows, mais il s'agira toujours de "scripter" une application Office en cours d'exécution pour faire le travail; ce n'est pas une interface de bibliothèque directe. Cela signifie qu'il n'est probablement pas bien adapté à un fonctionnement fiable côté serveur si c'est ce que vous recherchez.