用python写一个批量提取PDF文档信息并保存为TXT格式的文件的窗口程序

时间: 2023-09-13 19:03:05 浏览: 15
好的,我可以给你提供一个Python窗口程序,用于批量提取PDF文档中的信息并保存为TXT格式的文件。这个程序使用了PyQt5库来创建GUI窗口,并使用了PyPDF2库来读取PDF文件的内容。 代码如下: ```python import sys import os import PyPDF2 from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QFileDialog, QTextEdit, QGridLayout class PdfToTxt(QWidget): def __init__(self): super().__init__() self.title = 'PDF批量转TXT' self.left = 50 self.top = 50 self.width = 500 self.height = 400 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.input_label = QLabel('选择要转换的PDF文件夹:', self) self.input_label.move(20, 20) self.input_text = QTextEdit(self) self.input_text.setReadOnly(True) self.input_text.setGeometry(20, 50, 200, 30) self.input_btn = QPushButton('选择文件夹', self) self.input_btn.setGeometry(230, 50, 80, 30) self.input_btn.clicked.connect(self.select_folder) self.output_label = QLabel('选择保存TXT文件夹:', self) self.output_label.move(20, 100) self.output_text = QTextEdit(self) self.output_text.setReadOnly(True) self.output_text.setGeometry(20, 130, 200, 30) self.output_btn = QPushButton('选择文件夹', self) self.output_btn.setGeometry(230, 130, 80, 30) self.output_btn.clicked.connect(self.select_folder) self.run_btn = QPushButton('开始转换', self) self.run_btn.setGeometry(20, 200, 100, 30) self.run_btn.clicked.connect(self.convert) self.result_label = QLabel('', self) self.result_label.setGeometry(20, 240, 300, 30) self.grid = QGridLayout() self.setLayout(self.grid) self.show() def select_folder(self): folder = str(QFileDialog.getExistingDirectory(self, "选择文件夹")) sender = self.sender() if sender == self.input_btn: self.input_text.setText(folder) elif sender == self.output_btn: self.output_text.setText(folder) def convert(self): input_folder = self.input_text.toPlainText() output_folder = self.output_text.toPlainText() if not os.path.exists(input_folder): self.result_label.setText('PDF文件夹不存在!') return if not os.path.exists(output_folder): os.makedirs(output_folder) for file_name in os.listdir(input_folder): if file_name.endswith('.pdf'): input_file = os.path.join(input_folder, file_name) output_file = os.path.join(output_folder, os.path.splitext(file_name)[0] + '.txt') try: with open(output_file, 'w') as f: pdf_file = open(input_file, 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) num_pages = pdf_reader.getNumPages() for i in range(num_pages): page_obj = pdf_reader.getPage(i) f.write(page_obj.extractText()) pdf_file.close() self.result_label.setText(f'{file_name} 转换成功!') except: self.result_label.setText(f'{file_name} 转换失败!') if __name__ == '__main__': app = QApplication(sys.argv) ex = PdfToTxt() sys.exit(app.exec_()) ``` 这个程序的界面比较简单,有两个文本框和两个按钮。第一个文本框用于选择要转换的PDF文件夹,第二个文本框用于选择要保存TXT文件的文件夹。两个按钮分别对应选择文件夹的操作。还有一个“开始转换”按钮,用于开始转换PDF文件。 当用户点击“开始转换”按钮时,程序会遍历PDF文件夹中的所有PDF文件,并将它们转换为TXT文件保存到指定的TXT文件夹中。每个TXT文件的文件名与对应的PDF文件名相同,只是扩展名不同。 程序还会在界面上显示转换结果,如果某个PDF文件转换成功,会显示“文件名 转换成功!”;如果转换失败,会显示“文件名 转换失败!”。

相关推荐

