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

用Python轻松转换PDF为CSV

数据的可访问性和可操作性是数据管理的核心要素。PDF格式因其跨平台兼容性和版面固定性,在文档分享和打印方面表现出色,尤其适用于报表、调查结果等数据的存储。然而,PDF的非结构化特性限制了其在数据分析领域的应用。相比之下,CSV格式以其简单、通用且易于处理的特点,成为数据操作和分析的理想选择。
将PDF转换为CSV极大地提升了数据的实用价值。Python作为一种强大的编程语言,能够高效完成这一转换任务。本文将介绍如何利用Python实现从PDF到CSV的转换

文章目录

    • 将PDF表格数据转换为CSV文件

本文所使用的方法需要用到Spire.PDF for Python,PyPI:pip install Spire.PDF

将PDF表格数据转换为CSV文件

CSV作为一种结构化的通用表格文件,支持以简单的形式储存表格数据,但不支持复杂的格式设置以及复杂的表格信息。因此,我们在转换PDF文档为CSV文件时,通常只转换PDF文档中的表格为CSV文件。
库中提供了PdfTableExtractor类来处理PDF文档表格的提取操作,并且支持获取表格单个单元格的文本。利用这些类和方法,我们就可以实现从PDF表格到CSV文件的转换。
以下是操作步骤:

  1. 导入所需模块。
  2. 创建PdfDocument对象。
  3. PdfDocument.LoadFromFile()方法载入PDF文档。
  4. 创建PdfTableExtractor对象以处理表格提取操作。
  5. 循环PDF文档中的页面:
    • 使用PdfTableExtractor.ExtractTable()方法提取当前页面的表格为一个集合。
    • 遍历集合中的表格:
      • 获取表格行数和列数。
      • 遍历行、列:
        • 使用Utilities_PdfTable.GetText()方法获取单元格数据。
        • 将数据储存为列表。
    • 使用csv模块将表格数据写入CSV文件。
  6. 释放资源。

代码示例

from spire.pdf import PdfDocument, PdfTableExtractor
import csv# 创建一个 PdfDocument 实例
pdf = PdfDocument()# 加载 PDF 文档
pdf.LoadFromFile("示例.pdf")# 创建一个 PdfTableExtractor 实例
extractor = PdfTableExtractor(pdf)# 遍历 PDF 文档的每一页
for i in range(pdf.Pages.Count):# 提取当前页的表格tables = extractor.ExtractTable(i)# 遍历表格for j in range(len(tables)):table = tables[j]tableData = []# 获取行数和列数rowCount = table.GetRowCount()colCount = table.GetColumnCount()# 遍历行和列for row in range(rowCount):rowData = []for col in range(colCount):# 获取单元格的文本text = table.GetText(row, col)text = text.replace("\n", "").replace("\r", "")rowData.append(text)tableData.append(rowData)# 将表格数据保存到 CSV 文件with open(f"output/Tables/Table{i+1}_{j+1}.csv", "w", newline="", encoding="utf-8") as csvFile:writer = csv.writer(csvFile)writer.writerows(tableData)# 释放资源
pdf.Dispose()

转换结果
Python转换PDF为CSV

本文演示了如何使用Spire.PDF for Python将PDF表格转换为CSV文件。

更多PDF文档处理技巧请前往Spire.PDF for Python教程查看。

申请免费License

相关文章:

用Python轻松转换PDF为CSV

数据的可访问性和可操作性是数据管理的核心要素。PDF格式因其跨平台兼容性和版面固定性,在文档分享和打印方面表现出色,尤其适用于报表、调查结果等数据的存储。然而,PDF的非结构化特性限制了其在数据分析领域的应用。相比之下,CS…...

关于微信支付-商户平台:查询订单提示“查询失败:操作失败,请稍候重试”的分析

目录 引子 分析 应对 小结 引子 在开发和实施微信 JSAPI 支付的应用后,我们遇到了一些问题,订单的状态更新不正常,当然我们首先需要从自身寻找原因和完善解决问题的办法和方案。在支付的过程中,客户会给我们一些反馈&#xf…...

掌握【Python异常处理】:打造健壮代码的现代编程指南

目录 ​编辑 1. 什么是异常? 知识点 示例 小李的理解 2. 常见的内置异常类型 知识点 示例 小李的理解 3. 异常机制的意义 知识点 示例 小李的理解 4. 如何处理异常 知识点 示例 小李的理解 5. 抛出异常 知识点 示例 小李的理解 6. Python内置…...

STM32点灯闪烁

stm32c8t6引脚图 开发板引脚图 GPIO端口的每个位可以由软件分别配置成 多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 配置GPIO端口步骤:开启时钟->使用结构体设置输出模式…...

Java-01-源码篇-04集合-05-SortedMap NavigableMap TreeMap

目录 一,SortedMap 二,NavigableMap 三,TreeMap 3.1 TreeMap 继承结构 3.2 TreeMap 属性 3.3 TreeMap 构造器 3.4 TreeMap 内部类 3.4.1 Values 3.4.2 KeySet 3.4.3 EntrySet 3.4.5 相关集合迭代器 3.4.5.1 PrivateEntryIterato…...

拥抱 AGI:PieDataCS 引领云原生数据计算系统新范式

