Word 文書からテキストを抽出すると、文書内の記述情報を簡単に取得できます。これにより、テキストの操作、分析、整理が容易になり、テキストマイニング、感情分析、自然言語処理などの作業を実行できます。一方、画像を抽出すると、Word 文書に埋め込まれた視覚要素にアクセスでき、画像認識、コンテンツ抽出、画像データベースの作成などの作業に役立ちます。本記事では、Spire.Doc for Python を使用して、Python で Word 文書からテキストと画像を抽出する方法を紹介します。 Python で Word 文書の特定の段落のテキストを抽出する Python で Word 文書全体のテキストを抽出する Python で Word 文書全体の画像を抽出する Spire.Doc for Python のインストール この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。 pip install Spire.Doc Python で Word 文書の特定の段落のテキストを抽出する セクション内の特定の段落を取得するには、Section.Paragraphs[index] プロパティを使用します。その後、Paragraph.Text プロパティを使用して、段落のテキストを取得できます。詳細な手順は以下のとおりです。 Document オブジェクトを作成します。 Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。 Document.Sections[index] プロパティを使用して特定のセクションを取得します。 Section.Paragraphs[index] プロパティを使用して特定の段落を取得します。 Paragraph.Text プロパティを使用して段落のテキストを取得します。 Python from spire.doc import Document # Document オブジェクトを作成します doc = Document() # Word 文書を読み込みます doc.LoadFromFile("Sample.docx") # 指定したセクションを取得します section = doc.Sections.get_Item(0) # 指定した段落を取得します paragraph = section.Paragraphs.get_Item(1) # 段落のテキストを取得します str = paragraph.Text # 結果を出力します print(str) Python で Word 文書全体のテキストを抽出する 文書全体のテキストを取得する場合は、Document.GetText() メソッドを使用することで簡単に取得できます。手順は以下のとおりです。 Document オブジェクトを作成します。 Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。 Document.GetText() メソッドを使用して文書のテキストを取得します。 Python from spire.doc import Document # Document オブジェクトを作成します doc = Document() # Word ファイルを読み込みます doc.LoadFromFile("Sample.docx") # 文書全体のテキストを取得します docText = doc.GetText() # 結果を出力します print(docText) Python で Word 文書全体の画像を抽出する Spire.Doc for Python には、Word 文書から画像を直接取得するメソッドはありません。そのため、文書内の子オブジェクトを走査し、それぞれのオブジェクトが DocPicture であるかを判定する必要があります。DocPicture である場合、DocPicture.ImageBytes プロパティを使用して画像データを取得し、一般的な画像フォーマットで保存できます。主な手順は以下のとおりです。 Document オブジェクトを作成します。 Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。 文書内の子オブジェクトを順番に走査します。 子オブジェクトが DocPicture であるかを判定し、該当する場合は DocPicture.ImageBytes プロパティを使用して画像データを取得します。 画像データを PNG ファイルとして保存します。 Python import queue from spire.doc import Document, DocumentObjectType, DocPicture, ICompositeObject # Document オブジェクトを作成します doc = Document() # Word ファイルを読み込みます doc.LoadFromFile("Sample.docx") # Queue オブジェクトを作成します nodes = queue.Queue() nodes.put(doc) # リストを作成します images = [] while nodes.qsize() > 0: node = nodes.get() # 文書内の子オブジェクトをループ処理します for i in range(node.ChildObjects.Count): child = node.ChildObjects.get_Item(i) # 子オブジェクトが画像かどうかを判定します if child.DocumentObjectType == DocumentObjectType.Picture: picture = child if isinstance(child, DocPicture) else None dataBytes = picture.ImageBytes # 画像データをリストに追加します images.append(dataBytes) elif isinstance(child, ICompositeObject): nodes.put(child if isinstance(child, ICompositeObject) else None) # リスト内の画像をループ処理します for i, item in enumerate(images): fileName = "Image-{}.png".format(i) with open("output/抽出した画像/" + fileName, 'wb') as imageFile: # 指定したパスに画像を書き込みます imageFile.write(item) doc.Close() 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。