C#でMS Word文書からテキストを抽出する

Microsoft Word文書は、テキストコンテンツを作成および共有するための基本的なツールです。Word文書と対話するC#アプリケーションを開発している場合、C#を使用してWord文書からテキストを抽出する必要があるかもしれません。その際、フォーマットが保持されることを確認する必要があります。テキストを分析したり、特定のセクションを抽出したり、コンテンツを単一の文書にまとめたりする場合でも、このガイドでは、Word文書のテキスト抽出に最適なC#ライブラリを使用して効率的にテキストを抽出する方法を示します。

目次

Word文書からテキストを抽出するためのC#ライブラリ

Aspose.Words for .NETは、Word文書を操作するために設計された機能豊富で使いやすいライブラリです。.NET Word文書のテキスト抽出、文書の作成、操作、変換など、包括的な機能セットを提供します。Aspose.Words for .NETは、効率的なC# Wordテキスト抽出を求める開発者にとって貴重なツールです。

DLLをダウンロードするか、パッケージマネージャーコンソールを使用してNuGetからライブラリを直接インストールできます:

PM> Install-Package Aspose.Words

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

MS Word文書は、段落、表、画像など、さまざまな要素で構成されています。したがって、テキスト抽出の要件はシナリオによって異なる場合があります。たとえば、C#でスキャンしたWord文書からテキストを抽出する必要があるか、C# .NETを使用してWordファイルからテキストを抽出する必要があるかもしれません。Word文書内の各要素はノードとして表され、抽出プロセス中に対話します。C#でのテキスト抽出中にWordフォーマットを効果的に処理する方法を探ってみましょう。

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

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

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

ExtractContentという名前のメソッドを作成し、ノードとテキスト抽出のための他のパラメーターを受け取ります。このメソッドは文書を解析し、ノードをクローンします。メソッドに渡すパラメーターは次のとおりです:

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

ExtractContentメソッドの完全な実装は、C#で保護されたWord文書からテキストを抽出する方法を正確に示しています:

さらに、テキスト抽出操作を容易にするために、ExtractContentメソッドによっていくつかのヘルパーメソッドが必要です:

これで、これらのメソッドを利用してC#を使用して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)**メソッドを使用して、返された文書を保存します。

以下は、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文書のテキスト抽出の.NET APIの他のシナリオを探求してください。

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

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

結論

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

ドキュメンテーションを通じて、Aspose.Words for .NETの追加機能を探索してください。質問がある場合は、フォーラムを通じてお気軽にお問い合わせください。

関連情報

ヒント: AsposeのPowerPointからWordコンバーターもチェックしてみてください。これは、人気のあるプレゼンテーションからWord文書への変換プロセスを示しています。