用python写一个批量提取PDF文档信息并保存为TXT格式的文件的窗口程序并显示内容文本框
时间: 2023-09-13 20:03:05 浏览: 22
以下是一个基于Python Tkinter库的窗口程序示例,用于批量提取PDF文档信息并保存为TXT格式的文件,并显示内容文本框。
```python
import tkinter as tk
from tkinter import filedialog
import PyPDF2
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.select_button = tk.Button(self, text="选择文件夹", command=self.select_folder)
self.select_button.pack(side="top")
self.file_list = tk.Listbox(self)
self.file_list.pack(side="top")
self.extract_button = tk.Button(self, text="提取信息", command=self.extract_info)
self.extract_button.pack(side="top")
self.quit_button = tk.Button(self, text="退出", command=self.master.destroy)
self.quit_button.pack(side="bottom")
self.text_area = tk.Text(self, height=20, width=80)
self.text_area.pack(side="bottom")
def select_folder(self):
self.file_list.delete(0, tk.END)
self.folder_path = filedialog.askdirectory()
for filename in os.listdir(self.folder_path):
if filename.endswith(".pdf"):
self.file_list.insert(tk.END, filename)
def extract_info(self):
for filename in self.file_list.get(0, tk.END):
pdf_file = open(os.path.join(self.folder_path, filename), 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
with open(os.path.join(self.folder_path, filename[:-4] + '.txt'), 'w') as txt_file:
for page_num in range(pdf_reader.numPages):
page_obj = pdf_reader.getPage(page_num)
txt_file.write(page_obj.extractText())
self.text_area.insert(tk.END, f"{filename} 提取完成\n")
root = tk.Tk()
app = Application(master=root)
app.mainloop()
```
程序界面包含一个选择文件夹的按钮、一个文件列表、一个提取信息的按钮、一个退出的按钮以及一个用于显示提取结果的文本框。
当用户点击选择文件夹按钮时,会打开文件对话框,用户可以选择需要批量处理的PDF文件所在的文件夹。然后程序会将文件夹中所有以.pdf结尾的文件名添加到文件列表中。
用户可以选择需要提取信息的PDF文件,然后点击提取信息的按钮,程序会逐个打开文件并提取文件中的文本信息,并将提取的文本保存为同名的.txt文件。提取过程完成后,程序会在文本框中显示每个文件的提取结果。
需要注意的是,PyPDF2库只支持提取纯文本信息,对于含有图像或表格等非文本内容的PDF文件,提取的结果可能不完整或不准确。