使用 C# 从 PDF 中提取表格

在处理数据提取或分析时,从 PDF 文件中提取表格可能是一项常见任务。无论您是尝试检索表格进行处理还是将其导出以供进一步使用,自动化此过程都可以节省时间和精力。在这篇博文中,我们将向您展示如何使用 C# 从 PDF 中提取表格或将提取的数据导出到 CSV 文件。

我们将在本文中介绍以下部分:

为什么要从 PDF 中提取表格?

PDF 文件被广泛用于以可移植格式共享信息。但是,提取表格等结构化数据可能具有挑战性,因为 PDF 文件的设计并不便于编辑或操作。通过在 C# 中以编程方式提取表格数据,您可以使数据更易于访问,从而允许您分析、修改或以不同格式存储数据,例如 CSV,后者被广泛用于不同应用程序之间的数据交换。

PDF 表格提取 - C# API 配置

您可以通过使用以下 NuGet 安装命令配置 Conholdate.Total for .NET 从 PDF 表中提取数据:

PM> NuGet\Install-Package Conholdate.Total

使用 C# 从 PDF 中提取表格

在本节中,我们将介绍如何使用 C# 从 PDF 文档中提取表格。

  • 加载 PDF 文档:代码首先将 PDF 文件加载到 Document 类对象中。
  • 表格吸收器:TableAbsorber 类用于检测和吸收 PDF 每一页上的表格。
  • 提取表格数据:代码遍历找到的每个表格,提取表格中每个单元格的内容,并以结构化格式打印。

此方法提供了一种从 PDF 文档访问表格数据的有效方法,使您能够以编程方式处理信息。下面的代码片段演示了 C# 中的表格提取:

// 加载源 PDF 文档
var filePath = "input.pdf";
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(filePath);
foreach (var page in pdfDocument.Pages)
{
    Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
    absorber.Visit(page);
    foreach (AbsorbedTable table in absorber.TableList)
    {
        Console.WriteLine("Table");
        foreach (AbsorbedRow row in table.RowList)
        {
            foreach (AbsorbedCell cell in row.CellList)
            {
                foreach (TextFragment fragment in cell.TextFragments)
                {
                    var sb = new StringBuilder();
                    foreach (TextSegment seg in fragment.Segments)
                        sb.Append(seg.Text);
                    Console.Write("{sb.ToString()}|");
                }
            }
            Console.WriteLine();
        }
    }
}

在 C# 中将 PDF 表格数据转换为 CSV

从 PDF 中提取表格数据后,您可能希望将其保存为更易于访问的格式,例如 CSV。CSV(逗号分隔值)受到 Microsoft Excel、Google Sheets 等应用程序和许多数据处理系统等应用程序的广泛支持。在本节中,我们将使用 C# 将 PDF 表格数据转换为 CSV:

以下步骤显示如何在 C# 中将 PDF 表中的数据导出为 CSV 格式:

  • 加载 PDF 文档:PDF 文档像以前一样加载到 Document 对象中。
  • ExcelSaveOptions:创建 ExcelSaveOptions 实例,格式设置为 CSV。这可确保 PDF 中的表格数据直接导出为 CSV 文件。
  • 保存 CSV 文件:调用 Save 方法将 PDF 表数据导出到 .csv 文件。

下面的代码示例展示了如何在 C# 中将 PDF 表转换为 CSV 格式:

// 加载 PDF 文档
Document pdfDocument = new Document("input.pdf");

// 实例化 ExcelSave Option 对象
ExcelSaveOptions excelSave = new ExcelSaveOptions { Format = ExcelSaveOptions.ExcelFormat.CSV };

// 以 XLS 格式保存输出
pdfDocument.Save("PDFToXLS_out.xlsx", excelSave);

获取免费许可证

您可以获得 免费临时许可证 来测试 API 的不同功能,不受任何评估限制。

总结

在 C# 中,从 PDF 中提取表格并将数据导出为 CSV 格式变得简单而高效。自动提取表格的功能有助于在需要以更灵活的格式(如 CSV)分析或共享 PDF 中的表格数据的情况下提供帮助。按照此博客文章中的步骤操作,您可以轻松地从 PDF 文件中检索和存储表格数据。此过程在数据分析、报告或任何需要从原本僵化的 PDF 文档中提取结构化数据的任务中特别有用。如有任何疑问,请通过 论坛 与我们联系。

参见