当前位置: 首页 > 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

http://www.lryc.cn/news/394676.html

相关文章:

  • 关于微信支付-商户平台:查询订单提示“查询失败:操作失败,请稍候重试”的分析
  • 掌握【Python异常处理】:打造健壮代码的现代编程指南
  • STM32点灯闪烁
  • Java-01-源码篇-04集合-05-SortedMap NavigableMap TreeMap
  • 拥抱 AGI:PieDataCS 引领云原生数据计算系统新范式
  • 开放式耳机哪个品牌好?开放式耳机推荐
  • kubernetes dashboard安装
  • 【MySQL】3.表的操作
  • 十一、作业
  • 关于C#在WPF中如何使用“抽屉”控件
  • 运维Tips | Ubuntu 24.04 安装配置 xrdp 远程桌面服务
  • ExcelVBA运用Excel的【条件格式】(二)
  • 肠道和大脑中犬尿氨酸代谢途径的紊乱
  • vue通过后台返回的数字显示不同的文字内容,多个内容用、隔开
  • Flume工具详解
  • vulhub-activemq(CVE-2016-3088)
  • 上海市计算机学会竞赛平台2024年6月月赛丙组超级奇数
  • 速盾:cdn业务优化
  • 重生奇迹mu的地图名
  • 【CSS】缩写属性gap
  • Perl 语言开发(八):子程序和模块
  • 自注意力机制和多头注意力机制区别
  • 数据结构第14节 加权图
  • 128陷阱(超详细)
  • STM32自己从零开始实操08:STM32主控原理图
  • Ubuntu20.04配置TurtleBot3 Waffle Pi远程控制
  • SaaS产品和独立部署型产品有什么区别,该怎么选择?
  • 【Linux】压缩命令——gzip,bzip2,xz
  • 【Java13】包
  • 从零到一:Python自动化测试的详细指南!