Python实现PDF—>Excel的自动批量转换(附完整代码)

Python实现PDF—>Excel的自动批量转换(附完整代码)

话不多说,先看效果!

需要转换的PDF:
在这里插入图片描述

转换后的Excel:
在这里插入图片描述

01、底层原理

PDF 到 Excel 的转换涉及不同文件格式之间的数据提取和重构。底层原理可以简单概括为以下几个步骤:

  1. PDF 文本提取: 首先,使用 Python 中的库(例如 PyPDF2、pdfplumber 或 PyMuPDF)来提取 PDF 文档中的文本内容。PDF 中的文本可以是可选的,有时可能是图像或矢量图形。

  2. 文本处理和解析: 提取的文本可能包含大量无关紧要的信息。在这一步,需要对文本进行处理和解析,以获取有用的信息。这可能涉及到正则表达式、文本分析或其他处理技术,具体取决于 PDF 的结构和内容。

  3. 数据结构化: 将提取的文本数据结构化为表格或类似的数据结构。这通常涉及到将文本转换为适当的数据类型(例如字符串、数字等)并组织成表格形式。

  4. Excel 创建和写入: 使用 Python 中的 pandas 或 openpyxl 等库,将结构化的数据写入 Excel 文件。这涉及到创建 Excel 工作簿、工作表,并将提取的数据逐行或逐列写入。

  5. 格式调整: 对生成的 Excel 文件进行格式调整,以确保数据的呈现方式符合期望。这可能包括设置列宽、行高,应用样式,或者执行其他格式化操作。

  6. 保存文件: 最后,保存生成的 Excel 文件。这可以通过库中提供的保存功能完成,确保生成的文件保存在指定的路径。

需要注意的是!!!

PDF 到 Excel 的转换过程可能会受到 PDF 文档的复杂性和结构的影响。一些 PDF 文件可能包含图像或表格,这可能需要额外的处理步骤,例如图像识别表格提取技术。因此,实际的转换过程可能需要根据具体的 PDF 文件结构进行调整。

02、代码实现

import os
import pdf2docx
import docx
from openpyxl import Workbook
from tkinter import Tk, filedialogdef convert_pdf_to_excel(pdf_path, excel_path):# 将PDF文件转换为Word文件docx_path = 'temp.docx'pdf2docx.parse(pdf_path, docx_path)# 打开Word文件doc = docx.Document(docx_path)# 创建Excel文件wb = Workbook()ws = wb.active# 遍历Word文档中的所有表格for table in doc.tables:# 复制表格到Excel中for row in table.rows:ws.append([cell.text for cell in row.cells])# 保存Excel文件wb.save(excel_path)def convert_folder_to_excel(folder_path):# 获取文件夹中的所有文件files = os.listdir(folder_path)# 遍历文件夹中的所有文件for file in files:# 判断文件是否为PDF文件if file.lower().endswith('.pdf'):# 构造PDF文件的路径pdf_path = os.path.join(folder_path, file)# 构造Excel文件的路径excel_path = os.path.splitext(pdf_path)[0] + '.xlsx'# 调用函数将PDF文件转换为Excel文件convert_pdf_to_excel(pdf_path, excel_path)# 创建Tkinter根窗口
root = Tk()
root.withdraw()# 使用文件夹选择对话框选择文件夹
folder_path = filedialog.askdirectory()# 调用函数将选择的文件夹中的所有PDF文件转换为Excel格式
convert_folder_to_excel(folder_path)
运行效果如下:

在这里插入图片描述

​ 运行上述代码后,弹出运行框,访问本地路径,选择指定文件夹(包含你要转换的PDF文件),并修改代码中的保存路径,即可将选择文件夹下的PDF文件全部转换为Excel文件,效果如本文开头所示!本次文件夹选择框使用tkinter库实现。

tkinter 是 Python 中用于创建图形用户界面 (GUI) 的标准库之一。它提供了一组用于创建窗口、按钮、文本框等 GUI 元素的工具,使开发者能够轻松构建用户友好的应用程序。以下是对 tkinter 的介绍以及与其他同类型库比较的优劣性:

03、tkinter 的特点:

  1. 内置库: tkinter 是 Python 的标准库之一,无需额外安装。它在大多数 Python 安装中都是默认包含的,因此开发者可以方便地使用而不用担心兼容性或依赖性问题。
  2. 跨平台性: tkinter 提供了对不同操作系统的支持,包括 Windows、Linux 和 macOS。这意味着开发者可以使用相同的代码在不同平台上运行他们的 GUI 应用程序。
  3. 简单易用: tkinter 的设计目标之一是简单易用。它的 API 相对来说较为直观,适合初学者入门。同时,对于一些简单的 GUI 应用,tkinter 提供了足够的功能。

