用Python轻松转换PDF为CSV

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

将PDF转换为CSV极大地提升了数据的实用价值。Python作为一种强大的编程语言,能够高效完成这一转换任务。本文将介绍如何利用Python实现从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. 释放资源。

代码示例

python 复制代码
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()

转换结果

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

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

申请免费License

相关推荐
平常心的技术小牛1 小时前
Qt-快速上手-QMenuBar
开发语言·qt
青 春 记 忆2 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
Python私教2 小时前
多个项目怎么安全合并?先适配,再切换
后端·python·架构
余额瞒着我当琳3 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
坐吃山猪4 小时前
WebClient内存配置解析
开发语言·springboot·webflux
北斗落凡尘4 小时前
LangGraph 入门实战(12)--使用MCP
后端·python·langchain
jdksjw4 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Zach_菠萝侠4 小时前
【DeepSeek Harness 研究】进化方向4:安全加固 思考、设计与实现
开发语言·安全·deepseek
Mike_Zhang5 小时前
使用python统计FreeSWITCH呼叫并发
python·freeswitch
SL-staff5 小时前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术