如何在 .NET 中从 PDF 中提取文本
如何在 .NET 中从 PDF 中提取文本
本文展示了如何从 PDF 文档中提取文本,使用 .NET 的 Aspose.PDF Text Extractor. 您将学习如何使用所有支持的提交模式 - 纯、原和平面 - 为个人或多个 PDF 的自动工作流。
现实世界问题
手动从PDF中复制文本是无效的,有错误的。在数据分析、文档迁移或存档中的应用程序中,自动文献提取确保一致性、速度和准确性。
解决方案概述
Aspose.PDF Text Extractor for .NET 为您提供一个清洁、可编程的界面,以便在各种格式中提取文本。 选择 Pure、Raw 和 Plain 模式以匹配您的使用情况 - 无论您需要配置输出、原始数据或平面内容。
原則
- Visual Studio 2019 或以后
- .NET 6.0 或更高
- Aspose.PDF for .NET 通过 NuGet 安装
PM> Install-Package Aspose.PDF
步骤实施
步骤 1: 安装和设置 Aspose.PDF
using Aspose.Pdf.Plugins;
using System.IO;
步骤2:使用默认(Raw)模式提取文本
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(); // Raw mode by default
options.AddInput(new FileDataSource("input.pdf"));
var resultContainer = extractor.Process(options);
string textExtracted = resultContainer.ResultCollection[0].ToString();
Console.WriteLine(textExtracted);
}
步骤3:在清洁或平面模式中提取文本
- 清洁模式: 保留相对位置,并添加调整空间。
- Plain 模式: 字符串格式,输出文本,最小空间。
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Pure); // Or .Plain
options.AddInput(new FileDataSource("input.pdf"));
var resultContainer = extractor.Process(options);
string textExtracted = resultContainer.ResultCollection[0].ToString();
Console.WriteLine(textExtracted);
}
使用案例和应用程序(与代码变量)
1. Batch 从多个PDF中提取文本
string[] files = Directory.GetFiles(@"C:\PDFs", "*.pdf");
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Pure);
foreach (var file in files)
options.AddInput(new FileDataSource(file));
var resultContainer = extractor.Process(options);
for (int i = 0; i < resultContainer.ResultCollection.Count; i++)
{
string extracted = resultContainer.ResultCollection[i].ToString();
// Save to disk, process, or analyze as needed
File.WriteAllText($@"C:\PDFs\out\{Path.GetFileNameWithoutExtension(files[i])}.txt", extracted);
}
}
2. 根据使用案例选择提取模式
- 使用 Pure 为桌面类似的布局或空间格式。
- 使用 Plain 用于清洁数据提取或分析。
- 使用 Raw 为未处理的文本。
3. Post-process 提取文本
提取后,应用 regex,文本清洁,或发送结果到其他服务(搜索,ML管道等)。
4. 集成提取与数据管道
自动提取作为一个更广泛的ETL、报告或文档管理工作流的一部分,使用标准的 .NET 实践。
共同挑战与解决方案
挑战:由于复杂的PDF结构而不一致的输出解决方案: 尝试不同的提取模式(纯、平、原)并比较结果。
挑战: Batch 提取速度解決方案: 使用單一 TextExtractor
例子和处理多个文件在一个运行,以获得最佳性能。
挑战: 特殊字符或编码问题解決方案: 使用平面模式為最小的格式化,然後按需要適用自定義行處理。
性能与最佳实践
- 测试所有三个提取模式,以确定您的文档类型的最佳结果
- 保存原始 PDF 之前的集合操作
- 交易产量文件名和组织在包工作
- 集成错误处理和登录,以获得强度
完整实施例子
using Aspose.Pdf.Plugins;
using System;
using System.IO;
class Program
{
static void Main()
{
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Plain);
options.AddInput(new FileDataSource(@"C:\PDFs\input.pdf"));
var resultContainer = extractor.Process(options);
string textExtracted = resultContainer.ResultCollection[0].ToString();
File.WriteAllText(@"C:\PDFs\output.txt", textExtracted);
}
}
}
结论
Aspose.PDF Text Extractor for .NET 为您提供强大、灵活的工具,以便在多个格式中提取文本,适合数据处理、存档或分析。