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

如何利用PHP PdfParser的坐标提取PDF特定数据?求相关函数或最优方案

PdfParser坐标提取文本及方案对比解答

一、PdfParser是否有直接通过坐标提取文本的函数?

Smalot/PdfParser没有内置的直接按XY坐标提取文本的函数,但可以借助getDataTm()返回的数组自行实现坐标筛选逻辑。

getDataTm()返回的数组中,每个元素包含文本内容及对应的排版坐标(索引4为X坐标,索引5为Y坐标)。你可以遍历该数组,根据目标坐标的合理范围筛选出对应文本,示例代码如下:

require_once __DIR__ . '/vendor/autoload.php';
use Smalot\PdfParser\Parser;

$parser = new Parser();
$pdf = $parser->parseFile('pdfFile.pdf');

// 获取第一页的文本及坐标数据
$data = $pdf->getPages()[0]->getDataTm();

// 目标坐标范围(允许小误差,规避PDF坐标精度问题)
$targetXMin = 255;
$targetXMax = 265;
$targetYMin = 115;
$targetYMax = 125;

$extractedText = '';
foreach ($data as $item) {
    $x = $item[4];
    $y = $item[5];
    // 判断坐标是否在目标范围内
    if ($x >= $targetXMin && $x <= $targetXMax && $y >= $targetYMin && $y <= $targetYMax) {
        $extractedText .= $item[0]; // item[0]对应文本内容
    }
}

echo $extractedText;

二、坐标提取方案 vs 正则匹配全文本,哪种更优?

两种方案各有优劣,需结合你的PDF场景选择:

  • 坐标提取方案优势:适配固定布局的PDF(如标准化表单、固定模板生成的文档),即便目标文本内容格式多变,只要位置固定就能精准提取,不会被其他相似文本干扰。
  • 坐标提取方案劣势:若PDF存在排版变动(如不同版本模板调整、页面缩放差异),坐标范围会失效,需重新校准;且需提前获取每个目标字段的坐标范围,前期准备工作量较大。
  • 正则匹配方案优势:适配文本格式固定但位置不固定的PDF,无需关注排版位置,只要文本符合正则规则即可匹配;无需校准坐标,实现成本较低。
  • 正则匹配方案劣势:若目标文本格式存在变体(如大小写、空格、特殊符号差异),正则表达式需频繁调整;若文档中存在相似格式的无关文本,易出现误匹配。

总结:如果你的PDF是固定模板生成、目标数据位置稳定,优先选坐标提取;如果文本格式有明确规律但位置可能变化,正则匹配更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:23:19