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

如何在R中使用pdftools按块而非按行读取PDF文件?

多列PDF读取混乱的解决方法

方法1:通过文本坐标拆分列(pdftools进阶用法)

pdftools的*pdf_data()*函数能提取每个文本块的坐标信息,这是区分多列的核心:

  1. 读取PDF的结构化数据:
library(pdftools)
# 替换为你的PDF路径
pdf_content <- pdf_data("multicolumn_file.pdf")
  1. 按x坐标划分列边界:
    以两列PDF为例,先计算x坐标的分界点(比如中位数):
# 取第一页数据演示,多页可循环处理
page_data <- pdf_content[[1]]
# 计算两列的x轴分界值
split_x <- median(page_data$x)
# 拆分左右列
left_col <- page_data[page_data$x < split_x, ]
right_col <- page_data[page_data$x >= split_x, ]
  1. 按y坐标排序拼接文本:
    同一行的文本y坐标相近,按y分组拼接即可还原整行内容:
library(dplyr)
# 处理左列
left_text <- left_col %>%
  group_by(y) %>%
  arrange(x) %>%
  summarise(content = paste(text, collapse = " ")) %>%
  pull(content)

# 处理右列
right_text <- right_col %>%
  group_by(y) %>%
  arrange(x) %>%
  summarise(content = paste(text, collapse = " ")) %>%
  pull(content)

# 合并为规整的两列数据框
result <- data.frame(left_column = left_text, right_column = right_text)

方法2:用tabulizer自动识别列结构

如果PDF布局规整,tabulizer包可以直接提取结构化的列数据:

library(tabulizer)
# 提取所有页面的列数据,输出为数据框
col_data <- extract_tables("multicolumn_file.pdf", output = "data.frame")
# 合并多页结果
final_result <- do.call(rbind, col_data)

注意:该包依赖Java环境,需提前安装JRE。

方法3:预处理PDF转为单列

若上述方法效果不佳,可先将多列PDF转为单列布局(比如用本地PDF编辑工具或pdftk命令行工具调整),再用pdftools读取,避免列混乱问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:33:13