大多数数据在文档、图像和网络上都表示为可视文本,因此提取文本数据有时是最需要的事情。您可能需要从 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 中提取文本
您可以按照以下提到的简单步骤轻松解析任何文档并提取文本:
以下代码示例展示了如何使用 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());
}
Parser 类是提供解析功能以及提取文本和图像的主要类。我在这个类的 constructor 中指定了输入文件路径。
Parser 类的 GetText() 方法从指定的文档中提取文本。
使用 C# 从 DOCX 获取格式化文本
您可以按照以下提到的简单步骤轻松解析 Word 文档并提取文本,而不会丢失样式格式:
- 创建 Parser 类的实例
- 指定文件路径
- 定义 FormattedTextOptions
- 将 FormattedTextMode 设置为 HTML
- 调用Parser类的GetFormattedText方法提取文本
- 在 TextReader 类对象中获取结果
- 通过调用 TextReader 类的 ReadToEnd 方法显示结果
以下代码示例展示了如何使用 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());
}
FormattedTextOptions 类提供了用于格式化文本提取的选项,例如提取 Mode。我将提取模式设置为将文档文本提取为 HTML 的HTML 。
Parser 类的 GetFormattedText() 方法从指定的文档中提取格式化文本。
使用 C# 从页面中提取格式化文本
您可以按照以下提到的简单步骤轻松解析 Word 文档并从文档的特定页面中提取格式化文本:
- 创建 Parser 类的实例
- 指定文件路径
- 检查 FormattedText 是否为真
- 调用 GetDocumentInfo 获取页数
- 检查 PageCount 是否不为零
- 定义 FormattedTextOptions
- 将 FormattedTextMode 设置为 HTML
- 为每个页面索引调用GetFormattedText方法提取文本
- 在 TextReader 类对象中获取结果
- 通过调用 TextReader 类的 ReadToEnd 方法显示结果
以下代码示例展示了如何使用 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());
}
}
}
Parser 类提供表示 Features 类的 Features 属性。它可用于检查文档是否支持某个功能。您可以在“获取支持的功能”部分中阅读有关支持的功能的更多信息。
获得免费许可证
您可以通过申请 免费的临时许可证 来试用该 API,而不受评估限制。
结论
在本文中,您学习了如何使用 C# 从 Word 文档中提取文本。您可以使用 documentation 了解有关 .NET API 的 GroupDocs.Parser 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。