从零开始:手把手教你使用Python实现PDF到Excel的转换

61976fd74ea735d20aced920b17e33f0.jpeg来百 在日常工作和学习中,我们经常会遇到需要将PDF文件中的数据提取到Excel表格中的情况。可能是为了进行数据分析、报告生成或者其他目的。虽然手动复制粘贴是一种方法,但对于大量的数据来说,这种方式显然效率太低。幸运的是,Python提供了丰富的库和工具,使得这一过程自动化变得轻而易举。在本文中,我们将从零开始,手把手地教你如何使用Python实现PDF到Excel的转换。注意,以下方案只适用于文本类的PDF,如果是由图片生成的PDF,则需要经过OCR软件(如金某表格文字识别大师等)才能转为可编辑的excel。 5bbfa0fed47d6f084cd5347c8773134c.jpeg

### 准备工作

在开始之前,确保你已经安装了Python,并且安装了以下必要的库:

- `tabula-py`:用于从PDF中提取表格数据。

- `pandas`:用于处理和操作数据。

- `openpyxl`:用于创建和写入Excel文件。

你可以使用pip在命令行中安装这些库:

```bash

pip install tabula-py pandas openpyxl

```

### 步骤一:安装并导入必要的库

```python

import tabula

import pandas as pd

from openpyxl import Workbook

```

### 步骤二:从PDF中提取数据

使用`tabula.read_pdf()`函数从PDF中提取表格数据,并将其保存为DataFrame对象:

```python

# 从PDF中提取表格数据

pdf_file = "your_pdf_file.pdf"

df = tabula.read_pdf(pdf_file, pages="all")

```

edf54da49be3869243c4d96c0dca2b13.jpeg

### 步骤三:将数据写入Excel文件

创建一个Excel文件,并将DataFrame中的数据写入其中:

```python

# 创建Excel工作簿和工作表

wb = Workbook()

ws = wb.active

# 将DataFrame中的数据写入Excel工作表

for index, row in df.iterrows():

for col_index, value in enumerate(row):

ws.cell(row=index+1, column=col_index+1, value=str(value))

# 保存Excel文件

excel_file = "output.xlsx"

wb.save(excel_file)

```

### 完整代码

```python

import tabula

import pandas as pd

from openpyxl import Workbook

# 从PDF中提取表格数据

pdf_file = "your_pdf_file.pdf"

df = tabula.read_pdf(pdf_file, pages="all")

# 创建Excel工作簿和工作表

wb = Workbook()

ws = wb.active

# 将DataFrame中的数据写入Excel工作表

for index, row in df.iterrows():

for col_index, value in enumerate(row):

ws.cell(row=index+1, column=col_index+1, value=str(value))

# 保存Excel文件

excel_file = "output.xlsx"

wb.save(excel_file)

```

### 结论

通过以上步骤,我们成功地将PDF中的表格数据提取到了Excel文件中。这个过程可以轻松地应用于各种不同的情境,为我们节省了大量的时间和精力。当然,如果你的PDF文件结构复杂或者有特殊格式,你可能需要根据实际情况进行调整和优化。希望本文能够帮助到你,祝愿你在Python的世界里编程愉快!

#PDF转换器#

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

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

相关文章

【相机开发问题总结】曝光补偿ExposureCompensation未生效异常分析及解决

问题描述 做一款相机应用时,用户反馈相机预览界面太暗了,由于我们是嵌入式设备,没有手机那么高大上得闪光灯补光,因此只能考虑从软件层面提高界面亮度,还好找到了曝光补偿,但是开发过程中发现曝光补偿未生…

npm 错误,ERESOLVE unable to resolve dependency tree

npm 错误,ERESOLVE unable to resolve dependency tree 在命令中增加 --legacy-peer-dep 选项或者–force npm install --legacy-peer-depsnpm install --force

保存商品信息功能(VO)

文章目录 1.分析前端保存商品发布信息的json数据1.分析commoditylaunch.vue的submitSkus1.将后面的都注销,只保留查看数据的部分2.填写基本信息3.保存信息,得到json4.使用工具格式化一下 2.使用工具将json转为model3.根据业务修改vo,放到vo包…

「网络流浅谈」最大流的应用

更好的阅读体验 二分图匹配 考虑如何将二分图匹配问题,转化为流网络。设置 1 1 1 个汇点和源点,从源点向二分图一侧的每一个点连边,从另一侧向汇点连边,边权均为 1 1 1,二分图中的边也全部加入,权值设为…

【第1章】SpringBoot入门

