工作中经常遇到需要批量检索pdf文档内容,比如SID期刊,每年给到我的都是一个没有任何说明的文件夹,里面一堆pdf。
python有个PyPDF2库,可以实现检索pdf的功能,PySimpleGUI库可以用来创建图形界面,于是果断选择在Win10中安装Python。
然后安装PyPDF2库和PySimpleGUI库
pip install PySimpleGUI
安装打包工具
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
Python源码如下:
import os
import PySimpleGUI as sg
import PyPDF2
def search_pdf_files(folder_path, keyword):
results = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(".pdf"):
pdf_path = os.path.join(root, file)
with open(pdf_path, 'rb') as f:
reader = PyPDF2.PdfReader(f)
text = ""
for page_number in range(len(reader.pages)):
text += reader.pages[page_number].extract_text()
if keyword in text:
results.append((file, "包含关键词"))
else:
results.append((file, "不包含关键词"))
return results
def main():
layout = [
[sg.Text('选择要查找的文件夹:'), sg.InputText(key='_FOLDER_'), sg.FolderBrowse()],
[sg.Text('输入待查找关键词:'), sg.InputText(key='_KEYWORD_')],
[sg.Button('开始搜索'), sg.Button('退出')]
]
window = sg.Window('PDF关键词搜索工具', layout)
while True:
event, values = window.read()
if event in (None, '退出'):
break
if event == '开始搜索':
folder_path = values['_FOLDER_']
keyword = values['_KEYWORD_']
if folder_path and keyword:
results = search_pdf_files(folder_path, keyword)
with open(os.path.expanduser('~/Desktop/search_results.txt'), 'w', encoding='utf-8') as f:
for result in results:
f.write(f"{result[0]}\t{result[1]}\n")
sg.popup('搜索完成!结果已保存在桌面。')
else:
sg.popup('请填写文件夹路径和关键词!')
window.close()
if __name__ == "__main__":
main()
保存成.py文档后,打包成.exe
pyinstaller --onefile searchpdf2.py
PyInstaller 将会开始打包你的脚本,并生成一个可执行文件(可能需要一些时间)。完成后,在同级目录下会生成一个 dist 文件夹,里面包含了打包好的可执行文件。