当前位置: 首页 > news >正文

为Claude的分析内容做准备:提取PDF页面内容的简易应用程序

由于Claude虽然可以分析整个文件,但是对文件的大小以及字数是有限制的,为了将pdf文件分批传入Claude人工智能分析和总结文章内容,才有了这篇博客:
在本篇博客中,我们将介绍一个基于 wxPython 和 PyMuPDF 库编写的简易的 PDF 页面内容提取应用程序。该应用程序允许用户选择一个 PDF 文件,并指定起始页和结束页,然后提取这些页面之间的文本内容并显示在应用程序窗口中。
C:\pythoncode\new\pdfbeginendcontent.py
在这里插入图片描述

环境配置

在开始之前,请确保已经安装了以下两个库:

  • wxPython:用于创建 GUI 窗口和交互界面。
  • PyMuPDF:用于解析和提取 PDF 文件的内容。

你可以使用以下命令来安装这两个库:

pip install wxPython PyMuPDF

代码实现

下面是完整的 Python 代码实现:

import wx
import fitz
import wx.lib.masked as maskedclass MyFrame(wx.Frame):def __init__(self):super().__init__(None, title="提取PDF页面内容", size=(400, 300))panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)select_button = wx.Button(panel, label="选择PDF文件")select_button.Bind(wx.EVT_BUTTON, self.on_select_pdf)vbox.Add(select_button, proportion=0, flag=wx.ALIGN_CENTER | wx.ALL, border=10)page_label = wx.StaticText(panel, label="开始页码:")vbox.Add(page_label, proportion=0, flag=wx.LEFT, border=10)self.start_page_input = wx.TextCtrl(panel)vbox.Add(self.start_page_input, proportion=0, flag=wx.EXPAND | wx.ALL, border=10)page_label2 = wx.StaticText(panel, label="结束页码:")vbox.Add(page_label2, proportion=0, flag=wx.LEFT, border=10)self.end_page_input = wx.TextCtrl(panel)vbox.Add(self.end_page_input, proportion=0, flag=wx.EXPAND | wx.ALL, border=10)extract_button = wx.Button(panel, label="提取内容")extract_button.Bind(wx.EVT_BUTTON, self.on_extract_content)vbox.Add(extract_button, proportion=0, flag=wx.ALIGN_CENTER | wx.ALL, border=10)content_label = wx.StaticText(panel, label="内容:")vbox.Add(content_label, proportion=0, flag=wx.LEFT, border=10)self.content_text = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)vbox.Add(self.content_text, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)panel.SetSizer(vbox)def on_select_pdf(self, event):dialog = wx.FileDialog(self, message="选择PDF文件", wildcard="PDF files (*.pdf)|*.pdf", style=wx.FD_OPEN)if dialog.ShowModal() == wx.ID_OK:self.pdf_path = dialog.GetPath()dialog.Destroy()def on_extract_content(self, event):doc = fitz.open(self.pdf_path)start_page = int(self.start_page_input.GetValue())end_page = int(self.end_page_input.GetValue())if start_page < 1 or end_page > doc.page_count:wx.MessageBox("无效的页码!", "错误", wx.OK | wx.ICON_ERROR)return# for page_num in range(start_page - 1, end_page):#     page = doc.load_page(page_num)#     text = page.get_text()#     self.content_text.SetValue(text)content = ""  # 定义一个空字符串用于存储拼接的内容for page_num in range(start_page - 1, end_page):page = doc.load_page(page_num)text = page.get_text()content += text  # 将获取的文本添加到content中self.content_text.SetValue(content)  # 设置content_text的值为拼接后的字符串doc.close()if __name__ == '__main__':app = wx.App()frame = MyFrame()frame.Show()app.MainLoop()

运行应用程序

保存以上代码为 pdf_extractor.py 文件,然后在终端中运行以下命令启动应用程序:

python pdf_extractor.py

应用程序窗口将显示出来,你可以点击 “选择PDF文件” 按钮选择一个 PDF 文件,然后在起始页码和结束页码输入框中输入相应的页码,最后点击 “提取内容” 按钮,应用程序将提取选定页面范围内的文本内容,并将其显示在文本框中。

总结

本篇博客介绍了一个使用 wxPython 和 PyMuPDF 库编写的简易的 PDF 页面内容提取应用程序。通过该应用程序,用户可以方便地选择一个 PDF 文件,并指定起始页和结束页,提取这些页面之间的文本内容,并在应用程序窗口中显示。

http://www.lryc.cn/news/141526.html

相关文章:

  • js中作用域的理解?
  • 机器学习基础之《分类算法(4)—案例:预测facebook签到位置》
  • 【Java】反射 之 调用方法
  • Java——单例设计模式
  • Java实现excel表数据的批量存储(结合easyexcel插件)
  • Config:客户端连接服务器访问远程
  • 【KMP算法-代码随想录】
  • 【手写promise——基本功能、链式调用、promise.all、promise.race】
  • 计算机网络-笔记-第二章-物理层
  • 前端开发中的单伪标签清除和双伪标签清除
  • 云计算中的数据安全与隐私保护策略
  • MacOS软件安装包分享(附安装教程)
  • 【linux进程概念】
  • 直击成都国际车展:远航汽车多款车型登陆车展,打造完美驾乘体验
  • android nv21 转 yuv420sp
  • 使用Nacos与Spring Boot实现配置管理
  • 初识【类和对象】
  • 软考高级系统架构设计师系列论文八十六:论企业应用集成
  • HarmonyOS ArkUI 属性动画入门详解
  • 基于XGBoots预测A股大盘《上证指数》(代码+数据+一键可运行)
  • 5G NR:PRACH频域资源
  • 设计模式——组合模式
  • get属性是什么?有什么用?在什么场景用?get会被Json序列化?
  • 这可能是你看过最详细的 [八大排序算法]
  • docker的安装
  • 【业务功能篇75】微服务项目环境搭建docker-mysql-redisSpringCloudAlibaba
  • 学习笔记|认识数码管|控制原理|数码管实现0-9的显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第九集:数码管静态显示
  • CentOS 7/8 firewall 转发端口
  • mysql自动备份脚本
  • VUE笔记(九)vuex