如何用R批量将PDF转为文本并整理至DataFrame?
批量PDF文本提取并存入DataFrame解决方案
原代码问题分析
你的代码存在几个关键问题:
pdftools::pdf_text()必须传入具体的文件路径参数,你未指定该参数sapply(files, x)用法错误,sapply的第一个参数是待处理向量,第二个是处理函数,你完全搞反了参数逻辑- 函数定义的参数
x未被正确调用
正确实现代码
先确保安装并加载所需工具包:
# 首次运行需安装包 install.packages(c("pdftools", "dplyr")) # 加载包 library(pdftools) library(dplyr)
执行批量提取并生成DataFrame:
# 获取目标路径下的所有PDF文件(用正则精准匹配后缀) files <- list.files(path = "my path", pattern = "\\.pdf$", full.names = TRUE) # 定义PDF文本提取函数 extract_pdf_text <- function(file_path) { # 合并PDF所有页面的文本内容 full_text <- pdf_text(file_path) %>% paste(collapse = "\n") # 返回文件名与对应文本的列表 list(file_name = basename(file_path), text_content = full_text) } # 批量处理所有PDF文件 pdf_processed <- lapply(files, extract_pdf_text) # 转换为结构化DataFrame pdf_df <- bind_rows(pdf_processed)
提取特定语句扩展
如果需要从文本中筛选特定语句,可在函数中加入匹配逻辑,比如提取包含指定关键词的句子:
extract_target_content <- function(file_path) { full_text <- pdf_text(file_path) %>% paste(collapse = "\n") # 示例:提取包含"目标关键词"的完整句子(可根据需求调整正则规则) target_content <- stringr::str_extract_all(full_text, ".*目标关键词.*\\.")[[1]] %>% paste(collapse = "\n") list(file_name = basename(file_path), target_content = target_content) } # 批量提取特定语句并生成DataFrame target_df <- lapply(files, extract_target_content) %>% bind_rows()
内容的提问来源于stack exchange,提问作者user19192947
相关产品推荐
相关产品推荐

