Extract Text from MS Word Documents in C#

Microsoft Word文書は、テキストコンテンツを作成および共有するための定番です。これらの文書と対話するC#アプリケーションを開発している場合、文書からテキストを抽出する必要が生じることがあります。これは、テキスト分析や文書の特定のセクションを抽出して新しい文書にまとめるためなどの目的で行われることがあります。このブログ投稿では、C#でWord文書からテキストを抽出する方法について詳しく説明します。

目次

テキスト抽出のためのC#ライブラリ

Aspose.Words for .NETは、Word文書を操作するために設計された強力で使いやすいライブラリです。テキスト抽出、文書作成、操作、変換など、包括的な機能セットを提供します。Aspose.Words for .NETを使用することで、開発者はWord文書のさまざまな側面を効率的に管理でき、開発ニーズにとって貴重なツールとなります。

始めるには、ライブラリをダウンロードするか、パッケージマネージャーコンソールで次のコマンドを使用してNuGetから直接インストールします。

PM> Install-Package Aspose.Words

Word文書におけるテキスト抽出の理解

MS Word文書は、段落、表、画像などのさまざまな要素から構成されています。そのため、テキスト抽出の要件は特定の使用ケースに基づいて異なる場合があります。段落、ブックマーク、コメントなどの間でテキストを抽出する必要があるかもしれません。

Word文書内の各要素はノードとして表されます。したがって、文書を効果的に処理するには、これらのノードを操作する必要があります。さまざまなシナリオでWord文書からテキストを抽出する方法を見ていきましょう。

Word文書からテキストを抽出するためのステップバイステップガイド

このセクションでは、Word文書用のC#テキスト抽出器を実装します。テキスト抽出のワークフローは、次のステップを含みます。

  1. 抽出プロセスに含めるノードを定義します。
  2. 指定されたノード間のコンテンツを抽出します(開始ノードと終了ノードを含むか除外するか)。
  3. 抽出されたノードを使用して、抽出されたコンテンツを含む新しいWord文書を作成します。

ノードとその他のパラメータを受け入れてテキスト抽出を行うExtractContentという名前のメソッドを作成しましょう。このメソッドは、以下のパラメータに基づいて文書を解析し、ノードをクローンします。

  • StartNodeおよびEndNode: これらはコンテンツ抽出の開始点と終了点を定義します。ブロックレベル(例: Paragraph, Table)またはインラインレベルノード(例: Run, FieldStart, BookmarkStart)である可能性があります。
    • フィールドの場合は、対応するFieldStartオブジェクトを渡します。
    • ブックマークの場合は、BookmarkStartおよびBookmarkEndノードを使用します。
    • コメントの場合は、CommentRangeStartおよびCommentRangeEndノードを使用します。
  • IsInclusive: このパラメータは、マーカーが抽出に含まれるかどうかを決定します。falseに設定され、同じまたは連続するノードが提供されると、空のリストが返されます。

指定されたノード間のコンテンツを抽出するためのExtractContentメソッドの完全な実装は次のとおりです:

さらに、テキスト抽出操作を促進するために、ExtractContentメソッドによって必要とされるいくつかのヘルパーメソッドがあります:

メソッドが準備できたので、Word文書からテキストを抽出する準備が整いました。

Word文書の段落間のテキスト抽出

Word DOCX文書内の2つの段落の間のコンテンツを抽出するには、次の手順に従います。

  1. Documentクラスを使用してWord文書をロードします。
  2. **Document.FirstSection.Body.GetChild(NodeType.PARAGRAPH, int, boolean)**メソッドを使用して、開始段落と終了段落への参照を取得します。
  3. **ExtractContent(startPara, endPara, True)**メソッドを呼び出して、ノードをオブジェクトに抽出します。
  4. **GenerateDocument(Document, extractedNodes)**ヘルパーメソッドを使用して、抽出されたコンテンツを含む文書を作成します。
  5. **Document.Save(string)**メソッドを使用して新しい文書を保存します。

以下は、Word文書内の7番目と11番目の段落の間のテキストを抽出する方法を示すコードサンプルです:

異なるタイプのノード間のテキスト抽出

異なるタイプのノード間のコンテンツも抽出できます。たとえば、段落と表の間のコンテンツを抽出し、新しいWord文書に保存してみましょう。手順は次のとおりです。

  1. Documentクラスを使用してWord文書をロードします。
  2. **Document.FirstSection.Body.GetChild(NodeType, int, boolean)**メソッドを使用して、開始ノードと終了ノードへの参照を取得します。
  3. **ExtractContent(startPara, endPara, True)**を呼び出して、ノードをオブジェクトに抽出します。
  4. **GenerateDocument(Document, extractedNodes)**ヘルパーメソッドを使用して、抽出されたコンテンツを含む文書を作成します。
  5. **Document.Save(string)**を使用して新しい文書を保存します。

以下は、C#で段落と表の間のテキストを抽出するためのコードサンプルです:

スタイルに基づくテキスト抽出

スタイルに基づいて段落間のコンテンツを抽出するには、次の手順に従います。このデモでは、Word文書内の最初の「Heading 1」と最初の「Heading 3」の間のコンテンツを抽出します。

  1. Documentクラスを使用してWord文書をロードします。
  2. **ParagraphsByStyleName(Document, “Heading 1”)**ヘルパーメソッドを使用して段落をオブジェクトに抽出します。
  3. **ParagraphsByStyleName(Document, “Heading 3”)**を使用して別のオブジェクトに段落を抽出します。
  4. 最初の段落配列の要素と最初の要素を使用して**ExtractContent(startPara, endPara, True)**を呼び出します。
  5. **GenerateDocument(Document, extractedNodes)**ヘルパーメソッドを使用して、抽出されたコンテンツを含む文書を作成します。
  6. **Document.Save(string)**を使用して新しい文書を保存します。

以下は、スタイルに基づいて段落間のコンテンツを抽出するためのコードサンプルです:

テキスト抽出に関する詳細情報

Word文書からテキストを抽出するための追加シナリオについては、このドキュメント記事を参照してください。

無料のWordテキスト抽出ライブラリを取得する

評価制限なしでテキストを抽出するための無料の一時ライセンスを取得できます。

結論

Aspose.Words for .NETは、C#でWord文書からテキストを抽出するプロセスを簡素化する多用途なライブラリです。その広範な機能と使いやすいAPIにより、Word文書を効率的に操作し、さまざまなテキスト抽出シナリオを自動化できます。Word文書の処理が必要なアプリケーションを開発している場合でも、単にテキストを抽出する場合でも、Aspose.Words for .NETは開発者にとって不可欠なツールです。

Aspose.Words for .NETのその他の機能については、ドキュメントを確認してください。質問がある場合は、フォーラムを通じてお気軽にお問い合わせください。

関連情報

ヒント: Aspose PowerPoint to Wordコンバータをチェックすることをお勧めします。これは、プレゼンテーションをWord文書に変換する人気のプロセスを示しています。