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

news2024/11/16 21:45:30

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, filedialog

def 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.coloradmin.cn/o/1372228.html

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

相关文章

抖音小程序+乔拓云教育系统:让课程销售飞起来

随着数字媒体的迅猛发展,抖音已经成为了一个广受欢迎的社交平台。而当抖音遇上教育,一场全新的学习革命就此展开。特别是借助乔拓云教育系统,培训班可以轻松地开启抖音营销之旅,将优质课程带给更多潜在学员。 乔拓云教育系统作为一…

【Spring Boot】SpringMVC入门

1.什么是springMVC MVC就是把一个项目分成了三部分: MVC是一种思想。Spring进行了实现,称为Spring MVC。SpringBoot是创建SpringMVC项目的一种方式而已。springMVC对于MVC做出了一些改变: 当前阶段,MVC的概念又发生了一些变化,后端开发人员不涉及前端页…

【python基础】一文搞懂:Python 中轻量型数据库 SQLite3 的用法

一文搞懂:Python 中轻量型数据库 SQLite3 的用法 文章目录 一文搞懂:Python 中轻量型数据库 SQLite3 的用法1 引言2 SQLite3 简介3 基本步骤4 示例代码4.1 连接数据库4.2 创建表4.3 插入数据4.4 查询数据4.5 更新/删除数据4.6 关闭数据库连接 5 实例演示…

作业--day44

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面。如果账号和密码不匹配&#xf…

Win10下python3和python2同时安装并解决pip共存问题

特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似。 使用python开发,环境有Python2和 python3 两种,有时候需要两种环境切换使用,下面提供详细教程一份。 1、下载…

MySQL之导入、导出远程备份

一、Navicat工具导入、导出 1.1 导入 第一步: 右键,点击运行SQL文件 第二步: 选择要运行的SQL,点击开始 第三步: 关闭即可 1.2 导出 第一步: 右键选择,导出向导 第二步: 选择SQL脚…

QT开发 QT5.15.2安装(换源极速安装)

▬▬▬▬▬▶QT安装◀▬▬▬▬▬ 🎄QT下载器获取 点我下载(●’◡’●) 🎄下载器放自定义文件夹(路径全英文) 文件名改短好操作 🎄在自定路径唤出cmd窗口 🎄输入命令开始换源安装 ins.exe --mirror https://mirrors.ustc.ed…

空间转录组与单细胞转录组联合分析——MIA,代码分享(Nature Biotechnology :)

​ 原文:Integrating microarray-based spatial transcriptomics and single-cell RNA-seq reveals tissue architecture in pancreatic ductal adenocarcinomas | Nature Biotechnology 研究者采用 MIA 联合 scRNAseq 和 ST 数据,分析原发性胰腺导管腺癌…

SCS模型(径流曲线法)概述

目录 1.介绍:2.计算公式:参考文献:小结: 1.介绍: SCS模型(径流曲线法)是由美国农业部水土保持局(Soil Conservation Service) 基于经验提出,最初用于预测在农业用地小型流域降雨所累…

秒变办公达人,只因用了这5款在线协同文档app!

在日常工作中,我们不可避免地需要处理各种文档,有时你可能会为如何高效地管理这些文档而感到烦恼,或是不知道如何挑选合适的在线文档工具? 不用担心!在这篇文章中,我们将介绍5个好用的在线文档工具App&…

Gamebryo游戏引擎源码(gb2.6+gb3.2+gb4.0+中文手册)

Gamebryo游戏引擎源码,是源码,是源码,是源码。喜欢研究游戏的可以下载研究研究,代码写得很好,有很多借得参考的地方。 Gamebryo游戏引擎源码(gb2.6gb3.2gb4.0中文手册) 下载地址: 链…

linux --proc文件夹学习笔记

内容在飞书文档: Docshttps://r0dhfl3ujy9.feishu.cn/docx/Xe2wd23MToSmGrxUm9kcVHrPn7g?fromfrom_copylink

CentOS 6 制作openssh 9.6 p1 rpm包(含ssh-copy-id、openssl) —— 筑梦之路

openssh 9.6 需要openssl 1.1.1 以上版本,因此需要先安装openssl 1.1.1,可阅读这篇升级更新openssl版本到1.1.1w CentOS 6 制作openssl 1.1.1w rpm包 —— 筑梦之路-CSDN博客 CentOS 6很久都停止更新和支持,关于此版本的写的不多&#xff…

OpenHarmony之编译构建使用指导

目录结构 /build # 编译构建主目录├── __pycache__ ├── build_scripts/ # 编译相关的python脚本 ├── common/ ├── config/ # 编译相关的配置项 ├─…

vue3 ts defineProps、defineEmits、defineExpose、defineOptions、defineSlots

文章目录 前言一、defineProps二、defineEmits三、defineExpose四、defineOptions( Vue3.3 新特性)五、defineSlots(Vue3.3 新特性) 前言 本章我们来讲解vue3 ts 中 defineProps、defineEmits、defineExpose、defineOptions、defineSlots的使用及作用。 …

多机TCP通讯之hello world(C++)

文章目录 TCP是什么准备工作CMakeLists.txt服务端代码客户端代码参考 TCP是什么 TCP(传输控制协议)是一种在计算机网络中广泛使用的协议,它提供了可靠的、面向连接的数据传输服务。TCP 是 OSI 模型中的传输层协议,它确保了数据的…

RPA财务机器人在厦门市海沧医院财务管理流程优化汇总的应用RPA全球生态 2024-01-05 17:27 发表于河北

目前国内外研究人员对于RPA机器人在财务管理流程优化领域中的应用研究层出不穷,但现有研究成果主要集中在财务业务单一领域,缺乏财务管理整体流程一体化管控的研究。RPA机器人的功能绝非单一的财务业务处理,无论从自身技术发展,或…

php处理高并发下单减库存解决

目录 一: 问题描述 二:可能方案 三:加锁方案 一: 问题描述 处理高并发下的库存减少是电商系统中的一大挑战。当多个用户同时尝试下单购买同一商品时,如何确保库存的准确性,同时保证系统的高可用性&#…

(23)Linux的软硬连接

前言:上一章我们讲解了 inode,为文件系统收了尾,这几章我们充分地讲解完了文件系统的知识点,现在我们开始开始学习软硬链接了。 软硬链接 1、Linux 下的快捷方式:软链接 上一章我们介绍完了 inode ,我们…

SpringCloudAlibaba微服务架构实战派上下册技术交流!

另外我的新书RocketMQ消息中间件实战派上下册,在京东已经上架啦,目前都是5折,非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…