捕捉时刻:将PDF文件中的图像提取为个性化的瑰宝(从pdf提取图像)

应用场景:

该功能的用途是从PDF文件中提取图像。这在以下情况下可能会很有用:

  1. 图片提取和转换:可能需要将PDF文件中的图像提取出来,并保存为单独的图像文件,以便在其他应用程序中使用或进行进一步处理。例如,可能需要将PDF中的图像用于网页、报告、演示文稿等。

  2. 图像分析和处理:如果需要对PDF文件中的图像进行深入分析、处理或计算机视觉任务,例如图像识别、目标检测、图像分类等,那么可以使用该功能提取图像,然后使用适当的图像处理库或算法进行进一步处理。

  3. 数据提取和挖掘:在某些情况下,PDF文件可能包含了一些以图像形式嵌入的文本或数据,例如扫描的文档或PDF中的图表、表格等。通过提取图像,可以尝试使用OCR(光学字符识别)技术来提取和分析这些图像中的文本或数据。

无论的具体用途是什么,该功能可以帮助从PDF文件中轻松提取图像,并将其保存为单独的图像文件,以便进一步使用和处理。

源代码:

import wx 
import fitz
import osclass PdfImageExtractor(wx.Frame):def __init__(self):wx.Frame.__init__(self, None, title='PDF Image Extractor')self.panel = wx.Panel(self)self.pdf_file_picker = wx.FilePickerCtrl(self.panel, message='选择PDF文件')self.output_dir_picker = wx.DirPickerCtrl(self.panel, message='选择输出目录')self.extract_button = wx.Button(self.panel, label='提取图片')self.extract_button.Bind(wx.EVT_BUTTON, self.onExtract)sizer = wx.BoxSizer(wx.VERTICAL)sizer.Add(self.pdf_file_picker, 0, wx.ALL|wx.CENTER, 5)sizer.Add(self.output_dir_picker, 0, wx.ALL|wx.CENTER, 5)sizer.Add(self.extract_button, 0, wx.ALL|wx.CENTER, 5)self.panel.SetSizer(sizer)self.progress = wx.Gauge(self.panel, range=100)sizer.Add(self.progress, 0, wx.ALL|wx.EXPAND, 5)self.Show()def onExtract(self, event):pdf_path = self.pdf_file_picker.GetPath()output_dir = self.output_dir_picker.GetPath()if not os.path.exists(output_dir):os.makedirs(output_dir)pdf = fitz.open(pdf_path)total_pages = len(pdf)for i, page in enumerate(pdf):images = page.get_images()if images:for image in images:xref = image[0]pix = fitz.Pixmap(pdf, xref)filename = os.path.join(output_dir, str(i) + '.png')pix.save(filename)pix = Noneself.progress.SetValue(int((i+1)/total_pages*100))pdf.close()self.progress.SetValue(100)if __name__ == '__main__':app = wx.App()frame = PdfImageExtractor()app.MainLoop()

源代码分析:

解释一下这个PDF图片提取的代码:

  1. 导入需要的库:

    • wx - 用于构建GUI的wxPython库
    • fitz - pyMuPDF库,用于读取和处理PDF
    • os - 用于文件系统操作如创建文件夹
  2. 定义PdfImageExtractor类,继承wx.Frame来创建窗口

    • 在__init__方法中初始化界面元素:文件选择框、文件夹选择框、按钮、进度条等
    • Show()显示窗口
  3. onExtract方法中含有主要逻辑

    • 获取选择的PDF路径和输出文件夹路径
    • 使用fitz打开PDF
    • 遍历每页:
      • 使用page.getImages()获取图片列表
      • 遍历图片列表
        • 从image对象直接提取PixMap
        • 保存为PNG文件,文件名为页码
    • 更新进度条
  4. 主函数中:

    • 创建wx App和PdfImageExtractor框架
    • 进入主循环显示界面

所以这是一个典型的wxPython+pyMuPDF处理PDF的程序结构:

  • wxPython提供界面
  • pyMuPDF处理PDF解析、图片提取等功能
  • onExtract方法中包含主要业务逻辑
  • __init__构建界面
  • 主函数显示窗口

通过文件选择器和按钮点击来触发图片提取的过程,图片保存到指定文件夹,进度条显示状态。

它使用了wxPython和PyMuPDF库来创建一个简单的图形界面,用于选择PDF文件和输出目录,并提取PDF中的图像。

只需要确保已安装了wxPython和PyMuPDF库,并运行上述代码即可。当点击"提取图片"按钮时,程序将读取所选PDF文件,并将每个页面中的图像提取为PNG文件,并保存到输出目录中。同时,进度条会显示提取进度。

请注意,为了使用PyMuPDF库,需要额外安装pymupdf模块。可以使用以下命令来安装它:

pip install pymupdf

结果如下: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/24045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

恺英网络宣布:与华为鸿蒙系统展开合作,将开发多款手游

8月5日消息,恺英网络宣布旗下子公司盛和网络参加了华为开发者大会(HDC.Together)游戏服务论坛,并在华为鸿蒙生态游戏先锋合作启动仪式上进行了亮相。恺英网络表示,将逐步在HarmonyOS上开发多款游戏,利用Har…

JVM 调优

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ JVM调优是一项重要的任务,可以提高Java应用程序的性能和稳定性。掌握JVM调优需要深入了解JVM的工作原理、参数和配置选项,以及历史JVM参数的调整和优…

WMS仓库管理系统研发规划说明

