2017-04-12 22 views
0

私は、ユーザーが投稿したクエリに関して関連性の高いドキュメントを返すpythonでドキュメント検索エンジンを構築しています。私は、PowerPointファイルを含むドキュメントのコレクションを持っています。 PPTの場合、結果ページで最初のいくつかのスライドタイトルをユーザーに表示して、わかりやすい画像を表示したいと思います(Google検索のように)。python-pptxスライドタイトルからテキストを抽出する

だから基本的に、私のpythonを使用してPPTファイルからスライドのタイトルからテキストを抽出したいです。私はそのためのpython-PPTXパッケージを使用しています。現在、私の実装は、この

from pptx import Presentation 
prs = Presentation(filepath) # load the ppt 
slide_titles = [] # container foe slide titles 
for slide in prs.slides: # iterate over each slide 
     title_shape = slide.shapes[0] # consider the zeroth indexed shape as the title 
     if title_shape.has_text_frame: # is this shape has textframe attribute true then 
      # check if the slide title already exists in the slide_title container 
      if title_shape.text.strip(""" [email protected]#$%^&*)(_-+=}{][:;<,>.?"'/<,""")+ '. ' not in slide_titles: 
       slide_titles.append(title_shape.text.strip(""" [email protected]#$%^&*)(_-+=}{][:;<,>.?"'/<,""")+ '. ') 

しかし、あなたは、私は毎回明らかにそうではありませんスライドのタイトルであることを、各スライド上のゼロインデックス付きの形状を想定しています見ることができるなどのようになります。どのようにこれを達成するための任意のアイデア?

ありがとうございます。

答えて

1

Slide.shapesSlideShapesオブジェクト)は、タイトルが存在する場合はタイトルシェイプを返します(通常は)。タイトルが存在しない場合はNoneを返します。
http://python-pptx.readthedocs.io/en/latest/api/shapes.html#slideshapes-objects

これは、タイトルシェイプにアクセスするのに適した方法です。

すべてのスライドにタイトルの形状があるわけではないので、その場合はエラーを避けるためにNoneの結果をテストする必要があります。

はまた、ユーザーが、時には彼らは追加多分別の新しいテキストボックスのように、タイトルの異なる形状を使用することに注意してください。したがって、スライドにタイトルとして表示されるテキストを確実に取得することはできません。ただし、PowerPointがタイトルと見なす内容に一致するテキスト、たとえば、アウトラインビューにそのスライドのタイトルとして表示されるテキストが表示されます。

関連する問題