Wyodrębnianie tekstu z plików DOCX za pomocą IronWord
Metoda ExtractText() w IronWord pozwala na wydobycie tekstu z plików DOCX poprzez dostęp do całych dokumentów, konkretnych akapitów lub komórek tabel, zapewniając prosty interfejs API do przetwarzania dokumentów i zadań analizy danych w C#.
Szybki start: Wyodrębnianie tekstu z plików DOCX
-
Install IronWord with NuGet Package Manager
PM > Install-Package IronWord -
Skopiuj i uruchom ten fragment kodu.
using IronWord; // Quick example: Extract all text from DOCX WordDocument doc = new WordDocument("sample.docx"); string allText = doc.ExtractText(); Console.WriteLine(allText); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronWord w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Zainstaluj biblioteke IronWord dla C#
- Załaduj istniejący dokument WORD za pomocą
new WordDocument() - Wywołaj metodę
ExtractText()na dokumencie, aby pobrać cały tekst - Wyodrębnij tekst z określonych akapitów za pomocą kolekcji
Paragraphs - Przetwarzaj lub eksportuj wyodrębnioną treść tekstową
Jak wyodrębnić cały tekst z dokumentu DOCX?
Metoda ExtractText() pobiera zawartość tekstową z całego dokumentu Word. W tym przykładzie tworzymy nowy dokument, dodajemy do niego tekst, wydobywamy tekst za pomocą ExtractText() i wyświetlamy go w konsoli. Poniżej przedstawiono podstawowy przebieg procesu ekstrakcji tekstu.
Wyodrębniony tekst zachowuje logiczną kolejność czytania dokumentu. Metoda przetwarza nagłówki, akapity, listy i inne elementy tekstowe w kolejności, dzięki czemu idealnie nadaje się do analizy treści i aplikacji do indeksowania wyszukiwania.
: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())
Jak wygląda wyodrębniony tekst?
Jakiego wyniku powinienem się spodziewać w konsoli?
Jak mogę wyodrębnić tekst z określonych akapitów?
Aby uzyskać większą kontrolę, można wyodrębnić tekst z określonych akapitów zamiast z całego dokumentu. Uzyskując dostęp do kolekcji Paragraphs, można celować i przetwarzać dowolny potrzebny akapit. Takie szczegółowe podejście jest przydatne w przypadku dokumentów o ustrukturyzowanej treści lub gdy konieczne jest niezależne przetwarzanie określonych sekcji.
W tym przykładzie wydobywamy tekst z pierwszego i ostatniego akapitu, łączymy je i zapisujemy wynik do pliku .txt. Technika ta jest powszechnie stosowana w narzędziach do streszczeń dokumentów, gdzie można chcieć wydobyć wprowadzenie i zakończenie dokumentu. Podobnie jak w przypadku używania kluczy licencyjnych do odblokowywania funkcji, kolekcja Paragraphs daje dostęp do konkretnych elementów dokumentu.
: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)
Możliwość wyodrębniania określonych akapitów staje się potężnym narzędziem w połączeniu z wymaganiami dotyczącymi analizy dokumentów. Na przykład można wyodrębnić kluczowe akapity na podstawie ich formatowania, położenia lub wzorców treści. Takie selektywne podejście do ekstrakcji pomaga skrócić czas przetwarzania i skupia się na najbardziej istotnych treściach.
Jakie treści wyciąga się z pierwszego akapitu?
Jakie treści zostały wyodrębnione z ostatniego akapitu?
Jak połączony tekst wygląda w pliku wyjściowym?
Powyższe zrzuty ekranu pokazują wyodrębnienie pierwszego akapitu, wyodrębnienie ostatniego akapitu oraz połączony wynik zapisany w pliku tekstowym. Zwróć uwagę, jak proces wyodrębniania zachowuje treść tekstową, usuwając jednocześnie informacje dotyczące formatowania, dzięki czemu nadaje się do przetwarzania zwykłego tekstu.
Jak wyodrębnić dane z tabel w pliku DOCX?
Tabele często zawierają dane strukturalne, które należy wyodrębnić w celu przetworzenia lub analizy. IronWord umożliwia dostęp do danych w tabeli poprzez nawigację po wierszach i komórkach. W tym przykładzie ładujemy dokument zawierający tabelę statystyk API i wyodrębniamy konkretną wartość komórki z czwartej kolumny drugiego wiersza.
Ekstrakcja tabel jest niezbędna w projektach migracji danych, generowaniu raportów i zautomatyzowanych procesach gromadzenia danych. Podczas pracy z danymi tabelarycznymi zrozumienie systemu indeksowania od zera jest kluczowe - pierwsza tabela to Tables[0], pierwszy wiersz to Rows[0] i tak dalej. To systematyczne podejście, podobne do struktur licencyjnych, zapewnia przewidywalne wzorce dostępu.
: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}")
Kod pokazuje dostęp do komórek tabeli przy użyciu właściwości kolekcji Tables, Rows i Cells. Zauważ, że kolekcja Cells zwraca obiekty interfejsu ITableCell, które muszą być rzutowane na TableCell, aby uzyskać dostęp do metody ExtractText: ((TableCell)cell).ExtractText(). To wymaga dodania using IronWord.Models; do deklaracji przestrzeni nazw.
Jak wygląda tabela źródłowa?
Jaka wartość jest pobierana z komórki tabeli?
Zaawansowane scenariusze ekstrakcji tekstu
Podczas pracy z złożonymi dokumentami może zaistnieć potrzeba połączenia wielu technik ekstrakcji. Oto przykład ilustrujący wyodrębnianie tekstu z wielu elementów i przetwarzanie ich w różny sposób:
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())
Ten zaawansowany przykład pokazuje, jak tworzyć ustrukturyzowane wyciągi poprzez łączenie różnych elementów dokumentu. Takie podejście jest przydatne do generowania streszczeń dokumentów, tworzenia indeksów lub przygotowywania danych do dalszego przetwarzania. Tak jak aktualizacje zwiększają możliwości oprogramowania, tak połączenie metod ekstrakcji zwiększa możliwości przetwarzania dokumentów.
Najlepsze praktyki dotyczące ekstrakcji tekstu
Podczas wdrażania ekstrakcji tekstu w aplikacjach produkcyjnych należy wziąć pod uwagę następujące najlepsze praktyki:
-
Obsługa błędów: Kod wyodrębniania należy zawsze umieszczać w blokach try-catch, aby obsłużyć dokumenty, które mogą być uszkodzone lub mieć nieoczekiwaną strukturę.
-
Optymalizacja wydajności: W przypadku dużych dokumentów lub przetwarzania wsadowego warto rozważyć wyodrębnianie tylko niezbędnych fragmentów zamiast całej treści dokumentu.
-
Kodowanie znaków: Należy zwrócić uwagę na kodowanie znaków podczas zapisywania wyodrębnionego tekstu, zwłaszcza w przypadku dokumentów zawierających znaki specjalne lub wiele języków.
- Zarządzanie pamięcią: Przy przetwarzaniu wielu dokumentów należy odpowiednio usuwać obiekty
WordDocument, aby zapobiec wyciekom pamięci.
Należy pamiętać, że podczas ekstrakcji tekstu zachowana zostaje logiczna kolejność czytania, ale usuwane jest formatowanie. Jeśli trzeba zachować informacje o formatowaniu, rozważ użycie dodatkowych funkcji IronWord lub przechowywanie metadanych oddzielnie. W przypadku wdrożeń produkcyjnych zapoznaj się z dziennikiem zmian, aby być na bieżąco z najnowszymi funkcjami i ulepszeniami.
Podsumowanie
Metoda ExtractText() w IronWord zapewnia potężny i elastyczny sposób na wydobycie tekstu z plików DOCX. Niezależnie od tego, czy chcesz wyodrębnić całe dokumenty, konkretne akapity czy dane z tabel, API oferuje proste metody pozwalające osiągnąć zamierzone cele. Łącząc te techniki z odpowiednim zarządzaniem błędami i strategiami optymalizacji, można tworzyć solidne aplikacje do przetwarzania dokumentów, które skutecznie radzą sobie z różnymi scenariuszami ekstrakcji tekstu.
Aby uzyskać bardziej zaawansowane scenariusze i zapoznać się z dodatkowymi funkcjami, sprawdź rozszerzenia oraz inne zasoby dokumentacji, aby zwiększyć możliwości przetwarzania dokumentów.
Często Zadawane Pytania
Jak mogę wyodrębnić cały tekst z dokumentu Word w C#?
Użyj metody ExtractText() IronWord na obiekcie WordDocument. Załaduj swój plik DOCX za pomocą WordDocument doc = new WordDocument("document.docx");, a potem wywołaj string text = doc.ExtractText(); aby pobrać całą zawartość tekstową z dokumentu.
Czy mogę wyodrębnić tekst z konkretnych akapitów zamiast całego dokumentu?
Tak, IronWord pozwala na wyodrębnianie tekstu z konkretnych akapitów poprzez dostęp do kolekcji Paragraphs. Użyj doc.Paragraphs[index].ExtractText(), aby celować w indywidualne akapity do bardziej szczegółowego wyodrębniania tekstu.
Jak wyodrębnić tekst z tabel w plikach DOCX?
IronWord umożliwia wyodrębnianie tekstu tabeli poprzez kolekcję Tables. Uzyskaj dostęp do konkretnych komórek używając doc.Tables[0].Rows[0].Cells[0].ExtractText(), aby pobrać zawartość tekstową z dowolnej komórki tabeli w Twoim dokumencie.
W jakiej kolejności jest wyodrębniany tekst przy użyciu ExtractText()?
Metoda ExtractText() IronWord utrzymuje logiczną kolejność czytania dokumentu, przetwarzając nagłówki, akapity, listy i inne elementy tekstowe po kolei, co czyni ją idealną do analizy treści i indeksowania wyszukiwania.
Jakie są podstawowe kroki, aby rozpocząć wyodrębnianie tekstu z plików DOCX?
Najpierw zainstaluj IronWord za pomocą NuGet (Install-Package IronWord), potem utwórz lub załaduj WordDocument, a na koniec użyj metody ExtractText(), aby pobrać tekst z całego dokumentu, konkretnych akapitów lub komórek tabeli według potrzeb.
Czy wyodrębnianie tekstu nadaje się do budowania systemów indeksowania dokumentów?
Tak, zdolności wyodrębniania tekstu IronWord są doskonałe do budowania systemów indeksowania dokumentów, rozwiązań zarządzania treścią i linii przetwarzania danych, zapewniając efektywny programowy dostęp do treści dokumentów Word.