01 产品背景 1.1 背景概述 aboss WMS东南亚仓库管理系统是一个基于BigSeller系统的使用基础上,加上多仓库的解决思路,解决入库业务、出库业务、仓库调拨、库存调拨和虚仓管理等功能,对批次管理、物料对应、库存盘点、质检管理、虚仓管理和即…

MYSQL进阶-事务的基础知识

1.什么是数据库事务? 就是把好几个sql语句打包成一个整体执行,要么全部成功,要么全部失败!!! 事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执 行的结果必…

秋招算法备战第37天 | 738.单调递增的数字、968.监控二叉树、贪心算法总结

738. 单调递增的数字 - 力扣(LeetCode) 这个问题是关于找到一个小于或等于给定数字n的最大单调递增数字。 我们可以将数字n转换为字符数组,然后从左到右扫描,寻找第一个违反单调递增条件的位置。一旦找到这样的位置,…

安捷伦Agilent37719A通讯分析仪

安捷伦Agilent37719A通讯分析仪(131----4587---6435) ATM和POS测试能力达到2.5 Gb/s OC-48、OC-48c、OC-12、OC-12c、OC-3c、OC-3、OC-1、STS-3、STS-3c、STS-1测试 保护切换时间测量 所有同步速率高达2.5 Gb/s的串联有效负载 SONET环翻转的全面直通模式操作 全开销…

【笔记】第94期-冯永吉-《湖仓集一体关键技术解读》-大数据百家讲坛-厦大数据库实验室主办20221022

https://www.bilibili.com/video/BV1714y1j7AU/?spm_id_from333.337.search-card.all.click&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf

【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动,平动,转动4【数理知识】向量数乘,内积,外积,matlab代码实现5【数理知识】协…

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

EXCEL里数值列如何显示序号?如何重新排序? 怎么取得排序后的序号?

目录 1 EXCEL里如何显示序号? 2 如何重新排序? 3 怎么取得排序后的序号? 3.1 rank() 的序号可能不连续 3.2 方法2:SUMPRODUCT((C7>C$7:C$12)/COUNTIF(C$7:C$12,C$7:C$12))1 EXCEL里如何显示序号?如何重新排序…

MySQL数据库面试题:如何定位慢查询?

MySQL数据库面试题:如何定位慢查询? 面试官:MySQL中,如何定位慢查询? 候选人:嗯~,我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系…

Linux命令(59)之screen

linux命令之screen 1.screen介绍 linux命令screen是用来进行多窗口管理。 默认screen命令没有安装,安装命令(基于yum源):yum install -y screen 2.screen用法 screen [参数] screen参数 参数说明-r恢复离线的screen作业-ls显示所有的screen作业 3.…

echarts 饼图的label放置于labelLine引导线上方

一般的饼图基础配置后长这样。 想要实现将文本放置在引导线上方,效果长这样 const options {// ...series: [{label: {padding: [0, -40],},labelLine: {length: 10,length2: 50,},labelLayout: {verticalAlign: "bottom",dy: -10,},},], };label.padd…

Zip压缩包密码忘记了,怎么办?

Zip压缩包设置了密码,解压的时候就需要输入正确对密码才能顺利解压出文件,正常当我们解压文件或者删除密码的时候,虽然方法多,但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么,忘记了zip压缩包的密…

CNN成长路:从AlexNet到EfficientNet(01)

一、说明 在 10年的深度学习中,进步是多么迅速!早在 2012 年,Alexnet 在 ImageNet 上的准确率就达到了 63.3% 的 Top-1。现在,我们超过90%的EfficientNet架构和师生训练(teacher-student)。 如果我们在 Ima…

基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章

今次介绍一个应用程序单例唯一运行方案的代码。 我们知道,有些应用程序在操作系统中需要单例唯一运行,因为程序多开的话会对程序运行效果有影响,最基本的例子就是打印机,只能运行一个实例。这里将笔者单例运行的代码共享出来&…

实现5*5正方形网格x轴和y轴显示对应数值组件封装

实现5*5正方形网格x轴和y轴显示对应数值组件封装 需求&#xff1a;按5*5的正方形网格&#xff0c;根据目标数据的x和y轴值显示对应的文字&#xff0c;实现效果图如下&#xff1a;&#xff08;当前目标数值&#xff1a;x2&#xff0c;y2&#xff09; 代码如下&#xff1a; <…

分布式系统:ACID与CAP

ACID: 在计算机科学中&#xff0c;ACID是数据库事务的一组特性&#xff0c;旨在保证数据的有效性&#xff0c;即使在出现错误、断电和其他意外情况下也能保持数据的一致性。在数据库的上下文中&#xff0c;满足ACID属性的一系列数据库操作&#xff08;可以被视为对数据的单一逻…

【云原生】K8S二进制搭建三:高可用配置

目录 一、部署CoreDNS二、配置高可用三、配置负载均衡四、部署 Dashboard 一、部署CoreDNS 在所有 node 节点上操作 #上传 coredns.tar 到 /opt 目录中 cd /opt docker load -i coredns.tar在 master01 节点上操作 #上传 coredns.yaml 文件到 /opt/k8s 目录中&#xff0c;部…

servlet生命周期和初始化参数传递

servlet生命周期和初始化参数传递 1、servlet生命周期 只有第一次访问才会初始化&#xff0c;之后访问都只执行service中的。 除非tomcat关闭重新启动&#xff1a; 2、初始化参数传递