如何在 .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 为您提供强大、灵活的工具,以便在多个格式中提取文本,适合数据处理、存档或分析。

 中文