文章目录 前言一、版本要求1. SpringBoot版本2. 其他2.1 System Requirements2.2 Servlet Containers2.3 GraalVM Native Images 3. 版本定型 二、新建工程1.IDEA创建 ( 推荐 ) \color{#00FF00}{(推荐)} (推荐)2. 官方创建 三、第一个SpringBoot程序1. 引入web2. 启动类3. 启动…

Edge浏览器:重新定义现代网页浏览

引言 - Edge的起源与重生 Edge浏览器,作为Microsoft Windows标志性的互联网窗口,源起于1995年的Internet Explorer。在网络发展的浪潮中,IE曾是无可争议的霸主,但随着技术革新与用户需求的演变,它面临的竞争日益激烈。…

python中的一些基础概念

在python中整型数据可以和浮点型数据相加,在python中字符串数据可以进行相加, 在python中整型数据可以和布尔类型进行算术运算。此时True当做1,False当做0但是这样的操作是没有意义的, python中只有字符串类型没有字符类型&…

用这8种方法在海外媒体推广发稿平台上获得突破-华媒舍

在今天的数字时代,海外媒体推广发稿平台已经成为了许多机构和个人宣传和推广的有效途径。如何在这些平台上获得突破并吸引更多的关注是一个关键问题。本文将介绍8种方法,帮助您在海外媒体推广发稿平台上实现突破。 1. 确定目标受众 在开始使用海外媒体推…

篮球论坛|基于SprinBoot+vue的篮球论坛系统(源码+数据库+文档)

篮球论坛系统 目录 基于SprinBootvue的篮球论坛系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff…

AI大模型探索之路-实战篇5: Open Interpreter开放代码解释器调研实践

系列篇章💥 AI大模型探索之路-实战篇4:DB-GPT数据应用开发框架调研实践 目录 系列篇章💥前言一、何为Open Interpreter?二、与 ChatGPT 的代码解释器比较三、 Open Interpreter的特性1、强大的本地计算能力2、丰富的功能3、高度的…

Go 实现程序优雅退出

在Go语言中,实现程序的优雅退出是一项重要的任务,特别是在涉及到HTTP服务器、gRPC服务器、以及其他后台工作的情况下。 在实际应用中,通常建议同时监听 os.Interrupt 和 syscall.SIGTERM,因为它们都是常见的终止信号&#xff0c…

Spark在YARN上运行图解(资源调度+任务调度)及案例

前提:已经安装了spark集群,可参考上篇文章搭建:http://t.csdnimg.cn/UXBOp 一、Spark集群配置YARN 1、增加hadoop 配置文件地址 vim spark-env.sh 增加export HADOOP_CONF_DIR/usr/local/soft/hadoop-3.1.1/etc/hadoop 2、关闭虚拟内存 cd …

K8s基本概念初识

K8S基本概念 Container(容器) 容器是一种便携式、轻量级的操作系统级虚拟化技术。它使用命名空间(namespaces)来隔离不同的软件运行环境,并通过镜像(images)自包含软件的运行环境。容器技术使…

【图像超分】论文精读:Residual Non-local Attention Networks for Image Restoration(RNAN)

第一次来请先看这篇文章:【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等) 文章目录 前言Abstract1 INTRODUCTION2 RELATED WORK3 RESIDU…

51单片机系统练习

头文件内容: /*-------------------------------------------------------------------------- AT89X52.HHeader file for the low voltage Flash Atmel AT89C52 and AT89LV52. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights …

JVM学习-虚拟机层面看String

String基本特性 String字符串,使用一对“”引起来表示 String s1 “lotus”; //字面量定义方式String s2 new String(“hello”) String声明为final,不可被继承String实现了Serializable接口,表示字符串支持序列化,实现Comparable接口&…

供应链金融模式学习资料

目录 产生背景 供应链金融的诞生 供应链金额的六大特征

结构安全预警?事前发现?人工观测VS自动化监测,谁更胜一筹?

人工检测是依靠目测检查或借助于便携式仪器测量得到的信息,但是随着整个行业的发展,传统的人工检测方法已经不能满足检测需求,从人工检测到自动化监测已是必然趋势。 a. 从检测方式看 人工检测需要耗费大量的精力,从摆放检测工具到…

Golang | Leetcode Golang题解之第110题平衡二叉树

题目: 题解: func isBalanced(root *TreeNode) bool {return height(root) > 0 }func height(root *TreeNode) int {if root nil {return 0}leftHeight : height(root.Left)rightHeight : height(root.Right)if leftHeight -1 || rightHeight -1 …