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

如何在iText中使用LocationTextExtractionStrategy提取标准化PDF指定区域文本?

使用iText7的LocationTextExtractionStrategy提取PDF指定区域文本

要从PDF指定区域提取文本,你可以结合FilteredTextEventListener和RegionTextFilter,对LocationTextExtractionStrategy进行区域过滤。以下是完整的实现方案:

核心实现步骤

  • 定义目标提取区域:用Rectangle类指定区域的坐标与尺寸(PDF坐标系以页面左下角为原点,单位为点)
  • 包装提取策略:通过FilteredTextEventListener将区域过滤器绑定到LocationTextExtractionStrategy
  • 执行区域文本提取:使用包装后的策略完成指定区域的文本提取

C#代码示例

using iText.Kernel.Pdf;
using iText.Kernel.Geom;
using iText.PdfParser;

// 初始化PDF文档
string path = "你的发票路径.pdf";
PdfReader pdfReader = new PdfReader(path);
PdfDocument pdfDoc = new PdfDocument(pdfReader);

for (int page = 1; page <= pdfDoc.GetNumberOfPages(); page++)
{
    // 1. 定义目标区域:参数依次为x左边界、y下边界、区域宽度、区域高度
    // 示例:提取页面中一个坐标(100, 600)开始、宽300高80的区域
    Rectangle targetRegion = new Rectangle(100, 600, 300, 80);
    
    // 2. 创建区域过滤器和带过滤的提取策略
    RegionTextFilter regionFilter = new RegionTextFilter(targetRegion);
    LocationTextExtractionStrategy baseStrategy = new LocationTextExtractionStrategy();
    FilteredTextEventListener filteredStrategy = new FilteredTextEventListener(baseStrategy, regionFilter);
    
    // 3. 提取指定区域的文本
    string extractedText = PdfTextExtractor.GetTextFromPage(pdfDoc.GetPage(page), filteredStrategy);
    
    // 输出提取结果
    Console.WriteLine($"第{page}页指定区域内容:{extractedText}");
}

// 释放资源
pdfDoc.Close();
pdfReader.Close();

关键说明

  • 坐标确认:若不清楚目标区域的坐标,可通过PDF阅读器的元素位置查看功能获取,或先提取全页文本,结合LocationTextExtractionStrategy输出的文本位置信息分析。
  • 多区域提取:如需提取多个字段,只需循环定义不同的Rectangle区域,重复执行提取逻辑即可。
  • 标准化发票适配:由于你的发票是标准化格式,只需提前确认每个数据字段对应的固定区域坐标,即可稳定提取目标数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:36:00