Javaを使用してWord文書からテキストを抽出する

場合によっては、さまざまな目的でWord文書からテキストを抽出する必要があります。 Java開発者は、プログラムでDOCまたはDOCXファイルからテキストを簡単に抽出できます。この記事では、Javaを使用してWord文書からテキストを抽出する方法を学習します。

この記事では、次のトピックについて説明/取り上げています。

Word文書からテキストを抽出するJavaAPI

DOCまたはDOCXファイルからテキストを抽出するには、GroupDocs.Parser for JavaAPIを使用します。 WordPDFExcelPowerPointの一般的なファイル形式からテキスト、メタデータ、画像を抽出できます。また、サポートされている形式のファイルからの生の、フォーマットされた、構造化されたテキストの抽出もサポートしています。

APIのJARをダウンロードするか、MavenベースのJavaアプリケーションに次のpom.xml構成を追加して、以下のコード例を試すことができます。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>21.2</version> 
</dependency>

Javaを使用してWord文書からテキストを抽出する

以下に説明する簡単な手順に従って、任意のWord文書を解析し、テキストを抽出できます。

  • まず、Parserクラスを使用してDOCXファイルをロードします。
  • 次に、Parser.getText()メソッドを呼び出して、ロードされたドキュメントからテキストを抽出します。
  • TextReaderクラスオブジェクトのParser.getText()メソッドの結果を取得します。
  • 最後に、 TextReader.readToEnd()メソッドを呼び出して、現在の位置からテキストリーダーの最後までのすべての文字を読み取り、それらを1つの文字列として返します。

次のコードサンプルは、Javaを使用してDOCXファイルからテキストを抽出する方法を示しています。

// パーサークラスのインスタンスを作成します
Parser parser = new Parser("C:\\Files\\sample.docx");

// 生のテキストをリーダーに抽出します
try (TextReader reader = parser.getText()) {
    // ドキュメントからテキストを印刷する
    // テキスト抽出がサポートされていない場合、リーダーはnullです
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Javaを使用してWord文書からテキストを抽出する

Javaを使用してWord文書からテキストを抽出する

Javaを使用してWord文書の特定のページからテキストを抽出する

以下に説明する簡単な手順に従って、Word文書を解析し、特定のページからテキストを抽出できます。

  • まず、Parserクラスを使用してDOCXファイルをロードします。
  • 次に、Parser.getFeatures().isText()を使用して、ドキュメントがテキスト抽出機能をサポートしているかどうかを確認します。 サポートされている機能の詳細をご覧ください。
  • 次に、Parser.getDocumentInfo()メソッドを呼び出して、ドキュメントに関する一般的な情報を取得します。ファイルタイプ、ページ数、サイズなど。
  • IDocumentInfoインターフェイスオブジェクトのParser.getDocumentInfo()メソッドの結果を取得します。
  • 次に、IDocumentInfo.getPageCount()がゼロでないかどうかを確認します。このメソッドは、ドキュメントページの総数を返します。
  • すべてのページを反復処理し、各ページインデックスに対してParser.getText()メソッドを呼び出してテキストを抽出し、TextReaderクラスオブジェクトで結果を取得します。
  • 最後に、TextReader.readToEnd()メソッドを呼び出して抽出されたテキストを読み取り、結果を表示します。

次のコードサンプルは、Javaを使用してページからテキストを1つずつ抽出する方法を示しています。

// パーサークラスのインスタンスを作成します
Parser parser = new Parser("C:\\Files\\sample.docx");

// ドキュメントがテキスト抽出をサポートしているかどうかを確認します
if (!parser.getFeatures().isText()) {
    System.out.println("The document doesn't support text extraction.");
    return;
}

// ドキュメント情報を取得する
IDocumentInfo documentInfo = parser.getDocumentInfo();

// ドキュメントにページがあるかどうかを確認します
if (documentInfo.getPageCount() == 0) {
    System.out.println("The document has zero pages.");
    return;
}

// ページを繰り返します
for (int p = 0; p < documentInfo.getPageCount(); p++) {
    // ページ番号を印刷する
    System.out.println(String.format("Page number: %d/%d", p + 1, documentInfo.getPageCount()));
    // リーダーにテキストを抽出します
    try (TextReader reader = parser.getText(p)) {
        // ドキュメントからテキストを印刷する
        // 以前にテキスト抽出機能のサポートを確認したため、nullチェックは無視します
        System.out.println(reader.readToEnd());
    }
}
Javaを使用してドキュメントの特定のページからテキストを抽出する

Javaを使用してドキュメントの特定のページからテキストを抽出する

Javaを使用してWord文書からハイライトを取得

ハイライトはテキストの一部であり、通常、検索機能で見つかったテキストのコンテキストを説明するために使用されます。以下に説明する簡単な手順に従って、ドキュメントからハイライトを抽出できます。

  • まず、Parserクラスを使用してDOCXファイルをロードします。
  • HighlightOptionsクラスオブジェクトのインスタンスを作成し、最大長を入力パラメーターとしてコンストラクターに渡して、固定長のハイライトを抽出します。
  • 次に、開始位置とHighlightOptionsクラスオブジェクトを指定してParser.getHighlight()メソッドを呼び出し、HighlightItemクラスのオブジェクトとしてドキュメントからハイライトを抽出します。
  • 最後に、Highlight.getPosition()メソッドとHighlightItem.getText()メソッドを呼び出して、ハイライトの位置とテキストを取得します。

次のコードサンプルは、Javaを使用してドキュメントからハイライトを抽出する方法を示しています。

// パーサークラスのインスタンスを作成します
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // ハイライトを抽出します。
    HighlightItem hl = parser.getHighlight(0, true, new HighlightOptions(8));
    // ハイライト抽出がサポートされているかどうかを確認します
    if (hl == null) {
        System.out.println("Highlight extraction isn't supported");
        return;
    }
    // 抽出されたハイライトを印刷する
    System.out.println(String.format("At %d: %s", hl.getPosition(), hl.getText()));
}
At 0: Overview

