You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#按PDF原有表格格式读取内容以提取指定键值?

解决PDF表格键值提取的方案

嘿,我完全懂你遇到的痛点——用iTextSharp处理PDF表格时,它一股脑把内容全吐出来,根本没法直接对应表格里的键值对吧?我之前也踩过这个坑,给你几个靠谱的解决方案试试:

1. 升级到iText 7(iTextSharp的现代替代)

iTextSharp已经进入维护状态了,它的后续版本iText 7专门强化了表格解析能力,能精准识别表格的行、列和单元格结构,帮你轻松匹配键值对。

下面是一个简单的示例代码:

using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

// 打开PDF文档
var pdfDoc = new PdfDocument(new PdfReader("target-file.pdf"));
// 创建表格提取监听器
var tableListener = new TableTextExtractionStrategy();

// 遍历每一页
for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
{
    var processor = new PdfCanvasProcessor(tableListener);
    processor.ProcessPageContent(pdfDoc.GetPage(pageNum));
    
    // 获取当前页的所有表格
    var tables = tableListener.GetTables();
    foreach (var table in tables)
    {
        // 遍历表格的每一行
        foreach (var row in table.GetRows())
        {
            var cells = row.GetCells();
            // 假设表格第一列是键,第二列是值
            if (cells.Count >= 2)
            {
                string key = cells[0].GetText().Trim();
                string value = cells[1].GetText().Trim();
                // 这里可以将键值对存入字典或进行后续处理
                Console.WriteLine($"提取到:{key} = {value}");
            }
        }
    }
}

pdfDoc.Close();

2. 使用PdfPig(开源.NET PDF解析库)

PdfPig是一个轻量且易用的开源库,对PDF表格的结构识别很准确,能直接获取每个单元格的文本内容,不需要手动处理文本拼接的问题。

示例代码如下:

using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;

// 打开PDF文件
using (var document = PdfDocument.Open("target-file.pdf"))
{
    // 遍历每一页
    foreach (var page in document.GetPages())
    {
        // 获取当前页的所有表格
        var tables = page.GetTables();
        foreach (var table in tables)
        {
            // 遍历表格行
            foreach (var row in table.Rows)
            {
                var cells = row.Cells;
                // 根据你的表格结构提取键值
                if (cells.Count >= 2)
                {
                    string key = cells[0].Text.Trim();
                    string value = cells[1].Text.Trim();
                    // 处理提取到的键值对
                }
            }
        }
    }
}

3. 商业库选项:Syncfusion Essential PDF

如果你的需求更复杂(比如合并单元格、不规则表格),可以试试Syncfusion的Essential PDF库,它能直接将PDF表格转换为DataTable,之后你就可以像操作普通数据表一样轻松提取键值了。不过这是商业库,有免费试用版可以先测试。

额外提示:处理扫描型PDF

如果你的PDF是扫描生成的图像文件(而非原生文本PDF),上面的文本解析库都无法直接工作,需要先通过OCR工具(比如Tesseract.NET)将图像转换为可识别的文本,再用上述方法解析表格。

内容的提问来源于stack exchange,提问作者user3411135

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:03:05