从零开始:手把手教你使用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,一经查实,立即删除!

相关文章

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曾是无可争议的霸主,但随着技术革新与用户需求的演变,它面临的竞争日益激烈。…

用这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、高度的…

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 …

结构安全预警?事前发现?人工观测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 …

最热门好用骨传导耳机推荐!!分享六大实用选购技巧助你挑选!

耳机基本是每人人手一台,不管是在地铁上还是在公交上,都可以看到很多人戴着耳机度过空余的时光,甚至现在人们在耳机的选择方面更加偏向于骨传导耳机,开放耳道的奇特设计在户外佩戴的时候可以更好的感知到周围的环境音,…

基于多模态MRI中深层语义和边缘信息融合的脑肿瘤分割 | 文献速递-深度学习肿瘤自动分割

Title 题目 Brain tumor segmentation based on the fusion of deep semantics and edge information in multimodal MRI 基于多模态MRI中深层语义和边缘信息融合的脑肿瘤分割 01 文献速递介绍 医学图像分割是医学图像处理领域的重要课题。其中,脑肿瘤分割旨在…

基础5 探索JAVA图形编程桌面:字符操作组件详解

在繁华都市的一个角落,卧龙和凤雏相聚在他们常去的台球厅。灯光洒在绿色的台球桌上,彩色的台球整齐地排列着,仿佛在等待着一场激烈的角逐。 卧龙轻轻地拿起球杆,微微瞄准,然后用力一击,白球带着一股强大的力…

C#_库的引用

类库的引用 还可以自己引用类库:解决方案-添加-新建项目 主程序 using System; using System.Windows.Forms; using Tools;namespace ConsoleApp2 {class Program{static void Main(string[] args){//Console.WriteLine("helloword");// Form form ne…

[力扣]——70.爬楼梯

题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 本题较为简单,主要用到递归思想 int fun(int n,int memo[]) {if(memo[n]!-1) //如果备忘录中已经有记录了…

MVCC相关

文章目录 前情要点基于什么引擎并发事务产生的问题不可重复读和幻读区别Next-Key Lock的示例解决并发事务采用的隔离级别当前读(Current Read)快照读(Snapshot Read)参考 MVCC定义表里面的隐藏字段由db_roll_ptr串成的版本链ReadView可见性算法mvcc的可见性算法为什么要以提交的…

Linux之单机项目部署

1、虚拟机(VMware)创建Linux系统 1.1、创建虚拟机 1.2、配置虚拟机IOS映射文件 1.3、虚拟机内部相关配置 等待加载即可,加载完后会弹出图形化界面,如图: 注意:一般我们做为管理员使用ROOT账号来操作&#x…

数据结构和算法基础(二)

树和二叉树——树的基本概念 树和二叉树——树转二叉树 树和二叉树——查找二叉树(二叉排序树) 树和二叉树——构造霍夫曼树(最优) 树和二叉树——线索二叉树 树和二叉树——平衡二叉树 图——基本概念 1、有向图 2、无向图 3、完…