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

捕捉时刻:将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.lryc.cn/news/111316.html

相关文章:

  • 【基础类】—HTTP协议类
  • 【Qt高级】QThread与QTimer组合使用引出的信号槽执行在哪个线程的思考【2023.08.06】
  • 用于大型图像模型的 CNN 内核的最新内容
  • 索尼电视怎么完全关机
  • AI介绍——chat gpt/文心一言/claude/bard/星火大模型/bing AI
  • C++ 访问控制——公有继承、私有继承、保护继承
  • python性能调试
  • 738. 单调递增的数字
  • ssh安全远程管理
  • 外部排序算法总结
  • Redis安装以及配置隧道连接(centOs)
  • mysql二进制方式升级8.0.34
  • Kotlin单例代码实例
  • (7.28-8.3)【大数据新闻速递】《数字孪生工业软件白皮书》、《中国绿色算力发展研究报告》发布;华为ChatGPT要来了
  • TikTok海外抖音云控抢金币宝箱
  • H3C交换机如何通过MAC和IP查寻对应ARP信息
  • python进阶
  • spring boot 配置文件和属性注入
  • springboot+vue私人健身和教练预约管理系统 nt5mp
  • Kotlin基础(十一):反射和注解
  • DALLE2论文解读及实现(一)
  • RabbitMQ-API
  • 外边距实现居中的写法
  • 剑指 Offer 20. 表示数值的字符串 (正则 逐步分解)
  • 【深度学习】Transformer,Self-Attention,Multi-Head Attention
  • CADintosh X for mac CAD绘图软件2D CAD 程序 兼容 M1
  • 【读书笔记】《厌女》- [日]上野千鹤子 - 2010年出版
  • Android 从其他xml文件中获取View组件数据
  • java 数组的使用
  • Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)