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

使用R的pdf_data处理双列PDF时文本拼接错误问题求助

双栏PDF文本提取错位修复方案

你此前的代码仅按照垂直坐标y分组拼接文本,双栏排版下同一y坐标会同时存在左、右两栏的内容,直接拼接就会出现顺序错误。

可以利用pdf_data返回的水平坐标x字段做分栏标记,先按栏排序再按行拼接即可适配双栏场景,完整代码如下:

library(pdftools)
library(tidyverse)

# 提取目标页内容,保留字体、坐标信息
page_data <- pdf_data("https://www.bankofengland.co.uk/-/media/boe/files/asset-purchase-facility/2009/2009-q1.pdf", 
                      font_info = T, opw = "", upw = "")[[3]] 

# 过滤字体+分栏拼接
page_data %>%
  filter(font_size >= 10) %>%
  # 设定分栏阈值,可根据PDF实际页面宽度调整,示例用300作为左右栏分界
  mutate(column = ifelse(x < 300, "left", "right")) %>%
  # 先按栏排序保证左栏全部在前,再按y降序保证内容从上到下排列
  arrange(column, desc(y)) %>%
  # 同一栏内同一垂直高度的文本拼接为一行
  group_by(column, y) %>%
  summarise(text = paste(text, collapse = " "), .groups = "drop") %>%
  # 输出最终文本
  pull(text)

调整说明:代码中的分栏阈值300可根据你处理的PDF实际尺寸修改,可先运行range(page_data$x)获取整页x坐标的范围,取中间值作为分界即可,常规A4幅面双栏PDF的分界通常在280-320区间。该方案完全兼容你现有基于字体大小过滤的逻辑,无需修改原有筛选规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:36:05