用python写一个批量提取PDF文档信息并保存为TXT格式的文件的窗口程序并显示转换内容到文本框

时间: 2023-09-13 21:03:05 浏览: 20
好的,我可以给你提供一个简单的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文档的格式和内容各不相同,因此转换结果可能会有所不同,需要根据需要进行调整和处理。

相关推荐

以下是一个基于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窗口程序,用于批量提取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文件转换成功,会显示“文件名 转换成功!”;如果转换失败,会显示“文件名 转换失败!”。
这个任务比较复杂,需要使用一些第三方库来实现。我可以给你提供一个基本的框架,但是具体实现还需要根据你要提取的信息进行调整。 首先,我们需要安装 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文件和提取信息。程输出提取到的标题和作者信息。
### 回答1: import requests import osurl = input('请输入网站URL:')response = requests.get(url) # 获取网页内容 html = response.content # 获取文件名 filename = os.path.basename(url) # 设置编码格式 encoding = 'utf-8' # 写入文件 with open(filename + '.txt', 'w', encoding=encoding) as f: f.write(html) ### 回答2: 下面是一个示例的Python程序,用于爬取指定网站内容并按照指定编码保存到txt文档,并以指定网页内容作为文档名: python import requests def crawl_and_save(url, encoding): # 发送GET请求获取网页内容 response = requests.get(url) response.encoding = encoding # 提取网页内容 content = response.text # 从url中提取文档名 doc_name = url.split("/")[-1] # 保存到txt文档 with open(f"{doc_name}.txt", "w", encoding=encoding) as file: file.write(content) if __name__ == "__main__": # 指定需要爬取的网站url和编码 url = "https://example.com" encoding = "utf-8" # 调用函数进行爬取和保存 crawl_and_save(url, encoding) 上述程序通过使用requests模块发送GET请求来获取指定网站的内容。然后,使用指定的编码将内容保存到txt文档,并使用指定网页内容作为文档名。你可以根据自己的需求修改url和编码的值,将程序适配到你需要爬取的网站中。 ### 回答3: 以下是一个简单的Python程序,用于爬取指定网站的内容并将内容按照指定编码保存为txt文档,文档名为指定网页的内容: python import requests def save_to_txt(url, encoding): try: # 发送HTTP请求获取网页内容 response = requests.get(url) # 设置响应编码 response.encoding = encoding content = response.text # 获取指定网页内容作为文档名 doc_name = url.split("/")[-1] + ".txt" # 将内容保存到txt文档 with open(doc_name, "w", encoding=encoding) as file: file.write(content) print("爬取并保存成功!") except Exception as e: print("爬取并保存失败!", e) # 指定要爬取的网页链接 url = "https://example.com" # 指定编码格式 encoding = "utf-8" # 调用函数进行爬取和保存 save_to_txt(url, encoding) 请注意,上述代码仅用于爬取HTML文本内容,并不包括处理JavaScript渲染的情况。如果网页中包含动态内容,则需要使用更复杂的爬虫技术来获取完整的网页内容。

最新推荐

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

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

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

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

使用python批量读取word文档并整理关键信息到excel表格的实例

今天小编就为大家分享一篇使用python批量读取word文档并整理关键信息到excel表格的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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

python如何将两个txt文件内容合并

主要为大家详细介绍了python如何将两个txt文件内容合并,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

东莞证券-食品饮料行业疫后复苏之白酒行业专题报告:春意已近,静待花开-230426.pdf

东莞证券-食品饮料行业疫后复苏之白酒行业专题报告:春意已近,静待花开-230426

"处理多边形裁剪中的退化交点:计算机图形学中的重要算法问题"

计算机图形:X 2(2019)100007技术部分裁剪具有退化交点的简单多边形6Erich L Fostera, Kai Hormannb, Romeo Traian PopacaCarnegie Robotics,LLC,4501 Hat Field Street,Pittsburgh,PA 15201,USAb瑞士卢加诺6904,Via Giuseppe Bu 13,意大利Svizzera大学信息学院机械工程和机械学专业,布氏动力学专业,独立自主专业,布氏060042专业,罗马尼亚Ar ticlei n f o ab st ract文章历史记录:收到2019年2019年5月29日修订2019年6月3日接受在线提供2019年MSC:68U05保留字:多边形裁剪退化交点多边形裁剪在许多领域都是一种常见的操作,包括计算机图形学、CAD和GIS。因此,高效、通用的多边形裁剪算法具有重要意义。Greiner和Hormann(1998)提出了一种简单且时间效率高的算法,可以裁剪任意多边形,包括凹多边形和带孔的自相交多边形。然而,Greiner-Hormann算法不能正确处理退化相交的情况,而不需要扰�

动态规划与最大子数组和问题:如何高效解决序列中的最大子数组和

## 1. 引言 ### 1.1 背景介绍 动态规划是一种解决复杂问题的算法设计方法,它通过将问题分解成子问题,并解决每个子问题,从而逐步构建最优解。在计算机科学和算法领域,动态规划被广泛应用于优化问题的求解。 ### 1.2 动态规划在算法中的重要性 动态规划不仅仅是一种算法,更是一种解决问题的思维方式。它通过保存子问题的解,避免了重复计算,从而在时间和空间上实现了效率的提升。这种思想在很多经典算法问题中都发挥着关键作用,其中之一便是最大子数组和问题。 ### 1.3 最大子数组和问题的实际应用场景 最大子数组和问题是在一个数组中找到一个具有最大和的连续子数组的问题。这个问题在实际中有

devc++6.3大小写字母转换

根据提供的引用内容,无法直接回答关于 Dev-C++ 6.3 的大小写字母转换问题。Dev-C++ 是一个集成开发环境(IDE),用于编写和运行 C/C++ 程序。如果您想要实现大小写字母转换,可以使用 C++ 标准库中的 toupper() 和 tolower() 函数。这两个函数分别将字符转换为大写和小写形式。以下是一个简单的示例程序: ```c++ #include <iostream> #include <string> using namespace std; int main() { string str = "Hello, World!"; for (int

基于结构化情报分析系统的数据可视化研究毕业设计.doc

基于结构化情报分析系统的数据可视化研究毕业设计.doc