如何在R语言中提取PDF文件中的项目符号文本?
提取PDF中项目符号列表信息的R解决方案
核心思路
针对PDF文本中显示为<U+25CF>或•的项目符号,用正则表达式匹配所有以这些符号开头的行,提取内容后整理成目标格式,最终生成包含所有文档摘要的数据框。
完整代码
# 加载所需包(去重避免重复加载) library(dplyr) library(stringr) library(pdftools) # 设置工作路径 setwd("C:/documents/R_Studio") # 获取所有PDF文件(转义点号,避免匹配任意字符) files <- list.files(pattern = "\\.pdf$") # 定义提取项目符号内容的函数 extract_bullet_points <- function(pdf_text) { # 将单页文本合并为整个文档的完整字符串 full_text <- paste(pdf_text, collapse = "\n") # 匹配所有以<U+25CF>或•开头的行,提取符号后的内容 bullet_items <- str_extract_all(full_text, "(?:<U\\+25CF>|•)\\s*(.*)")[[1]] # 提取捕获组内容并去除前后多余空格 clean_items <- str_trim(str_extract(bullet_items, "(?<=\\s).*")) # 将内容用句号连接成目标格式 paste(clean_items, collapse = ". ") } # 遍历所有PDF文件提取信息 bullet_summary <- lapply(files, function(file) { pdf_content <- pdf_text(file) list( filename = file, summary = extract_bullet_points(pdf_content) ) }) # 转换为标准数据框 summary_df <- bind_rows(bullet_summary) # 查看结果 print(summary_df)
代码说明
- 合并文本:
pdf_text返回按页拆分的文本向量,用paste(collapse = "\n")合并成完整文档内容,避免跨页项目符号被拆分。 - 正则匹配:
(?:<U\+25CF>|•)匹配两种项目符号形式(非捕获组),\\s*(.*)匹配符号后的空格和内容,str_extract_all提取所有符合条件的行。 - 内容清理:
str_trim去除文本前后冗余空格,保证内容整洁。 - 格式整理:用
paste(collapse = ". ")将多个项目合并成连续字符串,匹配需求格式。 - 生成数据框:通过
lapply遍历所有文件,最后用bind_rows转换为数据框,方便后续分析。
内容的提问来源于stack exchange,提问作者Jose David
相关产品推荐
相关产品推荐

