从 DOCX 中提取文本

大多数数据在文档、图像和网络上都表示为可视文本,因此提取文本数据有时是最需要的事情。您可能需要从 Word 或 PDF 文档中提取文本或图像。作为 C# 开发人员,您可以轻松地以编程方式从文档中提取文本。在本文中,您将学习如何使用 C# 从 DOC 或 DOCX 文档中提取文本。

本文讨论/涵盖了以下主题:

用于文本提取的 C# API

我将使用 GroupDocs.Parser for .NET API 从 DOCX 文档中提取文本。它允许从 Word、PDF、Excel 和 Powerpoint 等支持的文件格式文档中提取文本、元数据和图像。它还支持从支持格式的文件中提取原始、格式化和结构化文本以及元数据。

您可以下载 API 的 DLL 或使用 NuGet 安装它。

Install-Package GroupDocs.Parser

使用 C# 从 DOCX 中提取文本

您可以按照以下提到的简单步骤轻松解析任何文档并提取文本:

  • 创建 Parser 类的实例
  • 指定文件路径
  • 调用Parser类的GetText方法提取文本
  • 在 TextReader 类对象中获取结果
  • 通过调用 TextReader 类的 ReadToEnd 方法显示结果

以下代码示例展示了如何使用 C# 从 DOCX 文件中提取文本。

// 创建 Parser 类的实例
Parser parser = new Parser(@"C:\Files\sample.docx");

// 将文本提取到阅读器中
using (TextReader reader = parser.GetText())
{
    // 打印文档中的文本
    // 如果不支持文本提取,则 reader 为 null
    Console.WriteLine(reader == null ? "Text extraction isn't supported" : reader.ReadToEnd());
}
使用 C# 从 DOCX 中提取文本

使用 C# 从 DOCX 中提取文本

Parser 类是提供解析功能以及提取文本和图像的主要类。我在这个类的 constructor 中指定了输入文件路径。

Parser 类的 GetText() 方法从指定的文档中提取文本。

使用 C# 从 DOCX 获取格式化文本

您可以按照以下提到的简单步骤轻松解析 Word 文档并提取文本,而不会丢失样式格式:

以下代码示例展示了如何使用 C# 从 DOCX 文件中提取格式化文本。

// 创建 Parser 类的实例
Parser parser = new Parser(@"C:\Files\sample.docx");

// 将格式化文本提取到阅读器中
using (TextReader reader = parser.GetFormattedText(new FormattedTextOptions(FormattedTextMode.Html)))
{
    // 打印文档中的格式化文本
    // 如果不支持格式化文本提取,则 reader 为 null
    Console.WriteLine(reader == null ? "Formatted text extraction isn't suppported" : reader.ReadToEnd());
}
使用 C# 从 DOCX 中提取格式化文本

使用 C# 从 DOCX 中提取格式化文本

FormattedTextOptions 类提供了用于格式化文本提取的选项,例如提取 Mode。我将提取模式设置为将文档文本提取为 HTML 的HTML 。

Parser 类的 GetFormattedText() 方法从指定的文档中提取格式化文本。

使用 C# 从页面中提取格式化文本

您可以按照以下提到的简单步骤轻松解析 Word 文档并从文档的特定页面中提取格式化文本:

以下代码示例展示了如何使用 C# 逐页提取格式化文本。

// 创建 Parser 类的实例
using (Parser parser = new Parser(@"C:\Files\sample.docx"))
{
    // 检查文档是否支持格式化文本提取
    if (!parser.Features.FormattedText)
    {
        Console.WriteLine("Document isn't supports formatted text extraction.");
        return;
    }

    // 获取文档信息
    IDocumentInfo documentInfo = parser.GetDocumentInfo();
    // 检查文档是否有页面
    if (documentInfo.PageCount == 0)
    {
        Console.WriteLine("Document hasn't pages.");
        return;
    }

    // 遍历页面
    for (int p = 0; p < documentInfo.PageCount; p++)
    {
        // 打印页码 
        Console.WriteLine(string.Format("Page {0}/{1}", p + 1, documentInfo.PageCount));
        // 将格式化文本提取到阅读器中
        using (TextReader reader = parser.GetFormattedText(p, new FormattedTextOptions(FormattedTextMode.Html)))
        {
            // 打印文档中的格式化文本
            // 我们忽略空值检查,因为我们之前检查了格式化文本提取功能支持
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}
使用 C# 从页面中提取格式化文本

使用 C# 从页面中提取格式化文本

Parser 类提供表示 Features 类的 Features 属性。它可用于检查文档是否支持某个功能。您可以在“获取支持的功能”部分中阅读有关支持的功能的更多信息。

获得免费许可证

您可以通过申请 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 C# 从 Word 文档中提取文本。您可以使用 documentation 了解有关 .NET API 的 GroupDocs.Parser 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看