IronWordでDOCXからテキストを抽出する

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWordのExtractText()メソッドは、DOCXファイルからテキストを抽出でき、ドキュメント全体、特定の段落、または表のセルにアクセスすることで、C#でのドキュメント処理とデータ分析タスクにシンプルなAPIを提供します。

クイックスタート: DOCX からテキストを抽出

  1. IronWord をNuGetパッケージマネージャでインストール

    PM > Install-Package IronWord
  2. このコード スニペットをコピーして実行します。

    using IronWord;
    
    // Quick example: Extract all text from DOCX
    WordDocument doc = new WordDocument("sample.docx");
    string allText = doc.ExtractText();
    Console.WriteLine(allText);
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronWord を使い始めましょう無料トライアル

    arrow pointer

DOCXドキュメントからすべてのテキストを抽出するにはどうすればよいですか?

ExtractText()メソッドは、Wordドキュメント全体からテキストコンテンツを取得します。 この例では、新しいドキュメントを作成し、テキストを追加し、ExtractText()を使用してテキストを抽出し、コンソールに表示します。 これは、主要なテキスト抽出ワークフローを示しています。

抽出されたテキストは、ドキュメントの論理的な読み順を維持します。 このメソッドは、ヘッダー、段落、リスト、その他のテキスト要素を順番に処理するため、コンテンツ分析や検索インデックス作成アプリケーションに最適です。

:path=/static-assets/word/content-code-examples/how-to/extract-text-simple.cs
using System;
using IronWord;

// Instantiate a new DOCX file
WordDocument doc = new WordDocument();

// Add text
doc.AddText("Hello, World!");

// Print extracted text from the document to the console
Console.WriteLine(doc.ExtractText());
$vbLabelText   $csharpLabel

抽出されたテキストはどのように見えますか?

書式設定リボンが表示された

コンソールではどのような出力が期待できますか?

Console.WriteLineが抽出されたテキストを印刷し、デバッグコンソールが'Hello, World!'出力を表示するコード例

特定の段落からテキストを抽出するにはどうすればよいですか?

さらに細かく制御するために、ドキュメント全体ではなく特定の段落からテキストを抽出できます。 Paragraphsコレクションにアクセスすることで、必要な段落をターゲットにして処理することができます。 このようなきめ細かなアプローチは、構造化されたコンテンツを持つ文書を扱う場合や、特定のセクションを個別に処理する必要がある場合に便利です。

この例では、最初と最後の段落からテキストを抽出し、それらを組み合わせて.txtファイルに保存します。この手法は、ドキュメントの要約ツールで、文書の導入部と結論を抽出したい場合によく使用されます。 機能をアンロックするためにライセンスキーを使用するのと同様に、Paragraphsコレクションは特定のドキュメント要素にアクセスできます。

:path=/static-assets/word/content-code-examples/how-to/extract-text-paragraphs.cs
using System.IO;
using System.Linq;
using IronWord;

// Load an existing DOCX file
WordDocument doc = new WordDocument("document.docx");

// Extract text and assign variables
string firstParagraph = doc.Paragraphs[0].ExtractText();
string lastParagraph = doc.Paragraphs.Last().ExtractText();

// Combine the texts
string newText = firstParagraph + " " + lastParagraph;

// Export the combined text as a new .txt file
File.WriteAllText("output.txt", newText);
$vbLabelText   $csharpLabel

特定の段落を抽出する機能は、文書分析要件と組み合わせることで威力を発揮します。 たとえば、書式や位置、内容のパターンに基づいて、主要な段落を抽出することもできます。 この選択的抽出アプローチにより、処理時間を短縮し、最も関連性の高いコンテンツに集中することができます。

最初の段落からどのような内容が抽出されますか?

抽出のデモンストレーションのために黒いテキストの段落の上に赤い書式の段落を示したWord文書

最後の段落からどのような内容が抽出されますか?

Microsoft Wordの文書で、Lorem ipsumテキストを紫色と青色で書式設定した段落を示す。

結合されたテキストは出力ファイルにどのように表示されますか?

段落の境界を示す赤と青の矢印でマークされた段落抽出ポイントを示すテキストエディタ

上のスクリーンショットは、最初の段落の抽出、最後の段落の抽出、およびテキストファイルに保存された結合出力を示しています。抽出処理によって、テキスト内容が保持される一方で、書式情報が削除され、プレーンテキスト処理に適していることに注目してください。

DOCXでテーブルからデータを抽出するには?

テーブルには、処理や分析のために抽出する必要がある構造化データが含まれることがよくあります。 IronWord を使用すると、行やセルを移動してテーブル データにアクセスできます。 この例では、API 統計テーブルを含むドキュメントを読み込み、2 行目の 4 列目から特定のセルの値を抽出します。

