如何使用Python实现PDF中多关键词的同页共存检索
解决PDF中检索同时包含多个关键词的页面需求
Hey there!你要的是同时匹配两个关键词的PDF页面检索功能对吧?之前的多单词搜索应该是只要出现任意一个就返回,现在改成「必须同时存在」就好,我给你写个实用的实现方案,用pdfplumber库(这个库提取文本比PyPDF2更精准,不容易丢内容):
第一步:安装依赖
先确保你装了pdfplumber,没装的话跑这个命令:
pip install pdfplumber
第二步:完整实现代码
import pdfplumber def find_pages_with_both_keywords(pdf_path, keyword1, keyword2): matching_pages = [] # 打开PDF文件 with pdfplumber.open(pdf_path) as pdf: # 遍历每一页,注意pdfplumber的页码从0开始,实际页面要+1 for page_num, page in enumerate(pdf.pages): # 提取当前页面的文本 page_text = page.extract_text() # 跳过提取失败的页面(比如纯图片页) if not page_text: continue # 检查两个关键词是否都在页面文本里(不区分大小写的话可以转成lower) if keyword1.lower() in page_text.lower() and keyword2.lower() in page_text.lower(): # 把实际页码(从1开始)加入列表 matching_pages.append(page_num + 1) return matching_pages # 示例使用 if __name__ == "__main__": pdf_file = "your_document.pdf" # 替换成你的PDF路径 key1 = "Name" key2 = "Address" result = find_pages_with_both_keywords(pdf_file, key1, key2) if result: print(f"同时包含'{key1}'和'{key2}'的页面页码是:{result}") else: print(f"没有找到同时包含'{key1}'和'{key2}'的页面")
代码说明:
- 用
pdfplumber打开PDF,遍历每一页提取文本 - 加入了不区分大小写的匹配逻辑(如果需要严格区分大小写,去掉
.lower()就行) - 跳过了无法提取文本的页面(比如全是图片的页面,这类页面也不可能包含文本关键词)
- 返回的是实际页码(从1开始),符合日常阅读的页码习惯
可选调整:
如果需要支持更多关键词(比如同时匹配3个),只需要把判断条件改成:
all(keyword.lower() in page_text.lower() for keyword in [key1, key2, key3])
内容的提问来源于stack exchange,提问作者Jormasnizar J
相关产品推荐
相关产品推荐

