如何用R统计多份PDF特定关键词频次并生成表格(代码失效求助)
多PDF文件关键词频次统计实现方案
你需要统计多份PDF中特定关键词的出现次数,并生成指定格式的统计表格,之前的代码没实现核心的关键词统计功能,下面是可直接用的Python解决方案:
准备工作
先安装需要的依赖库:
pip install PyPDF2 pandas
完整代码实现
import PyPDF2 import pandas as pd import os # 替换成你要统计的目标关键词 TARGET_KEYWORD = "目标关键词" # 替换成你的PDF文件存放目录 PDF_FOLDER = "./pdfs" # 公司与ID的映射,根据你的需求修改 COMPANY_ID_MAP = {"Colgate": 1, "Pfizer": 2} # 初始化存储统计数据的列表 stats_data = [] # 遍历目录下所有PDF文件 for file_name in os.listdir(PDF_FOLDER): if not file_name.endswith(".pdf"): continue # 从文件名提取公司名和年份(假设文件名格式为「公司名_年份.pdf」,比如Colgate_2011.pdf) file_info = file_name.replace(".pdf", "").split("_") company_name = file_info[0] year = int(file_info[1]) company_id = COMPANY_ID_MAP.get(company_name, 0) # 未知公司ID设为0 # 读取PDF并提取文本 pdf_path = os.path.join(PDF_FOLDER, file_name) with open(pdf_path, "rb") as f: pdf_reader = PyPDF2.PdfReader(f) full_text = "" for page in pdf_reader.pages: page_text = page.extract_text() if page_text: full_text += page_text # 统计关键词出现次数(不区分大小写) keyword_count = full_text.lower().count(TARGET_KEYWORD.lower()) # 将数据加入列表 stats_data.append({ "Company name": company_name, "Year": year, "ID": company_id, "Keyword count": keyword_count }) # 生成表格并输出 result_df = pd.DataFrame(stats_data) # 按公司名和年份排序,和你要的格式对齐 result_df = result_df.sort_values(by=["Company name", "Year"]) # 打印表格 print(result_df.to_string(index=False)) # 保存为CSV文件(方便后续用Excel打开) result_df.to_csv("keyword_statistics.csv", index=False)
注意事项
- 文件名格式:如果你的PDF文件名不是「公司名_年份.pdf」,需要修改提取公司名和年份的逻辑,或者提前做一个映射表(比如单独建个CSV,记录每个PDF对应的公司、年份、ID),再读取这个映射表来匹配数据。
- 扫描版PDF:如果是扫描生成的PDF(图片格式),PyPDF2无法提取文本,需要额外安装
pytesseract和Pillow,用OCR技术提取文本后再统计。 - 多关键词统计:如果要统计多个关键词,把
TARGET_KEYWORD改成列表,循环统计每个关键词的次数,再在表格里增加对应列即可。
内容的提问来源于stack exchange,提问作者user21808967
相关产品推荐
相关产品推荐

