GroupDocs.Viewer for Java を使用した docx からテキストを抽出
プログラムで docx からテキストを抽出 したいですか?ページ番号を取得したり、すべてのテキスト行をキャプチャしたり、検索可能なインデックスを構築したりする必要がある場合、手作業で行うと時間がかかり、エラーが発生しやすくなります。GroupDocs.Viewer for Java は、ドキュメントの構造を読み取り、クリーンなテキストデータを返す高性能 API を提供することで、プロセスをシンプルにします。
このチュートリアルでは、GroupDocs.Viewer の設定方法、ページメタデータの抽出方法、DOCX ファイルから各テキスト行を取得する方法を学びます。最後まで読むと、任意の Java ベースのバックエンドに統合できるすぐに使えるソリューションが手に入ります。

クイック回答
- “extract text from docx” とは何ですか? プログラムで DOCX ファイルを読み取り、プレーンテキストの内容を行単位で取得することを指します。
- どのライブラリがこれを処理しますか? GroupDocs.Viewer for Java は
Viewerクラスと関連 API を提供します。 - ライセンスは必要ですか? 無料トライアルで評価は可能ですが、本番環境では有料ライセンスが必要です。
- 必要な Java バージョンは何ですか? Maven と互換性のある JDK 8 以上であればどれでも構いません。
- 大量バッチの処理は可能ですか? はい、
Viewerインスタンスを再利用し、ページをストリームで処理することで可能です。
“extract text from docx” とは何ですか?
DOCX ファイルからテキストを抽出するとは、ドキュメント内部の XML 構造を読み取り、書式なしで人が読めるテキストを返すことです。これはインデックス作成、検索、または下流の分析パイプラインへのコンテンツ供給に役立ちます。
なぜ GroupDocs.Viewer for Java を使用するのか?
- 正確性: 複雑なレイアウト、テーブル、マルチカラム文書を処理します。
- 速度: 大きなファイルでも高速に動作する最適化されたレンダリングエンジンです。
- クロスフォーマット対応: 同じ API が PDF、PPTX、XLSX などでも使用でき、コードを再利用できます。
- 外部依存なし: 純粋な Java で、ネイティブライブラリは不要です。
前提条件
- Java Development Kit (JDK) 8 以上。
- 依存関係管理のために Maven がインストールされていること。
- 分析したい DOCX ファイル(既知のフォルダーに配置してください)。
GroupDocs.Viewer for Java の設定
pom.xml に GroupDocs リポジトリと依存関係を追加します:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/viewer/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-viewer</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
ライセンス取得手順
- 無料トライアル: GroupDocs ダウンロードページ から無料トライアルをダウンロードします。
- 一時ライセンス: 一時ライセンスページ から拡張テスト用の一時ライセンスを取得します。
- 購入: フルアクセスとサポートが必要な場合は、GroupDocs 購入ポータル でライセンス購入を検討してください。
基本的な初期化
- 必要なクラスをインポートします。
- DOCX ファイルを指す
Viewerインスタンスを作成します。 - ページレベルの情報(メタデータとテキスト行)を取得するために
ViewInfoOptions.forPngView(true)を使用します。
docx からテキストを抽出する方法 – ステップバイステップガイド
1. ページメタデータの抽出
ページ番号などのページメタデータは、ナビゲーション構造を構築したり特定のセクションを参照したりする際に不可欠です。
try (Viewer viewer = new Viewer("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX")) {
ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPngView(true);
ViewInfo viewInfo = viewer.getViewInfo(viewInfoOptions);
for (Page page : viewInfo.getPages()) {
int pageNumber = page.getNumber();
System.out.println("Page: " + pageNumber); // Outputs the page number
}
}
ViewInfoOptions.forPngView(true): PNG レンダリングを準備する際にページ情報を収集するよう API に指示します。viewInfo.getPages(): 各Pageオブジェクトがページ番号やその他のメタデータを含むコレクションを返します。
プロのコツ: Viewer を try‑with‑resources ブロック内で破棄し、ネイティブリソースを自動的に解放しましょう。
2. ページからテキスト行を抽出
各ページを特定できるようになったので、実際のテキスト行を取得しましょう。
try (Viewer viewer = new Viewer("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX")) {
ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPngView(true);
ViewInfo viewInfo = viewer.getViewInfo(viewInfoOptions);
for (Page page : viewInfo.getPages()) {
System.out.println("Page: " + page.getNumber());
System.out.println("Text lines:");
for (Line line : page.getLines()) {
String lineText = line.getValue();
System.out.print(lineText + "\t");
}
}
}
page.getLines(): ページ上に表示される単一のテキスト行を表すLineオブジェクトのリストを返します。- 内部ループは各行をタブで区切って出力し、可読性を高めます。
よくある問題と解決策
| 症状 | 考えられる原因 | 解決策 |
|---|---|---|
null のページ番号 | ドキュメントが正しく読み込まれていない | ファイルパスを確認し、ファイルが存在することを確認してください。 |
| テキスト行が返されない | サポートされていないファイル形式 | DOCX のバージョンがサポートされているか確認し、必要に応じて GroupDocs をアップグレードしてください。 |
大きなファイルで OutOfMemoryError が発生 | Viewer がメモリ内に多数のページを保持している | ページを小さなバッチで処理するか、同じ Viewer インスタンスを再利用してください。 |
実用的な活用例
- 検索エンジンのインデックス作成: 抽出したテキストとともにページ番号を保存し、正確なスニペット取得を可能にします。
- 法務文書レビュー: 自動条項検出やマスク処理ワークフローのためにすべての行を取得します。
- コンテンツ移行: 既存の DOCX コンテンツを構造を保持したまま CMS に移行します。
- レポートダッシュボード: 見出しや箇条書きを抽出して主要セクションを要約します。
パフォーマンスに関する考慮点
- 適切に破棄: 常に
Viewerを閉じます(try‑with‑resources を使用)。 - バッチ処理: 多数のドキュメントを処理する際は、スレッドごとに単一の
Viewerインスタンスを再利用してオーバーヘッドを削減します。 - レンダリングオプション: テキストだけが必要な場合は、
ViewInfoOptions.forTextView()(ここでは示していません)を使用して PNG レンダリングをスキップし、処理時間を短縮できます。
結論
これで、GroupDocs.Viewer for Java を使用して docx からテキストを抽出 し、ページ番号を取得し、各テキスト行を反復処理する方法が分かりました。これらの構成要素を組み合わせることで、高速で信頼性が高く、保守が容易な強力なドキュメント処理パイプラインを構築できます。
次のステップ
- 同じ API を使用して他のフォーマット(PDF、PPTX)を試してみましょう。
- 抽出したテキストを Elasticsearch のような全文検索エンジンと組み合わせます。
- ビジュアルプレビューも必要な場合は、レンダリング画像のスタイリングオプションを検討します。
よくある質問
Q: GroupDocs.Viewer がサポートするファイル形式は何ですか?
A: DOCX、PDF、XLSX、PPTX などを含む幅広い形式をサポートしています。
Q: 行を抽出する際に出力形式をカスタマイズできますか?
A: はい、ViewInfoOptions を設定することで可能です(例: 純粋なテキスト用に forTextView())。
Q: 処理できるページ数に制限はありますか?
A: 明確な上限はありませんが、非常に大きなドキュメントはメモリ効率を保つためにバッチ処理が必要になる場合があります。
Q: GroupDocs.Viewer で例外を処理するにはどうすればよいですか?
A: Viewer のコードを try‑catch ブロックで囲み、必要に応じて ViewerException または汎用の IOException を処理します。
Q: このツールは他の Java フレームワークと統合できますか?
A: もちろんです!Spring、Hibernate、Jakarta EE などとシームレスに連携します。
リソース
最終更新日: 2026-04-13
テスト環境: GroupDocs.Viewer for Java 25.2
作者: GroupDocs