テーブル抽出は、データ移行プロジェクト、レポート作成、自動データ収集ワークフローに不可欠です。 表形式データを扱う際、ゼロベースのインデックスシステムを理解することが重要です - 最初のテーブルはRows[0]のように扱います。 この体系的なアプローチは、ライセンス構造と似ており、予測可能なアクセスパターンを提供します。

:path=/static-assets/word/content-code-examples/how-to/extract-text-table.cs
using System;
using IronWord;
using IronWord.Models;

// Load the API statistics document
WordDocument apiStatsDoc = new WordDocument("api-statistics.docx");

// Extract text from the 1st table, 4th column and 2nd row
string extractedValue = ((TableCell)apiStatsDoc.Tables[0].Rows[2].Cells[3]).ExtractText();

// Print extracted value
Console.WriteLine($"Target success rate: {extractedValue}");
$vbLabelText   $csharpLabel

このコードは、Cellsコレクションプロパティを使用して、表のセルにアクセスする方法を示しています。 ((TableCell)cell).ExtractText()。 これは、using IronWord.Models;を名前空間の宣言に追加することを要求します。

ソース テーブルはどのようなものですか?

リクエスト、待ち時間、成功率、帯域幅のメトリクスを含む6つのエンドポイントを示すWordのAPI使用統計表

テーブルのセルからどのような値が取得されますか?

抽出されたテーブル値

高度なテキスト抽出シナリオ

複雑な文書を扱う場合は、複数の抽出テクニックを組み合わせる必要があります。 複数の要素からテキストを抽出し、それらを異なる方法で処理する例を示します:

using IronWord;
using System.Text;
using System.Linq;

// Load a complex document
WordDocument complexDoc = new WordDocument("report.docx");

// Create a StringBuilder for efficient string concatenation
StringBuilder extractedContent = new StringBuilder();

// Extract and process headers (assuming they're in the first few paragraphs)
var headers = complexDoc.Paragraphs
    .Take(3)
    .Select(p => p.ExtractText())
    .Where(text => !string.IsNullOrWhiteSpace(text));

foreach (var header in headers)
{
    extractedContent.AppendLine($"HEADER: {header}");
}

// Extract table summaries
foreach (var table in complexDoc.Tables)
{
    // Get first cell as table header/identifier
    string tableIdentifier = table.Rows[0].Cells[0].ExtractText();
    extractedContent.AppendLine($"\nTABLE: {tableIdentifier}");

    // Extract key metrics (last row often contains totals)
    if (table.Rows.Count > 1)
    {
        var lastRow = table.Rows.Last();
        var totals = lastRow.Cells.Select(cell => cell.ExtractText());
        extractedContent.AppendLine($"Totals: {string.Join(", ", totals)}");
    }
}

// Save the structured extraction
System.IO.File.WriteAllText("structured-extract.txt", extractedContent.ToString());
using IronWord;
using System.Text;
using System.Linq;

// Load a complex document
WordDocument complexDoc = new WordDocument("report.docx");

// Create a StringBuilder for efficient string concatenation
StringBuilder extractedContent = new StringBuilder();

// Extract and process headers (assuming they're in the first few paragraphs)
var headers = complexDoc.Paragraphs
    .Take(3)
    .Select(p => p.ExtractText())
    .Where(text => !string.IsNullOrWhiteSpace(text));

foreach (var header in headers)
{
    extractedContent.AppendLine($"HEADER: {header}");
}

// Extract table summaries
foreach (var table in complexDoc.Tables)
{
    // Get first cell as table header/identifier
    string tableIdentifier = table.Rows[0].Cells[0].ExtractText();
    extractedContent.AppendLine($"\nTABLE: {tableIdentifier}");

    // Extract key metrics (last row often contains totals)
    if (table.Rows.Count > 1)
    {
        var lastRow = table.Rows.Last();
        var totals = lastRow.Cells.Select(cell => cell.ExtractText());
        extractedContent.AppendLine($"Totals: {string.Join(", ", totals)}");
    }
}

// Save the structured extraction
System.IO.File.WriteAllText("structured-extract.txt", extractedContent.ToString());
$vbLabelText   $csharpLabel

この高度な例では、さまざまなドキュメント要素を組み合わせて構造化抽出を作成する方法を示します。 このアプローチは、ドキュメントの要約を作成したり、インデックスを作成したり、さらなる処理のためにデータを準備したりする場合に便利です。 アップグレードがソフトウェアの機能を強化するように、抽出方法を組み合わせることで、文書処理能力が強化されます。