Javaを使用してDOCXからフォーマットされたテキストを抽出する

以下に説明する簡単な手順に従うことで、スタイルの書式設定を失うことなく、Word文書を解析してテキストを抽出できます。

  • まず、Parserクラスを使用してDOCXファイルをロードします。
  • FormattedTextOptionsを定義し、FormattedTextModeをHTMLに設定します。これにより、ドキュメントからHTML形式のテキストを抽出できます。
  • 次に、Parser.getFormattedText()メソッドを呼び出して、フォーマットされたテキストを抽出します。
  • TextReaderクラスオブジェクトのParser.getText()メソッドの結果を取得します。
  • 最後に、TextReader.readToEnd()メソッドを呼び出して、すべてのテキストを読み取ります。

次のコードサンプルは、Javaを使用してDOCXファイルからフォーマットされたテキストを抽出する方法を示しています。

// パーサークラスのインスタンスを作成します
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // フォーマットされたテキストをリーダーに抽出します
    try (TextReader reader = parser.getFormattedText(new FormattedTextOptions(FormattedTextMode.Html))) {
        // ドキュメントからフォーマットされたテキストを印刷する
        // フォーマットされたテキスト抽出がサポートされていない場合、リーダーはnullです
        System.out.println(reader == null ? "Formatted text extraction isn't suppported" : reader.readToEnd());
    }
}
Javaを使用してDOCXからフォーマットされたテキストを抽出する

Javaを使用してDOCXからフォーマットされたテキストを抽出する

Javaを使用して目次でテキストを抽出する

以下に説明する簡単な手順に従って、目次によってドキュメントからテキストを抽出できます。

  • まず、Parserクラスを使用してDOCXファイルをロードします。
  • 次に、Parser.getToc()メソッドを呼び出して、TocItemクラスオブジェクトのコレクションとして目次を抽出します。 TocItemは、目次抽出機能で使用されるアイテムを表します。
  • 次に、コレクションがnullでないかどうかを確認します。
  • 次に、TocItemのコレクションを繰り返し処理し、TocItem.extractText()メソッドを呼び出して、TocItemオブジェクトが参照するドキュメントからテキストを抽出します。
  • TextReaderクラスオブジェクトで結果を取得します。
  • 最後に、TextReader.readToEnd()メソッドを呼び出して、すべてのテキストを読み取ります。

次のコードサンプルは、Javaを使用してWord文書から目次でテキストを抽出する方法を示しています。

// パーサークラスのインスタンスを作成します
try (Parser parser = new Parser("C:\\Files\\sampleTOC.docx")) {
    // 目次を取得する
    Iterable<TocItem> tocItems = parser.getToc();
    // toc抽出がサポートされているかどうかを確認します
    if (tocItems == null) {
        System.out.println("Table of contents extraction isn't supported");
    }
    else
    {
        // アイテムを繰り返します
        for (TocItem tocItem : tocItems) {
            // 章のテキストを印刷する
            try (TextReader reader = tocItem.extractText()) {
                System.out.println("----");
                System.out.println(reader.readToEnd());
            }
        }
    }
}
Javaを使用して目次でテキストを抽出する

Javaを使用して目次でテキストを抽出する

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、Javaを使用してWord文書からテキストを抽出する方法を学びました。さらに、プログラムでDOCXファイルからフォーマットされたテキストを抽出する方法を見てきました。この記事では、目次でテキストを抽出し、ドキュメントからハイライトを抽出する方法についても説明しました。さらに、ドキュメントを使用して、GroupDocs.Parser forJavaAPIの詳細を学ぶことができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目