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

pdf2json与qpdf的PDF字段坐标差异及转换方法咨询

PDF坐标系统差异与转换问题解答

问题背景

执行pdf2json -f test.pdf后,"yyy"字段的坐标/尺寸为:

"x": 11.924,
"y": 7.027,
"w": 9.375,
"h": 1.292

执行qpdf test.pdf --qdf test.qdf后,对应内容的/Rect值为:

/Rect [
  190.784
  658.903
  340.784
  680.903
]

同时页面尺寸存在差异:qdf与pdfbox -box test.pdf返回612x792,pdf2json返回38.25x49.5(可通过乘/除以16转换),但字段坐标无法用固定乘数直接转换。

坐标不一致的核心原因

  • 坐标原点与方向差异:PDF标准的/Rect采用左下角为原点,y轴向上;pdf2json采用左上角为原点,y轴向下,这是坐标数值差异的核心来源。
  • 单位换算逻辑不同:PDF默认单位是点(pt),1pt=1/72英寸;pdf2json将页面尺寸先转换为英寸后再做4.5倍缩放(612pt=8.5英寸,8.5×4.5=38.25;792pt=11英寸,11×4.5=49.5),整体对应16倍的单位缩放(612÷16=38.25)。

相互转换方法

PDF Rect → pdf2json坐标

PDF的/Rect格式为[x_left, y_bottom, x_right, y_top],转换步骤:

  1. 单位转换:pdf2json单位 = PDF点值 ÷ 16
  2. y轴方向调整:pdf2json的y值 = 页面总高度(pdf2json单位,即49.5) - 转换后的PDF y_top值
  3. 宽高计算:
    • pdf2json w = (x_right - x_left) ÷ 16
    • pdf2json h = (y_top - y_bottom) ÷ 16

用测试数据验证:

  • PDF y_top=680.903pt → 转换后≈42.556,pdf2json y=49.5-42.556≈6.944(与测试值7.027的误差来自浮点计算和文本框精准裁剪)
  • PDF x_left=190.784pt → 转换后=11.924,与测试x值完全一致
  • 宽度(340.784-190.784)÷16=9.375,与测试w值一致

pdf2json → PDF Rect坐标

步骤反向操作:

  1. 单位转换:PDF点值 = pdf2json值 × 16
  2. y轴方向调整:PDF y_top = 页面总高度(792pt) - (pdf2json y值 × 16)
  3. 计算Rect各值:
    • PDF x_left = pdf2json x值 ×16
    • PDF x_right = x_left + (pdf2json w值 ×16)
    • PDF y_bottom = y_top - (pdf2json h值 ×16)

坐标关联总结

两者完全关联,之前出现无规律比值是因为混淆了不同轴的对应关系——你拿PDF的y_bottom和pdf2json的x对比、PDF的x_left和pdf2json的y对比,自然得到无意义的数值。本质差异仅在于y轴原点方向和16倍单位缩放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:39:59