[Python] Word文書からテキストを抽出する方法

PythonでWord文書からテキストを抽出するには、python-docxライブラリが便利です。

このライブラリを使用すると、Wordファイルを開き、段落やテーブルの内容を簡単に取得できます。

まず、Documentクラスを使ってWordファイルを読み込みます。

次に、paragraphs属性を利用して、文書内のすべての段落をリストとして取得し、それぞれの段落のテキストを抽出します。

この方法により、Word文書の内容を効率的に処理することが可能です。

この記事でわかること
  • python-docxとdocx2txtを使ったテキスト抽出方法
  • Word文書の構造に基づくテキスト抽出の注意点
  • 特定の情報を抽出するための正規表現やキーワード検索の方法
  • Word文書の内容をテキストファイルやCSVファイルに変換する方法
  • Word文書の内容をSQLiteやMySQLデータベースに保存する方法

目次から探す

python-docxを使ったテキスト抽出

python-docxのインストール方法

python-docxは、PythonでWord文書を操作するためのライブラリです。

インストールは非常に簡単で、以下のコマンドを使用します。

pip install python-docx

このコマンドを実行することで、python-docxライブラリがインストールされ、Word文書の読み書きが可能になります。

基本的な使い方

python-docxを使用することで、Word文書からテキストを抽出したり、文書を作成したりすることができます。

以下に基本的な使い方を示します。

from docx import Document
# Word文書を開く
doc = Document('example.docx')
# 各段落のテキストを表示
for paragraph in doc.paragraphs:
    print(paragraph.text)

このコードでは、example.docxというWord文書を開き、各段落のテキストを順に表示します。

テキスト抽出の具体例

具体的なテキスト抽出の例を以下に示します。

ここでは、Word文書から特定のキーワードを含む段落を抽出します。

from docx import Document
# Word文書を開く
doc = Document('example.docx')
# 特定のキーワードを含む段落を抽出
keyword = "Python"
for paragraph in doc.paragraphs:
    if keyword in paragraph.text:
        print(paragraph.text)

このコードは、example.docx内の段落をすべてチェックし、”Python”というキーワードを含む段落のみを表示します。

これにより、特定の情報を効率的に抽出することができます。

docx2txtを使ったテキスト抽出

docx2txtのインストール方法

docx2txtは、Word文書からテキストを抽出するためのシンプルなPythonライブラリです。

インストールは以下のコマンドで行います。

pip install docx2txt

このコマンドを実行することで、docx2txtライブラリがインストールされ、Word文書から簡単にテキストを抽出できるようになります。

基本的な使い方

docx2txtを使用すると、Word文書全体のテキストを簡単に抽出することができます。

以下に基本的な使い方を示します。

import docx2txt
# Word文書からテキストを抽出
text = docx2txt.process("example.docx")
# 抽出したテキストを表示
print(text)

このコードでは、example.docxというWord文書からすべてのテキストを抽出し、表示します。

テキスト抽出の具体例

具体的なテキスト抽出の例として、抽出したテキストをファイルに保存する方法を示します。

import docx2txt
# Word文書からテキストを抽出
text = docx2txt.process("example.docx")
# 抽出したテキストをファイルに保存
with open("output.txt", "w", encoding="utf-8") as file:
    file.write(text)

このコードは、example.docxから抽出したテキストをoutput.txtというテキストファイルに保存します。

これにより、Word文書の内容をテキストファイルとして保存し、後で簡単に参照することができます。

Word文書の構造とテキスト抽出の注意点

Word文書は、単なるテキストファイルとは異なり、複雑な構造を持っています。

テキスト抽出を行う際には、文書の構造を理解し、適切に処理することが重要です。

段落とテキストの関係

Word文書は、段落単位でテキストが構成されています。

各段落は独立したテキストブロックとして扱われ、python-docxdocx2txtを使用する際には、段落ごとにテキストを抽出することが一般的です。

  • 段落の抽出: 各段落はparagraphsプロパティを通じてアクセスできます。
  • 段落内のテキスト: 段落内のテキストはtextプロパティで取得できます。

段落ごとにテキストを処理することで、文書全体の構造を維持しながら情報を抽出できます。

表や画像の扱い

Word文書には、テキスト以外にも表や画像が含まれることがあります。

これらの要素は、テキスト抽出の際に特別な処理が必要です。

  • 表の抽出: python-docxを使用すると、表の内容をセル単位で抽出できます。

表はtablesプロパティを通じてアクセス可能です。

  • 画像の抽出: docx2txtは、画像を指定したディレクトリに保存する機能を持っています。

画像はテキストとは別に処理する必要があります。

表や画像を含む文書を処理する際には、これらの要素を適切に扱うための追加のコードが必要です。

フォーマットの違いによる影響

Word文書のフォーマットは、テキスト抽出に影響を与えることがあります。

特に、異なるバージョンのWordや異なるフォーマット設定がある場合、抽出結果が変わることがあります。

  • フォントやスタイル: フォントやスタイルの違いは、テキストの見た目には影響しますが、抽出されるテキストそのものには影響しません。
  • 改行やスペース: 改行やスペースの扱いは、文書のフォーマットによって異なる場合があります。

抽出後のテキストの整形が必要になることがあります。

フォーマットの違いを考慮し、抽出後のテキストを適切に処理することが重要です。

応用例