以下是一个基于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文件,提取的结果可能不完整或不准确。
好的,我可以给你提供一个简单的Python程序,它可以通过Python的GUI库Tkinter实现一个窗口程序,用于批量提取PDF文档信息并保存为TXT格式的文件,并将转换内容显示在文本框中。 首先,我们需要安装两个Python库:PyPDF2和tkinter。你可以使用以下命令进行安装: pip install PyPDF2 pip install tkinter 然后,我们可以编写以下代码: python import os import PyPDF2 from tkinter import * from tkinter import filedialog def browse_files(): file_path = filedialog.askdirectory() if file_path: input_folder.set(file_path) output_folder.set(file_path) def convert_pdf_to_txt(): input_dir = input_folder.get() output_dir = output_folder.get() for root, dirs, files in os.walk(input_dir): for file in files: if file.endswith(".pdf"): pdf_file = os.path.join(root, file) with open(pdf_file, 'rb') as f: pdf_reader = PyPDF2.PdfFileReader(f) text = '' for page in range(pdf_reader.getNumPages()): text += pdf_reader.getPage(page).extractText() txt_file = os.path.splitext(pdf_file)[0] + ".txt" with open(txt_file, 'w', encoding='utf-8') as f: f.write(text) output_text.insert(END, "{} converted to {}\n".format(pdf_file, txt_file)) # 创建窗口 window = Tk() window.title("PDF转换器") # 输入文件夹选择 input_folder = StringVar() input_folder_label = Label(window, text="输入文件夹:") input_folder_label.grid(row=0, column=0, padx=5, pady=5) input_folder_entry = Entry(window, textvariable=input_folder) input_folder_entry.grid(row=0, column=1, padx=5, pady=5) input_folder_button = Button(window, text="浏览", command=browse_files) input_folder_button.grid(row=0, column=2, padx=5, pady=5) # 输出文件夹选择 output_folder = StringVar() output_folder_label = Label(window, text="输出文件夹:") output_folder_label.grid(row=1, column=0, padx=5, pady=5) output_folder_entry = Entry(window, textvariable=output_folder) output_folder_entry.grid(row=1, column=1, padx=5, pady=5) # 转换按钮 convert_button = Button(window, text="开始转换", command=convert_pdf_to_txt) convert_button.grid(row=2, column=1, padx=5, pady=5) # 转换结果 output_text = Text(window, height=10, width=50) output_text.grid(row=3, column=0, columnspan=3, padx=5, pady=5) # 运行窗口 window.mainloop() 运行程序后,你可以选择一个包含PDF文档的文件夹,程序将会自动遍历所有的PDF文档并将其转换为TXT格式保存在同一文件夹中。转换结果将会显示在程序窗口的文本框中。 注意:由于PDF文档的格式和内容各不相同,因此转换结果可能会有所不同,需要根据需要进行调整和处理。
这个任务比较复杂,需要使用一些第三方库来实现。我可以给你提供一个基本的框架,但是具体实现还需要根据你要提取的信息进行调整。 首先,我们需要安装 PyPDF2 和 tkinter 两个库。PyPDF2 用于处理 PDF 文件,tkinter 则用于创建 GUI 界面。 python pip install PyPDF2 python pip install tkinter 然后,我们可以创建一个简单的窗口程序,该程序包含一个按钮和一个文本框,用于选择 PDF 文件和显示提取的信息。 python import PyPDF2 import tkinter as tk from tkinter import filedialog class PDFInfoExtractor: def __init__(self, master): self.master = master self.master.title("PDF Info Extractor") self.filename_label = tk.Label(self.master, text="No file selected.") self.filename_label.pack() self.select_button = tk.Button(self.master, text="Select PDF", command=self.select_file) self.select_button.pack() self.info_text = tk.Text(self.master, height=20, width=80) self.info_text.pack() def select_file(self): filetypes = (("PDF files", "*.pdf"), ("All files", "*.*")) self.filename = filedialog.askopenfilename(filetypes=filetypes) if self.filename: self.filename_label.config(text=self.filename) self.extract_info() def extract_info(self): # TODO: Extract information from PDF file pass if __name__ == "__main__": root = tk.Tk() app = PDFInfoExtractor(root) root.mainloop() 在这段代码中,我们创建了一个名为 PDFInfoExtractor 的类,该类包含一个 init 方法,用于初始化窗口界面。在 init 方法中,我们创建了一个标签,一个按钮和一个文本框。当用户点击选择按钮时,我们调用 select_file 方法,该方法会弹出一个文件选择器,用户可以选择要提取信息的 PDF 文件。选择完毕后,我们更新标签的文本并调用 extract_info 方法,该方法用于从 PDF 文件中提取信息。 接下来,我们来实现 extract_info 方法。该方法需要使用 PyPDF2 库来读取 PDF 文件并提取信息。具体实现如下: python def extract_info(self): with open(self.filename, "rb") as f: pdf = PyPDF2.PdfFileReader(f) info = pdf.getDocumentInfo() text = f"Title: {info.title}\n" if info.title else "" text += f"Author: {info.author}\n" if info.author else "" text += f"Subject: {info.subject}\n" if info.subject else "" text += f"Keywords: {info.keywords}\n" if info.keywords else "" text += f"Creator: {info.creator}\n" if info.creator else "" text += f"Producer: {info.producer}\n" if info.producer else "" self.info_text.delete("1.0", "end") self.info_text.insert("end", text) 在这个方法中,我们首先打开 PDF 文件并使用 PyPDF2 库创建一个 PdfFileReader 对象。然后,我们使用 getDocumentInfo 方法获取 PDF 文件的元数据信息,并将其存储在一个字典中。最后,我们将这些信息格式化为字符串并显示在文本框中。 现在,我们已经完成了一个简单的 PDF 信息提取窗口程序。你可以根据自己的需求进行修改和扩展,比如添加更多的元数据信息或者提取文本内容等。
好的,你需要安装Python和PyQt5库,然后使用PyPDF2库来提取PDF文件的文本信息。以下是一个简单的示例代码: python import sys import PyPDF2 from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QTextEdit, QPushButton class PDFInfoExtractor(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('PDF Info Extractor') self.setGeometry(300, 300, 600, 400) # 创建控件 self.file_label = QLabel('PDF文件路径:', self) self.file_label.move(20, 20) self.file_input = QLineEdit(self) self.file_input.setGeometry(120, 20, 400, 30) self.output_label = QLabel('提取的文本信息:', self) self.output_label.move(20, 70) self.output_text = QTextEdit(self) self.output_text.setGeometry(20, 100, 560, 250) self.extract_button = QPushButton('提取信息', self) self.extract_button.setGeometry(500, 20, 80, 30) self.extract_button.clicked.connect(self.extract_info) self.show() def extract_info(self): # 提取PDF文件信息 pdf_file = self.file_input.text() pdf_reader = PyPDF2.PdfFileReader(pdf_file) text = '' for page_num in range(pdf_reader.getNumPages()): page = pdf_reader.getPage(page_num) text += page.extractText() # 显示提取的信息 self.output_text.setText(text) if __name__ == '__main__': app = QApplication(sys.argv) ex = PDFInfoExtractor() sys.exit(app.exec_()) 在这个窗口程序中,你需要输入PDF文件的路径,点击“提取信息”按钮后,程序将会提取PDF文件中所有页面的文本信息,并在窗口中显示提取的信息。
要提取PDF文档的信息,需要使用Python中的pdfminer库。以下是一个简单的程序设计,以提取PDF文档的标题和作者为例: python import io import pdfminer from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.pdfpage import PDFPage from pdfminer.layout import LAParams, LTTextBoxHorizontal # 打开PDF文件 with open('example.pdf', 'rb') as file: # 创建一个PDF解析器对象 parser = PDFParser(file) # 创建一个PDF文档对象 document = PDFDocument(parser) # 如果PDF文件已加密,则尝试解密它 if document.is_encrypted: document.decrypt('') # 创建PDF资源管理器对象 resource_manager = PDFResourceManager() # 创建一个参数分析器对象 laparams = LAParams() # 创建一个PDF设备对象 device = PDFPageAggregator(resource_manager, laparams=laparams) # 创建一个PDF页面解释器对象 interpreter = PDFPageInterpreter(resource_manager, device) # 遍历PDF页面 for page in PDFPage.create_pages(document): interpreter.process_page(page) # 获取页面布局 layout = device.get_result() # 遍历页面布局 for element in layout: # 如果元素是一个水平文本框 if isinstance(element, LTTextBoxHorizontal): # 获取元素文本 text = element.get_text().strip() # 如果文本以'Author:'开头 if text.startswith('Author:'): # 提取作者信息 author = text.split(':')[1].strip() # 如果文本以'Title:'开头 elif text.startswith('Title:'): # 提取标题信息 title = text.split(':')[1].strip() # 输出标题和作者信息 print('Title:', title) print('Author:', author) 这个程序会打开名为'example.pdf'的PDF文件,并提取其中的标题和作者信息。程序使用pdfminer库中的PDFParser、PDFDocument、PDFResourceManager、PDFPageInterpreter、PDFPage和LTTextBoxHorizontal等类来解析PDF文件和提取信息。程输出提取到的标题和作者信息。

最新推荐

Python批量提取PDF文件中文本的脚本

主要为大家详细介绍了Python批量提取PDF文件中文本的脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Python实现抓取HTML网页并以PDF文件形式保存的方法

主要介绍了Python实现抓取HTML网页并以PDF文件形式保存的方法,结合实例形式分析了PyPDF2模块的安装及Python抓取HTML页面并基于PyPDF2模块生成pdf文件的相关操作技巧,需要的朋友可以参考下

用Python下载一个网页保存为本地的HTML文件实例

今天小编就为大家分享一篇用Python下载一个网页保存为本地的HTML文件实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python批量读取文件名并写入txt文件中

主要为大家详细介绍了python批量读取文件名并写入txt文件中,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

python实现npy格式文件转换为txt文件操作

主要介绍了python实现npy格式文件转换为txt文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

哈希排序等相关算法知识

哈希排序等相关算法知识

混合神经编码调制的设计和训练方法

可在www.sciencedirect.com在线获取ScienceDirectICTExpress 8(2022)25www.elsevier.com/locate/icte混合神经编码调制:设计和训练方法Sung Hoon Lima,Jiyong Hana,Wonjong Noha,Yujae Songb,Sang-WoonJeonc,a大韩民国春川,翰林大学软件学院b韩国龟尾国立技术学院计算机软件工程系,邮编39177c大韩民国安山汉阳大学电子电气工程系接收日期:2021年9月30日;接收日期:2021年12月31日;接受日期:2022年1月30日2022年2月9日在线发布摘要提出了一种由内码和外码组成的混合编码调制方案。外码可以是任何标准的二进制具有有效软解码能力的线性码(例如,低密度奇偶校验(LDPC)码)。内部代码使用深度神经网络(DNN)设计,该深度神经网络获取信道编码比特并输出调制符号。为了训练DNN,我们建议使用损失函数,它是受广义互信息的启发。所得到的星座图被示出优于具有5G标准LDPC码的调制�

利用Pandas库进行数据分析与操作

# 1. 引言 ## 1.1 数据分析的重要性 数据分析在当今信息时代扮演着至关重要的角色。随着信息技术的快速发展和互联网的普及,数据量呈爆炸性增长,如何从海量的数据中提取有价值的信息并进行合理的分析,已成为企业和研究机构的一项重要任务。数据分析不仅可以帮助我们理解数据背后的趋势和规律,还可以为决策提供支持,推动业务发展。 ## 1.2 Pandas库简介 Pandas是Python编程语言中一个强大的数据分析工具库。它提供了高效的数据结构和数据分析功能,为数据处理和数据操作提供强大的支持。Pandas库是基于NumPy库开发的,可以与NumPy、Matplotlib等库结合使用,为数

帮我用C++和Qt写一个m*n的矩阵最小路径和可视化,要求用格子展示,最小路径采用其它的颜色标记

好的,以下是一个基本的实现: 1. 首先需要定义一个矩阵类来存储矩阵数据和计算最小路径和。 ```c++ class Matrix{ public: Matrix(int rows, int cols); ~Matrix(); void setValue(int i, int j, int value); //设置元素的值 int getValue(int i, int j); //获取元素的值 int getRows(); //获取行数 int getCols(); //获取列数 int getMinPathSum(); //获取最

基于android的视频播放器的设计与实现--大学毕业论文.doc

基于android的视频播放器的设计与实现--大学毕业论文.doc