テキスト抽出のベストプラクティス

本番アプリケーションにテキスト抽出を実装する場合は、以下のベストプラクティスを考慮してください:

1.エラー処理:ドキュメントが破損していたり、予期しない構造になっていたりする可能性があるので、常にtry-catchブロックで抽出コードを囲んでください。

2.パフォーマンスの最適化:大規模なドキュメントやバッチ処理では、ドキュメントの内容全体ではなく、必要な部分のみを抽出することを検討してください。

3.文字エンコーディング:抽出したテキストを保存するとき、特に特殊文字や複数の言語を含む文書の場合は、文字エンコーディングに注意してください。

  1. メモリ管理: 複数のドキュメントを処理する際には、メモリリークを防ぐためにWordDocumentオブジェクトを適切に破棄してください。

テキスト抽出では、論理的な読み順は維持されますが、書式は削除されることを忘れないでください。 書式情報を保持する必要がある場合は、追加のIronWord機能を使用するか、メタデータを別途保存することを検討してください。 本番環境に導入する場合は、changelog を確認し、最新の機能と改善点を常に把握してください。

まとめ

IronWordのExtractText()メソッドは、DOCXファイルからテキストを抽出するための強力で柔軟な方法を提供します。 文書全体、特定の段落、または表データを抽出する必要があるかどうかにかかわらず、APIはあなたの目標を達成するための簡単な方法を提供します。 これらのテクニックを適切なエラー処理と最適化戦略と組み合わせることで、さまざまなテキスト抽出シナリオを効率的に処理する堅牢な文書処理アプリケーションを構築することができます。

より高度なシナリオや追加機能の探求については、拡張機能や、ドキュメント処理機能を強化するためのその他のドキュメントリソースをご覧ください。

よくある質問

C#でWord文書からすべてのテキストを抽出するにはどうすればよいですか?

WordDocumentオブジェクトにIronWordのExtractText()メソッドを使用します。DOCX ファイルを WordDocument doc = new WordDocument("document.docx"); で読み込み、string text = doc.ExtractText(); を呼び出してドキュメントからすべてのテキストコンテンツを取得します。

文書全体ではなく、特定の段落からテキストを抽出できますか?

はい、IronWordではParagraphsコレクションにアクセスすることで、特定の段落からテキストを抽出することができます。doc.Paragraphs[index].ExtractText()を使用して、より詳細なテキスト抽出のために個々の段落をターゲットにしてください。

DOCXファイルの表からテキストを抽出する方法を教えてください。

IronWordはTablesコレクションを通してテーブルのテキスト抽出を可能にします。doc.Tables[0].Rows[0].Cells[0].ExtractText()を使用して特定のセルにアクセスし、ドキュメント内の任意のテーブル・セルからテキスト・コンテンツを取得します。

ExtractText() を使用する場合、抽出されたテキストはどのような順序に従いますか?

IronWordのExtractText()メソッドはドキュメントの論理的な読み順を維持し、ヘッダー、段落、リスト、その他のテキスト要素を順番に処理するため、コンテンツ分析や検索インデックス作成に最適です。

DOCXファイルからテキストを抽出する基本的な手順を教えてください。

まずNuGet (Install-Package IronWord)を介してIronWordをインストールし、WordDocumentを作成または読み込み、最後にExtractText()メソッドを使用してドキュメント全体、特定の段落、または必要に応じてテーブルのセルからテキストを取得します。

テキスト抽出は文書索引システムの構築に適していますか?

IronWordのテキスト抽出機能は、文書インデックス・システム、コンテンツ管理ソリューション、データ抽出パイプラインの構築に最適で、Word文書コンテンツへの効率的なプログラムアクセスを提供します。

Ahmad Sohail
フルスタックデベロッパー

Ahmadは、C#、Python、およびウェブ技術に強い基盤を持つフルスタック開発者です。彼はスケーラブルなソフトウェアソリューションの構築に深い関心を持ち、デザインと機能が実際のアプリケーションでどのように融合するかを探求することを楽しんでいます。

Iron Softwareチームに参加する前、Ahmadは自動化プロジェクトやAPI統合に取り組み、パフォーマンスの向上と開発者の体験向上に注力してきました。

彼の自由時間には、UI/UXのアイデアを試したり、オープンソースツールに貢献したり、時折テクニカルライティングやドキュメンテーションに取り組んで、複雑なトピックを理解しやすくすることを目指しています。

準備はできましたか?
Nuget ダウンロード 36,374 | バージョン: 2026.3 リリース
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronWord
サンプルを実行する あなたのデータが Word ドキュメントになるのを見る。