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

如何修改R脚本实现PDF关键词存在性统计(非频次)

解决PDF关键词检测结果格式问题的方案

核心思路

先批量读取所有PDF的文本内容,再针对每个关键词做存在性检查,最后将结果整理为PDF名称、关键词、存在状态的长格式结构,彻底避免冗余行与多列问题。

完整代码示例

# 加载所需包
library(pdftools)
library(stringr)
library(dplyr)
library(tidyr)

# 1. 配置参数
pdf_folder <- "./pdfs" # 替换为你的PDF文件夹路径
keywords <- c("数据分析", "机器学习", "R语言") # 替换为你的目标关键词列表

# 2. 获取所有PDF文件路径与名称
pdf_files <- list.files(path = pdf_folder, pattern = "\\.pdf$", full.names = TRUE)
pdf_names <- basename(pdf_files) # 提取纯PDF文件名(不含路径)

# 3. 定义关键词检测函数
check_keyword_in_pdf <- function(pdf_path, keyword) {
  # 读取PDF文本,处理读取失败的情况
  pdf_text <- tryCatch(
    pdf_text(pdf_path),
    error = function(e) {
      warning(paste("无法读取文件:", pdf_path))
      return("")
    }
  )
  # 合并所有页文本并检测关键词(忽略大小写)
  full_text <- str_c(pdf_text, collapse = " ")
  if_else(str_detect(full_text, regex(keyword, ignore_case = TRUE)), 1, 0)
}

# 4. 生成标准格式结果
result_df <- expand_grid(pdf_name = pdf_names, keyword = keywords) %>%
  mutate(
    exists = pmap_int(list(pdf_path = pdf_files[match(pdf_name, pdf_names)], keyword = keyword), check_keyword_in_pdf)
  )

# 查看最终结果
print(result_df)

关键修改说明

  • 用expand_grid生成所有PDF与关键词的组合,确保每个PDF-关键词对对应唯一一行,消除冗余
  • 通过pmap_int批量调用检测函数,精准匹配每个组合的存在状态
  • 提取basename(pdf_files)得到纯文件名,避免路径干扰结果列
  • 加入tryCatch捕获读取失败的PDF,防止脚本中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:45:55