PythonでPDFを読み取る：テキスト、画像、文書プロパティの抽出

日々のデータ収集や文書アーカイブ、情報抽出の過程において、**PDF形式**はそのレイアウトの固定性と内容の安定性から広く使用されています。Python開発者がPDFの内容を自動的に抽出したい場合、使いやすく機能が充実したライブラリの選定が極めて重要です。

本記事では、Pythonを使用して、以下の3つの主要な**PDF操作方法**を紹介します：

- [PythonでPDFのテキストを抽出する方法](#pythonでpdfテキストを抽出する)
- [PythonでPDF内の画像を抽出する方法](#pythonでpdf画像を抽出する)
- [PythonでPDF文書のプロパティ（メタデータ）を取得する方法](#pythonでpdf文書プロパティを取得する)

これらの機能は、情報抽出、電子文書管理、文書検索システムなどの場面で活用できます。

本記事では、無料の [Free Spire.PDF for Python](https://www.e-iceblue.cn/Introduce/Free-Spire-PDF-Python.html) を使用しています。pip を使用してインストール: `pip install spire.pdf.free`

---

## PythonでPDFテキストを抽出する

PDF内のテキストを抽出することは、情報処理の基本となる作業です。**Spire.PDF** は `PdfTextExtractor` クラスを提供しており、ページごとにテキストを抽出することができます。また、抽出モードも設定可能です。

**操作手順：**

1. `PdfDocument` を作成し、PDFファイルを読み込みます
2. 各ページをループ処理して `PdfTextExtractor` を使用します
3. 抽出オプション（簡易抽出モードなど）を設定します
4. テキストを累積して出力します

**コード例：**

```python
from spire.pdf import PdfDocument, PdfTextExtractor, PdfTextExtractOptions

# PDFドキュメントの読み込み
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")

all_text = ""
# ページごとに処理
for pageIndex in range(pdf.Pages.Count):
    page = pdf.Pages.get_Item(pageIndex)
    text_extractor = PdfTextExtractor(page)
    options = PdfTextExtractOptions()
    options.IsExtractAllText = True
    options.IsSimpleExtraction = True
    all_text += text_extractor.ExtractText(options)

# 結果を出力
print(all_text)
```

**PDF文書（元ファイル）**：

![PythonでPDF文書を読み取る例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/098db71c-a301-45f9-b670-619cd95318f6.png)

**抽出されたPDFテキスト**：

![PythonでPDFテキストを抽出](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/0b8d33fa-19ba-410a-896c-781b8b5ab563.png)

---

## PythonでPDF画像を抽出する

PDFファイルには、図版・ロゴ・透かし画像などが含まれていることがあります。Spire.PDFの `PdfImageHelper` クラスを使えば、ページ内に埋め込まれている画像を簡単に抽出・保存できます。

**操作手順：**

1. PDFファイルを読み込み、ページを取得します
2. `PdfImageHelper.GetImagesInfo()` で画像情報を取得します
3. 取得した画像をファイルとして保存します

**コード例：**

```python
from spire.pdf import PdfDocument, PdfImageHelper

# PDFファイルを読み込み
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")

# 最初のページを取得
page = pdf.Pages.get_Item(0)

# 画像情報を取得
image_helper = PdfImageHelper()
images_info = image_helper.GetImagesInfo(page)

# 抽出画像を保存
for i in range(len(images_info)):
    images_info[i].Image.Save("output/Images/image" + str(i) + ".png")
```

**抽出されたPDF画像**：

![PythonでPDF画像を抽出](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/3f2ff0bc-8e72-4a26-a687-6aade02c7183.png)

---

## PythonでPDF文書プロパティを取得する

PDFファイルには、タイトル・作成者・キーワードなどの**メタデータ**が含まれており、分類や検索に役立ちます。Spire.PDF を使えば、これらの情報も簡単に取得できます。

**操作手順：**

1. PDFファイルを読み込みます
2. `DocumentInformation` プロパティを通じてメタデータにアクセスします
3. 各種プロパティを取得・出力します

**コード例：**

```python
from spire.pdf import PdfDocument

# PDFファイルを読み込み
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")

# 文書プロパティを取得
properties = pdf.DocumentInformation
print("タイトル： " + properties.Title)
print("作成者： " + properties.Author)
print("テーマ： " + properties.Subject)
print("キーワード： " + properties.Keywords)
```

**抽出された文書プロパティ**：

![PythonでPDF文書プロパティを抽出](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/b0b824ac-2a50-4651-95b7-cda0dbd95aa4.png)

---

## まとめ

**Free Spire.PDF for Python** を活用することで、以下のようなPDF情報の抽出処理をシンプルに実現できます：

* **テキストの抽出**：全文分析・検索インデックス用途に有効
* **画像の抽出**：資料保存、画像認識処理の前処理として活用
* **文書プロパティの取得**：メタ情報を用いた文書の分類や管理に便利

これらの機能は、ローカル環境で手軽に導入可能であり、軽量なPDF処理ツールの構築や、既存業務システムへの統合にも最適です。

---

👉 詳細チュートリアルはこちら：[Spire.PDF for Python チュートリアルセンター](https://www.e-iceblue.com/Tutorials/Python/Spire.PDF-for-Python/Program-Guide/Spire.PDF-for-Python-Program-Guide-Content.html)