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

Microsoft Word文書は、テキストコンテンツの作成と共有に広く使用されています。C#アプリケーションでWord文書を扱う場合、C#を使用してWord文書からテキストを抽出する必要があるかもしれません。また、フォーマットを保持しつつテキストを抽出したいと思うかもしれません。たとえば、テキストを分析したり、文書の特定のセクションを抽出したり、それらを単一の文書に統合したりすることがあります。このブログでは、Word文書のテキスト抽出のための最良のC#ライブラリを使用して、C#でWord文書からテキストを抽出する方法を探ります。

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

Aspose.Words for .NETは、Word文書を扱うための多機能で使いやすいライブラリです。.NET Word文書のテキスト抽出、文書の作成、操作、変換を含む幅広い機能を提供しています。Aspose.Words for .NETを使用すると、Word文書のさまざまな側面を扱うことができ、効率的なC# Wordテキスト抽出を求める開発者にとって貴重なツールとなります。

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

PM> Install-Package Aspose.Words

Word文書からのテキスト抽出

MS Word文書は、段落、表、画像などのさまざまな要素で構成されています。そのため、テキスト抽出の要件はシナリオによって異なる場合があります。たとえば、スキャンしたWord文書からテキストを抽出するC#や、C# .NETでWordファイルからテキストを抽出する必要があるかもしれません。Word文書内の各タイプの要素はノードとして表されます。したがって、文書を処理するためには、ノードとやり取りする必要があります。さっそく始めて、テキストをC#でのテキスト抽出時にWordフォーマットを処理する方法を確認しましょう。

C#でWord DOCからテキストを抽出する

このセクションでは、Word文書のためのC#テキスト抽出器を実装し、テキスト抽出のワークフローは以下のようになります。

  • 最初に、テキスト抽出プロセスに含めるノードを定義します。
  • 次に、指定されたノード間の内容を抽出します(開始ノードや終了ノードを含むか除くか)。
  • 最後に、抽出されたノードのクローンを使用します。たとえば、抽出された内容からなる新しいWord文書を作成します。

それでは、ノードと他のパラメータを渡してテキスト抽出を行うメソッド、ExtractContentを作成しましょう。このメソッドは文書を解析してノードをクローンします。このメソッドに渡すパラメータは次のとおりです。

  1. StartNodeおよびEndNodeは、それぞれのコンテンツ抽出の開始および終了ポイントです。これらは両方ともブロックレベル(段落)またはインラインレベル(例:RunFieldStartBookmarkStartなど)のノードであることができます。
    1. フィールドを渡す場合、対応するFieldStartオブジェクトを渡す必要があります。
    2. ブックマークを渡す場合、BookmarkStartおよびBookmarkEndノードを渡す必要があります。
    3. コメントを渡す場合、CommentRangeStartおよびCommentRangeEndノードを使用します。
  2. IsInclusiveは、マーカーが抽出に含まれるかどうかを定義します。このオプションがfalseに設定され、同じノードや連続したノードが渡された場合、空のリストが返されます。

以下は、渡されたノード間のコンテンツを正確に抽出するExtractContentメソッドの完全な実装です。これは、保護されたWord文書からテキストをC#で抽出します。

ExtractContentメソッドがテキスト抽出操作を完了させるために必要とするいくつかのヘルパーメソッドは以下のとおりです。

これで、これらのメソッドを利用してC#を使用してWord文書からテキストを抽出する準備が整いました。

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

Word DOCX文書内の2つの段落間の内容を抽出する方法を見てみましょう。以下の手順でこの操作をC#で実行します。

  • 最初に、Documentクラスを使用してWord文書を読み込みます。
  • **Document.FirstSection.Body.GetChild(NodeType.PARAGRAPH, int, boolean)**メソッドを使用して、開始段落と終了段落の参照を2つのオブジェクトに取得します。
  • **ExtractContent(startPara, endPara, true)**メソッドを呼び出して、ノードをオブジェクトに抽出します。
  • **GenerateDocument(Document, extractedNodes)**ヘルパーメソッドを呼び出して、抽出された内容からなる文書を作成します。
  • 最後に、**Document.Save(string)**メソッドを使用して返された文書を保存します。

以下のコードサンプルは、C#でWord文書内の7番目と11番目の段落間のテキストを効率的に抽出する方法を示しています。

異なる種類のノード間でのテキスト抽出

異なる種類のノード間でもコンテンツを抽出できます。デモとして、段落と表の間のコンテンツを抽出し、新しいWord文書に保存します。以下の手順でこの操作を実行します。

  • Documentクラスを使用してWord文書を読み込みます。
  • **Document.FirstSection.Body.GetChild(NodeType, int, boolean)**メソッドを使用して、開始ノードと終了ノードへの参照を取得します。
  • **ExtractContent(startPara, endPara, true)**メソッドを呼び出して、ノードをオブジェクトに抽出します。
  • **GenerateDocument(Document, extractedNodes)**ヘルパーメソッドを呼び出して、抽出された内容からなる文書を作成します。
  • **Document.Save(string)**メソッドを使用して返された文書を保存します。

以下のコードサンプルは、C#で段落と表の間のテキストを抽出する方法を示しています。

スタイルに基づいた段落間のテキストを抽出する

段落間のスタイルに基づいた内容を抽出する方法を見てみましょう。デモとして、Word文書内で最初の「見出し1」と最初の「見出し3」の間のコンテンツを抽出します。以下の手順でこれをC#で実現します。

  • 最初に、Documentクラスを使用してWord文書を読み込みます。
  • 次に、ヘルパーメソッド**ParagraphsByStyleName(Document, “Heading 1”)**を使用して段落をオブジェクトに抽出します。
  • 別のオブジェクトに**ParagraphsByStyleName(Document, “Heading 3”)**ヘルパーメソッドを使用して段落を抽出します。
  • **ExtractContent(startPara, endPara, true)**メソッドを呼び出し、両方の段落配列内の最初の要素を最初と第二のパラメータとして渡します。
  • **GenerateDocument(Document, extractedNodes)**ヘルパーメソッドを呼び出して、抽出された内容からなる文書を作成します。
  • 最後に、**Document.Save(string)**メソッドを使用して返された文書を保存します。

以下のコードサンプルは、スタイルに基づいた段落間のコンテンツを抽出する方法を示しています。

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

他のシナリオを探索したい場合、.NET APIを使用したWord文書のテキスト抽出については、このドキュメンテーション記事をご覧ください。

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

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

結論

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

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

関連情報

ヒント: AsposeのPowerPoint to Wordコンバーターをチェックすると、プレゼンテーションをWord文書に変換するプロセスが示されます。