PythonでWord文書のページ数、単語数、段落数、セクション数などを直接取得する

出版、学術、コンテンツ管理などの分野で、Word文書のページ数や単語数などの情報を計算することは基本的なタスクです。正確なページ数や単語数は、文書の長さを評価したり、印刷コストを推定したり、テキストの複雑さを分析したり、フォーマットガイドラインに準拠していることを保証するために重要です。ドキュメントを個別にプレビューして関連情報を表示するのは非常に手間がかかりますが、**Pythonを使用してドキュメントのページ数、単語数、段落数、セクション数などの重要な情報をプレビューせずに効率的に取得**することができます。

- **[Word文書のページ数、単語数、文字数、段落数、スペースを含む文字数を取得する](#word文書のページ数単語数文字数段落数スペースを含む文字数を取得する)**
- **[Pythonを使用してWord文書のセクション数を計算する](#pythonを使用してword文書のセクション数を計算する)**

この記事では、[Spire.Doc for Python](https://www.e-iceblue.com/Download/Spire-Doc-Python.html)を使用する方法を説明します。公式ウェブサイトから入手できます。また、PyPIを使用してインストールすることもできます：`pip install Spire.Doc`。

## Word文書のページ数、単語数、文字数、段落数、スペースを含む文字数を取得する
APIの **Document.BuiltinDocumentProperties** プロパティを使用して、ページ数や単語数、文字数などのドキュメントのいくつかの組み込みプロパティを取得できます。以下は手順です：
1. 必要なライブラリをインポートします。Word文書を処理するための `spire.doc` と `spire.doc.common`、およびファイルおよびディレクトリ操作のための `os` を使用します。
2. 走査するフォルダのパスを定義します。
3. `Document` クラスのインスタンス `doc` を作成し、Word文書をロードおよび操作するために使用します。
4. `os.walk()` を使用して指定したフォルダおよびサブフォルダ内のすべてのファイルを走査します。
5. 走査された各ファイルに対して：
   - ファイルの拡張子が `.doc` または `.docx` であるかどうかをチェックし、Word文書であることを示します。
   - `os.path.join()` を使用して完全なファイルパスを結合し、`doc.LoadFromFile()` メソッドを使用してそのWord文書をロードします。
   - `doc.UpdateWordCount()` を呼び出してドキュメントの単語数の統計情報を更新し、統計データが正確であることを確認します。
   - ドキュメントの組み込みプロパティを取得し、`builtinProperties` 変数に格納します。
   - 組み込みプロパティからドキュメントのページ数（`PageCount`）、段落数（`ParagraphCount`）、文字数（`CharCount`）、スペースを含む文字数（`CharCountWithSpace`）、および単語数（`WordCount`）をそれぞれ抽出します。
   - これらの統計情報と対応するファイル名を一緒に表示します。
6. すべてのWord文書の走査と処理が完了したら、`doc.Close()` を呼び出してドキュメントを閉じ、リソースを解放します。

**コード例**
```python
from spire.doc import *
from spire.doc.common import *
import os

# フォルダのパスを定義する
folderPath = "Documents"

# Documentのインスタンスを作成する
doc = Document()

# フォルダ内の文書を走査する
for root, dirs, files in os.walk(folderPath):
    for file in files:
        # ファイルがWord文書かどうかを判断する
        if file.endswith(('.doc', '.docx')):
            # Word文書を読み込む
            doc.LoadFromFile(os.path.join(root, file))
            # 文字数の統計を更新する（文字数の統計が最新のものになるようにする）
            doc.UpdateWordCount()
            # ドキュメントの組み込みプロパティを取得する
            builtinProperties = doc.BuiltinDocumentProperties
            # ページ数を取得する
            pageCount = builtinProperties.PageCount
            # 段落数を取得する
            paragraphCount = builtinProperties.ParagraphCount
            # 文字数を取得する
            charCount = builtinProperties.CharCount
            # スペースを含む文字数を取得する
            charCountWithSpaces = builtinProperties.CharCountWithSpace
            # 単語数を取得する
            wordCount = builtinProperties.WordCount
            # 結果を出力する
            print(f"文書——{file}のページ数は：", pageCount)
            print(f"文書——{file}の段落数は：", paragraphCount)
            print(f"文書——{file}の文字数は：", charCount)
            print(f"文書——{file}のスペースを含む文字数は：", charCountWithSpaces)
            print(f"文書——{file}の単語数は：", wordCount)
doc.Close()
```

**出力結果**
![Word文書のページ数、単語数、文字数、段落数、スペースを含む文字数を取得するg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/8e72ad97-9501-98bd-b564-df5e415ec80a.png)

## Pythonを使用してWord文書のセクション数を計算する
セクションの数は組み込みの属性には含まれていませんが、**Document.Sections.Count** プロパティを使用してセクションの数を直接計算することができます。以下は手順です：
1. 必要なモジュールをインポートします：`spire.doc`と`spire.doc.common`はWord文書を処理するために使用し、`os`はファイルおよびディレクトリ操作のために使用します。
2. 走査するフォルダのパスを定義します。
3. `Document` クラスのインスタンス `doc` を作成し、Word文書をロードおよび操作するために使用します。
4. `os.walk()` を使用して指定されたフォルダおよびサブフォルダ内のすべてのファイルを走査します。
5. 走査された各ファイルに対して：
   - ファイルの拡張子が`.doc`または`.docx`であるかをチェックし、それがWord文書であることを示します。
   - `os.path.join()`を使用してファイルの完全なパスを結合し、`doc.LoadFromFile()` メソッドを使用してそのWord文書をロードします。
   - ドキュメントオブジェクト`doc`からセクションの数を取得し、変数`sectionCount`に格納します。
   - ドキュメント名とセクションの数を一緒に出力し、文書の内部構造情報を表示します。
6. すべての一致するWord文書の走査と処理が完了した後、`doc.Close()` メソッドを呼び出して文書を閉じ、リソースを解放します。

**コード例**
```python
from spire.doc import *
from spire.doc.common import *
import os

# フォルダのパスを定義する
folderPath = "Documents"

# Documentのインスタンスを作成する
doc = Document()

# フォルダ内のファイルを走査する
for root, dirs, files in os.walk(folderPath):
    for file in files:
        # ファイルがWord文書かどうかを判断する
        if file.endswith(('.doc', '.docx')):
            # Word文書を読み込む
            doc.LoadFromFile(os.path.join(root, file))
            # ドキュメント内のセクション数を取得する
            sectionCount = doc.Sections.Count
            # 結果を出力する
            print(f"文書——{file}のセクション数は：", sectionCount)
doc.Close()
```

**出力結果**
![Pythonを使用してWord文書のセクション数を計算する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/6b22391c-3066-99cd-848a-17fb594062fd.png)

この記事では、Pythonを使用してWord文書のページ数、単語数、文字数、段落数、セクション数、およびスペースを含む文字数を取得する方法について説明しています。
さらに[Spire.Doc for Pythonのチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.Doc-for-Python/Program-Guide/Spire.Doc-for-Python-Program-Guide-Content.html)をご覧ください。
**[無料ライセンスの申請](https://www.e-iceblue.com/TemLicense.html)**