与其他库的比较:

  1. PyQt/PySide:
    • 优势: PyQt 和 PySide 是另外两个流行的 GUI 库,它们提供了更丰富和灵活的功能。它们支持现代的 UI 设计,具有更好的外观和交互效果。
    • 劣势: 相对于 tkinterPyQt 和 PySide 的学习曲线可能更陡峭。此外,它们需要额外的安装步骤,不像 tkinter 那样内置于 Python。
  2. Kivy:
    • 优势: Kivy 是一个专注于移动应用和多点触控的 GUI 库。它支持多种平台,包括 Windows、Linux、macOS 和 Android。
    • 劣势: 相比于 tkinter,Kivy 的文档和社区支持相对较少。它的主要重点是移动应用,可能不适合所有类型的 GUI 应用。
  3. wxPython:
    • 优势: wxPython 提供了一个类似于 tkinter 的简单 API,但也支持更复杂的 GUI 需求。它的外观和感觉可以通过主题进行定制。
    • 劣势:tkinter 相比,wxPython 的文档可能相对较少。而且,与 tkinter 一样,它也需要额外的安装步骤。
总结:
  • tkinter 适用于简单的 GUI 应用,对于入门级开发者和小型项目而言是一个良好的选择。
  • PyQt、PySide、Kivy 和 wxPython 适用于需要更丰富功能、更现代外观或跨平台移动应用的项目,但可能需要更多学习和配置。
    选择 GUI 库的最佳方法取决于项目的需求、开发者的经验水平以及对不同库的个人偏好。

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

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

相关文章

Flask 菜品管理

common/libs/Helper.py getDictFilterField() 方法 用于在web/templates/food/index.html中展示菜品分类 如何能够通过food里面的cat_id获取分类信息呢?只能通过for循环,这样会很麻烦,所以定义了这个方法。 这个方法可以的查询返回结果…

linux 01 centos镜像下载,服务器,vmware模拟服务器

https://www.bilibili.com/video/BV1pz4y1D73n?p3&vd_source4ba64cb9b5f8c56f1545096dfddf8822 01.使用的版本 国内主要使用的版本是centos 02.centos镜像下载 这里的是centos7 一.阿里云官网地址:https://www.aliyun.com/ 二. -----【文档与社区】 —【…

CSND修改付费专栏价格

人工客服在个人中心右下角可以找到 客服回复已订阅专栏不支持修改价格

师傅带练|在线实习项目,提供实习证明

八大项目:某实习网站招聘信息采集与分析(Python数据采集与分析) 股票价格形态聚类与收益分析(Python金融分析) 某平台网络入侵用户自动识别(Python机器学习) 某平台广东省区采购数据分析&…

Vue项目nginx部署到线上,访问时加前缀解决方案

一、业务场景: 最近项目开发完了,需要部署一个测试版本和正式版本到线上,测试版本前面需要加一个dev前缀,遇到了一些坑,分享给大家 二、目前效果 三、具体实现步骤: (1)实现静态文…

构建安全可靠的系统:第二十一章到附录 A

第二十一章:建立安全和可靠性文化 原文:21. Building a Culture of Security and Reliability 译者:飞龙 协议:CC BY-NC-SA 4.0 作者:Heather Adkins 与 Peter Valchev,Felix Grbert,Ana Oprea…

艾思控AQMD6008BLS-TE无刷电机驱动使用笔记(配合STM32)

一、介绍 本驱动器使用的电机电流精确检测技术、有感无刷电机自测速、有感无刷电机转动位置检测、再生电流恒电流制动(或称刹车)技术和强大的PID调节技术可地控制电机平稳正反转、换向及制动,输出电流实时调控防止过流,精准控制电…

GC2804——GC2803 的升级,12V H桥驱动,8 个NPN达林顿晶体管,采用SSOP24 封装,应用于安防步进电机驱动产品上

GC2804 是 GC2803 的升级,在内部集成了 8 个 NPN 达林顿晶体管连接阵列的基础上,又集成了一路 12V 的 H 桥驱动。8 个 NPN 达林顿阵列用来驱动高压的步进电机,H 桥驱动可以用来驱动 IR-CUT,此芯片专用于安防摄像头系统方案。该 GC…

