IronWordでDOCXからテキストを抽出する
IronWordのExtractText()メソッドは、DOCXファイルからテキストを抽出でき、ドキュメント全体、特定の段落、または表のセルにアクセスすることで、C#でのドキュメント処理とデータ分析タスクにシンプルなAPIを提供します。
クイックスタート: DOCX からテキストを抽出
-
IronWord をNuGetパッケージマネージャでインストール
PM > Install-Package IronWord -
このコード スニペットをコピーして実行します。
using IronWord; // Quick example: Extract all text from DOCX WordDocument doc = new WordDocument("sample.docx"); string allText = doc.ExtractText(); Console.WriteLine(allText); -
実際の環境でテストするためにデプロイする
今日プロジェクトで IronWord を使い始めましょう無料トライアル
最小限のワークフロー(5ステップ)
- IronWord C#ライブラリをインストールする
new WordDocument()を使用して既存のWordドキュメントを読み込みます- ドキュメントの
ExtractText()を呼び出してすべてのテキストを取得します Paragraphsコレクションを使用して特定の段落からテキストを抽出します- 抽出したテキストコンテンツを処理またはエクスポートする
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());
Imports System
Imports IronWord
' Instantiate a new DOCX file
Dim doc As New WordDocument()
' Add text
doc.AddText("Hello, World!")
' Print extracted text from the document to the console
Console.WriteLine(doc.ExtractText())
抽出されたテキストはどのように見えますか?
コンソールではどのような出力が期待できますか?
特定の段落からテキストを抽出するにはどうすればよいですか?
さらに細かく制御するために、ドキュメント全体ではなく特定の段落からテキストを抽出できます。 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);
Imports System.IO
Imports System.Linq
Imports IronWord
' Load an existing DOCX file
Dim doc As New WordDocument("document.docx")
' Extract text and assign variables
Dim firstParagraph As String = doc.Paragraphs(0).ExtractText()
Dim lastParagraph As String = doc.Paragraphs.Last().ExtractText()
' Combine the texts
Dim newText As String = firstParagraph & " " & lastParagraph
' Export the combined text as a new .txt file
File.WriteAllText("output.txt", newText)
特定の段落を抽出する機能は、文書分析要件と組み合わせることで威力を発揮します。 たとえば、書式や位置、内容のパターンに基づいて、主要な段落を抽出することもできます。 この選択的抽出アプローチにより、処理時間を短縮し、最も関連性の高いコンテンツに集中することができます。
最初の段落からどのような内容が抽出されますか?
最後の段落からどのような内容が抽出されますか?
結合されたテキストは出力ファイルにどのように表示されますか?
上のスクリーンショットは、最初の段落の抽出、最後の段落の抽出、およびテキストファイルに保存された結合出力を示しています。抽出処理によって、テキスト内容が保持される一方で、書式情報が削除され、プレーンテキスト処理に適していることに注目してください。
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}");
Imports System
Imports IronWord
Imports IronWord.Models
' Load the API statistics document
Dim apiStatsDoc As New WordDocument("api-statistics.docx")
' Extract text from the 1st table, 4th column and 2nd row
Dim extractedValue As String = CType(apiStatsDoc.Tables(0).Rows(2).Cells(3), TableCell).ExtractText()
' Print extracted value
Console.WriteLine($"Target success rate: {extractedValue}")
このコードは、Cellsコレクションプロパティを使用して、表のセルにアクセスする方法を示しています。 ((TableCell)cell).ExtractText()。 これは、using IronWord.Models;を名前空間の宣言に追加することを要求します。
ソース テーブルはどのようなものですか?
テーブルのセルからどのような値が取得されますか?
高度なテキスト抽出シナリオ
複雑な文書を扱う場合は、複数の抽出テクニックを組み合わせる必要があります。 複数の要素からテキストを抽出し、それらを異なる方法で処理する例を示します:
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());
Imports IronWord
Imports System.Text
Imports System.Linq
' Load a complex document
Dim complexDoc As New WordDocument("report.docx")
' Create a StringBuilder for efficient string concatenation
Dim extractedContent As New StringBuilder()
' Extract and process headers (assuming they're in the first few paragraphs)
Dim headers = complexDoc.Paragraphs _
.Take(3) _
.Select(Function(p) p.ExtractText()) _
.Where(Function(text) Not String.IsNullOrWhiteSpace(text))
For Each header In headers
extractedContent.AppendLine($"HEADER: {header}")
Next
' Extract table summaries
For Each table In complexDoc.Tables
' Get first cell as table header/identifier
Dim tableIdentifier As String = table.Rows(0).Cells(0).ExtractText()
extractedContent.AppendLine(vbCrLf & $"TABLE: {tableIdentifier}")
' Extract key metrics (last row often contains totals)
If table.Rows.Count > 1 Then
Dim lastRow = table.Rows.Last()
Dim totals = lastRow.Cells.Select(Function(cell) cell.ExtractText())
extractedContent.AppendLine($"Totals: {String.Join(", ", totals)}")
End If
Next
' Save the structured extraction
System.IO.File.WriteAllText("structured-extract.txt", extractedContent.ToString())
この高度な例では、さまざまなドキュメント要素を組み合わせて構造化抽出を作成する方法を示します。 このアプローチは、ドキュメントの要約を作成したり、インデックスを作成したり、さらなる処理のためにデータを準備したりする場合に便利です。 アップグレードがソフトウェアの機能を強化するように、抽出方法を組み合わせることで、文書処理能力が強化されます。
テキスト抽出のベストプラクティス
本番アプリケーションにテキスト抽出を実装する場合は、以下のベストプラクティスを考慮してください:
1.エラー処理:ドキュメントが破損していたり、予期しない構造になっていたりする可能性があるので、常にtry-catchブロックで抽出コードを囲んでください。
2.パフォーマンスの最適化:大規模なドキュメントやバッチ処理では、ドキュメントの内容全体ではなく、必要な部分のみを抽出することを検討してください。
3.文字エンコーディング:抽出したテキストを保存するとき、特に特殊文字や複数の言語を含む文書の場合は、文字エンコーディングに注意してください。
- メモリ管理: 複数のドキュメントを処理する際には、メモリリークを防ぐために
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文書コンテンツへの効率的なプログラムアクセスを提供します。