Word文書からテキストを抽出する基本的な方法を学んだ後は、これを応用して特定の情報を抽出したり、他の形式に変換したり、データベースに保存することができます。

Word文書から特定の情報を抽出する

正規表現を使った情報抽出

正規表現を使用することで、特定のパターンに一致する情報を効率的に抽出できます。

例えば、日付やメールアドレスなどの特定の形式を持つデータを抽出する際に便利です。

import re
from docx import Document
# Word文書を開く
doc = Document('example.docx')
# 正規表現パターンを定義
pattern = r'\b\d{4}-\d{2}-\d{2}\b'  # YYYY-MM-DD形式の日付
# 各段落からパターンに一致するテキストを抽出
for paragraph in doc.paragraphs:
    matches = re.findall(pattern, paragraph.text)
    for match in matches:
        print(match)

キーワード検索による抽出

特定のキーワードを含む段落を抽出することで、関連する情報を効率的に取得できます。

from docx import Document
# Word文書を開く
doc = Document('example.docx')
# キーワードを定義
keyword = "Python"
# キーワードを含む段落を抽出
for paragraph in doc.paragraphs:
    if keyword in paragraph.text:
        print(paragraph.text)

Word文書の内容を他の形式に変換する

テキストファイルへの変換

Word文書の内容をテキストファイルに変換することで、簡単に編集や共有が可能になります。

import docx2txt
# Word文書からテキストを抽出
text = docx2txt.process("example.docx")
# テキストをファイルに保存
with open("output.txt", "w", encoding="utf-8") as file:
    file.write(text)

CSVファイルへの変換

表形式のデータを含むWord文書をCSVファイルに変換することで、データ分析や処理が容易になります。

import csv
from docx import Document
# Word文書を開く
doc = Document('example.docx')
# 最初の表をCSVに変換
table = doc.tables[0]
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    for row in table.rows:
        writer.writerow([cell.text for cell in row.cells])

Word文書の内容をデータベースに保存する

SQLiteを使ったデータベース保存

SQLiteを使用して、Word文書の内容をローカルデータベースに保存することができます。

import sqlite3
from docx import Document
# SQLiteデータベースに接続
conn = sqlite3.connect('example.db')
c = conn.cursor()
# テーブルを作成
c.execute('''CREATE TABLE IF NOT EXISTS paragraphs (id INTEGER PRIMARY KEY, text TEXT)''')
# Word文書を開く
doc = Document('example.docx')
# 各段落をデータベースに保存
for paragraph in doc.paragraphs:
    c.execute("INSERT INTO paragraphs (text) VALUES (?)", (paragraph.text,))
# 変更を保存して接続を閉じる
conn.commit()
conn.close()

MySQLを使ったデータベース保存

MySQLを使用して、Word文書の内容をリモートデータベースに保存することも可能です。

import mysql.connector
from docx import Document
# MySQLデータベースに接続
conn = mysql.connector.connect(
    host="localhost",
    user="user",
    password="password",
    database="example_db"
)
cursor = conn.cursor()
# テーブルを作成
cursor.execute('''CREATE TABLE IF NOT EXISTS paragraphs (id INT AUTO_INCREMENT PRIMARY KEY, text TEXT)''')
# Word文書を開く
doc = Document('example.docx')
# 各段落をデータベースに保存
for paragraph in doc.paragraphs:
    cursor.execute("INSERT INTO paragraphs (text) VALUES (%s)", (paragraph.text,))
# 変更を保存して接続を閉じる
conn.commit()
conn.close()

これらの応用例を活用することで、Word文書の情報をさまざまな形で利用することができます。

よくある質問

python-docxとdocx2txtの違いは何ですか?

python-docxdocx2txtはどちらもWord文書を操作するためのライブラリですが、用途や機能に違いがあります。

  • python-docx: Word文書の読み書きが可能で、段落や表、スタイルなどの詳細な操作ができます。

文書の編集や新規作成に向いています。

  • docx2txt: 主にテキスト抽出に特化しており、シンプルに文書全体のテキストを取得するのに適しています。

画像の抽出もサポートしていますが、文書の編集機能はありません。

Word文書から画像を抽出することはできますか?

はい、Word文書から画像を抽出することは可能です。

docx2txtを使用すると、画像を指定したディレクトリに保存することができます。

例えば、docx2txt.process("example.docx", "/path/to/save/images")のようにディレクトリを指定することで、文書内の画像を抽出できます。

テキスト抽出がうまくいかない場合の対処法は?

テキスト抽出がうまくいかない場合、以下の点を確認してください。

  • ファイルの形式: 対象のファイルが正しいWord形式(.docx)であることを確認してください。
  • ライブラリのバージョン: 使用しているライブラリが最新バージョンであるか確認し、必要に応じてアップデートしてください。
  • エラーメッセージ: エラーメッセージが表示される場合、その内容を確認し、問題の原因を特定してください。
  • サンプルコードの確認: サンプルコードを再確認し、必要なimport文やファイルパスが正しいか確認してください。

まとめ

Word文書からテキストを抽出する方法は、Pythonのライブラリを活用することで簡単に実現できます。

python-docxdocx2txtの違いを理解し、適切な方法を選択することで、効率的に情報を取得できます。

この記事を参考に、Word文書のテキスト抽出を試してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • Microsoft Office (17)
  • URLをコピーしました!
目次から探す