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

如何在R中批量导入、处理多个PDF文件并合并为DataFrame?

批量导入并处理多个PDF文件生成目标DataFrame

步骤1:准备PDF链接列表

先把所有需要处理的PDF链接存入一个向量:

pdf_links <- c(
  "https://www.website.com/files/file1.pdf",
  "https://www.website.com/files/file2.pdf",
  "https://www.website.com/files/file3.pdf"
)

步骤2:封装单个PDF的处理逻辑

将你针对单个PDF的清洗流程封装成函数,方便批量调用:

process_single_pdf <- function(link) {
  # 读取PDF文本内容
  raw_text <- pdftools::pdf_text(link)
  df <- data.frame(text = raw_text)
  
  # 执行清洗处理
  df_clean <- df %>% 
    mutate(
      Date = stringr::str_sub(text[1], start = 10, end = 18),
      text = stringr::str_squish(text)
    ) %>% 
    tail(-2) %>% 
    group_by(Date) %>% 
    summarise(text = paste(text, collapse = " "))
  
  return(df_clean)
}

步骤3:批量处理并合并结果

推荐用purrr包的map_dfr函数,它会自动将每个PDF处理后的小DataFrame合并成最终的大DataFrame,代码更简洁高效:

library(dplyr)
library(purrr)
library(stringr)
library(pdftools)

# 批量处理所有PDF并合并结果
final_df <- map_dfr(pdf_links, process_single_pdf)

如果不习惯purrr,也可以用for循环实现:

library(dplyr)
library(stringr)
library(pdftools)

# 初始化空的结果DataFrame
final_df <- data.frame(Date = character(), text = character(), stringsAsFactors = FALSE)

# 遍历每个链接处理并合并
for(link in pdf_links) {
  processed_df <- process_single_pdf(link)
  final_df <- rbind(final_df, processed_df)
}

注意事项

  • 确保所有PDF的日期位置统一(即str_sub的start和end参数对所有文件有效),若存在格式不一致的PDF,需调整日期提取逻辑。
  • 处理大量PDF时,map_dfr的效率优于for循环。

内容的提问来源于stack exchange,提问作者Artur Vidaurre de Almeida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:35:39