自2023年后,人工智能技术进入了一个更为成熟和广泛应用的阶段,人工通用智能(AGI)这一概念也成为了科技界和产业界热议的焦点。本文将结合 AGI 时代背景,从架构设计到落地实践,详细介绍拓数派云原生数据计算…...

开放式耳机哪个品牌好?开放式耳机推荐

开放式耳机因其独特的设计,提供了更自然的听音体验和更好的环境声音感知,尤其适合长时间佩戴和户外运动使用,下面来推荐几款表现出色的开放式耳机: 悠律ringbuds pro凝声环(499元):凭借时尚潮流…...

kubernetes dashboard安装

1.查看符合自己版本的kubernetes Dashboard 比如我使用的是1.23.0版本 https://github.com/kubernetes/dashboard/releases?page5 对应版本 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml修改对应的yaml,…...

【MySQL】3.表的操作

表的操作 一.创建表二.查看表三.修改表四.删除表 一.创建表 create table [if not exists] tb_name( field1 datatype comment 说明, field2 datatype, field3 datatype) charsetutf8 collateutf8_gerenal_ci engineInnoDB//表的编码集,校验集如果不指定&#xff…...

十一、作业

1.从大到小输出 写代码将三个整数数按从大到小输出。 void Swap(int* px, int* py) {int tmp *px;*px *py;*py tmp;} int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);int n 0;if (a<b){Swap(&a, &b);}if (a &l…...

关于C#在WPF中如何使用“抽屉”控件

关于C#在WPF中如何使用“抽屉”控件 1.前提准备2.XAML代码3.对应的C#代码4.显示效果 1.前提准备 需要引用MaterialDesign控件库&#xff0c;关于如何引用&#xff0c;请参照文章——关于C#如何引用MaterialDesign控件库 2.XAML代码 <Window x:Class"MaterialDesign_…...

运维Tips | Ubuntu 24.04 安装配置 xrdp 远程桌面服务

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] Ubuntu 24.04 Desktop 安装配置 xrdp 远程桌面服务 描述&#xff1a;Xrdp是一个微软远程桌面协议&#xff08;RDP&#xff09;的开源实现&#xff0c;它允许我们通过图形界面控制远程系统。这里使…...

ExcelVBA运用Excel的【条件格式】(二)

ExcelVBA运用Excel的【条件格式】&#xff08;二&#xff09; 前面知识点回顾 1. 访问 FormatConditions 集合 Range.FormatConditions 2. 添加条件格式 FormatConditions.Add 方法 语法 表达式。添加 (类型、 运算符、 Expression1、 Expression2) 3. 修改或删除条件…...

肠道和大脑中犬尿氨酸代谢途径的紊乱

新出现的证据表明&#xff0c;肠道微生物群可能与宿主大脑相互作用&#xff0c;并在神经精神疾病的发病机制中发挥关键作用。然而&#xff0c;抑郁症中微生物-肠-脑轴相互作用的潜在机制仍不清楚。在这项研究中&#xff0c;建立了慢性约束应激 (CRS) 的小鼠模型&#xff0c;以研…...

vue通过后台返回的数字显示不同的文字内容,多个内容用、隔开

后台返回的数据 显示效果&#xff1a; html&#xff1a; <el-table-columnalign"center"label"使用过的小程序"width"124"v-if"activeTab 0"><template #default"scope"><divv-for"(item, index) in s…...

Flume工具详解

Flume是一个由Apache提供的开源日志收集系统&#xff0c;最初由Cloudera贡献。它以其高可用性、高可靠性和分布式特性而著称&#xff0c;被广泛应用于海量日志的采集、聚合和传输。以下是对Flume工具的详细解析&#xff1a; 一、概述 功能定位&#xff1a;Flume主要用于收集、…...

vulhub-activemq(CVE-2016-3088)

在 Apache ActiveMQ 5.12.x~5.13.x 版本中&#xff0c;默认关闭了 fileserver 这个应用&#xff08;不过&#xff0c;可以在conf/jetty.xml 中开启&#xff09;&#xff1b;在 5.14.0 版本后&#xff0c;彻底删除了 fileserver 应用。【所以在渗透测试过程中要确定好 ActiveMQ …...

上海市计算机学会竞赛平台2024年6月月赛丙组超级奇数

题目描述 如果一个十进制数的所有数字都是奇数&#xff0c;则称之为超级奇数&#xff0c;例如 35733573 就是一个超级奇数&#xff0c;而 3141531415 不是。按照从小到大排序&#xff0c;前几名的超级奇数为 1,3,5,7,9,11,13,15,17,⋯1,3,5,7,9,11,13,15,17,⋯ 给定一个超级…...

速盾:cdn业务优化

CDN&#xff08;Content Delivery Network&#xff09;是一种基于互联网的分布式网络架构&#xff0c;旨在提供更快速、可靠的内容传输服务。它通过将内容分发至多个节点&#xff0c;使用户可以从离他们更近的节点获取内容&#xff0c;从而提高访问速度和用户体验。 然而&…...

重生奇迹mu的地图名

地图之一&#xff1a;勇者大陆 勇者大陆地处奇迹大陆中央。终年阴雨连绵&#xff0c;气候潮湿闷热。植物由充满黑暗阴森气氛的草地所构成。这里的NPC数量是所有地图中最多的。因为地步交通要冲&#xff0c;所以也是玩家聚集最多的地方。 这里是剑士、魔法师、魔剑士和圣导师初…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...