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

如何在C#中读取PDF文件特定区域内的文本?

在C#中读取PDF特定区域跨多行文本的方案

方法1:基于iTextSharp自定义提取策略

iTextSharp的Rectangle固定坐标提取存在局限,但可以通过自定义文本提取策略,判断每个文本块是否落在目标区域内,从而收集跨多行的文本:

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.Collections.Generic;
using System.Linq;

public class RegionTextExtractor : LocationTextExtractionStrategy
{
    private readonly Rectangle _targetRegion;
    private readonly List<string> _matchedChunks = new();

    public RegionTextExtractor(Rectangle region)
    {
        _targetRegion = region;
    }

    public override void RenderText(TextRenderInfo renderInfo)
    {
        var textBounds = renderInfo.GetDescentLine().GetBoundingRectange();
        // 检查文本块是否与目标区域相交
        if (_targetRegion.Intersects(textBounds))
        {
            _matchedChunks.Add(renderInfo.GetText());
        }
    }

    public string GetResultText() => string.Join(" ", _matchedChunks);
}

// 调用示例
using (var pdfReader = new PdfReader("target.pdf"))
{
    // 定义目标区域(x1,y1: 左下角坐标;x2,y2: 右上角坐标)
    var targetArea = new Rectangle(150, 300, 600, 500);
    var extractor = new RegionTextExtractor(targetArea);
    PdfTextExtractor.GetTextFromPage(pdfReader, 1, extractor);
    string extractedText = extractor.GetResultText();
}

方法2:使用PdfPig库(更简洁)

PdfPig是轻量的PDF处理库,直接暴露每个字符的位置信息,可轻松筛选区域内的文本,天然支持跨多行场景:

首先通过NuGet安装UglyToad.PdfPig,然后使用以下代码:

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

using (var doc = PdfDocument.Open("target.pdf"))
{
    var page = doc.GetPage(1);
    // 定义目标区域(PDF坐标以左下角为原点)
    var targetRegion = new PdfRectangle(150, 300, 600, 500);
    // 筛选区域内的字符并拼接
    string extractedText = string.Join("", page.Letters
        .Where(letter => targetRegion.Contains(letter.BoundingBox))
        .Select(letter => letter.Value));
}

注意事项

  • PDF的坐标系统以左下角为原点,定义区域时要确认坐标的准确性,避免提取范围错误。
  • 若PDF是扫描件生成的图片PDF,上述方法无效,需先做OCR识别(可结合Tesseract库)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:17:07