十分钟部署清华 ChatGLM-6B,实测效果超预期(Linux版)

前段时间,清华公布了中英双语对话模型 ChatGLM-6B,具有60亿的参数,初具问答和对话功能。 最!最!最重要的是它能够支持私有化部署,大部分实验室的服务器基本上都能跑起来。因为条件特殊,实验室网…

从零学Java 集合概述

Java 集合概述 文章目录 Java 集合概述1 什么是集合?2 Collection体系集合2.1 Collection父接口2.1.1 常用方法2.1.2 Iterator 接口 1 什么是集合? 概念:对象的容器,定义了对多个对象进行操作的常用方法;可实现数组的功能。 和数组区别&…

Logo设计神器:适合新手的简易操作软件,快速入门!

标志设计软件在品牌营销和企业识别中发挥着重要作用。本文将对10款知名标志设计软件进行横向评价,从不同维度评价其功能、易用性、创意和适用性,帮助您选择最适合您需求的标志设计软件。 1.即时设计 推荐指数:★★★★★ 即时设计是一款功…

springboot 2.7 oauth server配置源码走读一

springboot 2.7 oauth server配置源码走读 入口: 上述截图中的方法签名和OAuth2AuthorizationServerConfiguration类中的一个方法一样,只不过我们自己的配置类优先级比spring中的配置类低,算是配置覆盖,看下图所示: …

阿里云国际服务器设置安全防护程序

阿里云云服务器(ECS)提供弹性、安全、高性能、高性价比的虚拟云服务器,满足您的所有需求。立即在这里免费注册! 常见 Web 应用程序 请勿对 Web 服务控制台(如 WDCP、TOMCAT、Apache、Nginx、Jekins、PHPMyAdmin、Web…

JavaScript数组sort()对负数排序的陷阱

前言 想着好久没去力扣刷题了,刚好手上的需求也差不多了,就去看了看。看到一个难度级别为困难的题,看到这个题想着直接使用JS现成的方法,先concat再sort。再取中间值不就实现了吗。是不是你们也这么想,哈哈哈。 就是…

11 个 Python全栈开发工具集

前言 以下是专注于全栈开发不同方面的 Python 库;有些专注于 Web 应用程序开发,有些专注于后端,而另一些则两者兼而有之。 1. Taipy Taipy 是一个开源的 Python 库,用于构建生产就绪的应用程序前端和后端。 它旨在加快应用程序开发&#xf…

2024--Django平台开发-Django知识点(五)

day05 django知识点 今日概要: 中间件 【使用】【源码】cookie 【使用】【源码 - Django底层请求本质】session【使用】【源码 - 数据库请求周期中间件】 1.中间件 1.1 使用 编写类,在类型定义:process_request、process_view、process_…

【C++】STL 算法 ⑨ ( 预定义函数对象示例 - 将容器元素从大到小排序 | sort 排序算法 | greater<T> 预定义函数对象 )

文章目录 一、预定义函数对象示例 - 将容器元素从大到小排序1、sort 排序算法2、greater<T> 预定义函数对象 二、代码示例 - 预定义函数对象1、代码示例2、执行结果 一、预定义函数对象示例 - 将容器元素从大到小排序 1、sort 排序算法 C 标准模板库 ( STL , Standard Te…

离散数学-二元关系

4.1关系的概念 1)序偶及n元有序组 由两个个体x和y&#xff0c;按照一定顺序排序成的、有序数组称为有序偶或有序对、二元有序组&#xff0c; 记作<x&#xff0c;y>&#xff0c;其中x是第一分量&#xff0c;y是第二分量。 相等有序偶&#xff1a;第一分量和第二分量分…

游戏开发中,你的游戏图片压缩格式使用ASTC了吗

文章目录 ASTC原理&#xff1a;使用要求 ASTC&#xff08;Adaptive Scalable Texture Compression&#xff0c;自适应可伸缩纹理压缩&#xff09;是一种高级的纹理压缩技术&#xff0c;由ARM公司开发并推广。它在图形处理领域中因其出色的压缩效率和灵活性而受到广泛关注。 AST…

前端国际化之痛点(二):多包多库场景下联动多语言

前言 VoerkaI18n是一款非常优秀的前端国际化解决方案&#xff0c;其开发的出发点是为了解决现存多语言的一些痛点,接下来几篇文章将分别进行分析。 前端国际化之痛点(一)&#xff1a;让人头疼的词条Key前端国际化之痛点(二)&#xff1a;多包多库场景下联动多语言前端国际化之…