Python 提取PDF表格数据并保存到TXT文本或Excel文件

目录

安装Python库

Python提取PDF表格数据并保存到文本文档

Python提取PDF表格数据并保存到Excel文档


PDF文件常用于存储和共享各种类型的文档,这些文档可能包括大量的数据表格。通过提取这些PDF表格数据,我们可以将其导入到Excel、数据库或统计软件等数据分析工具中,从而开展深入的数据分析并生成报告。与手动输入大量数据相比,采用编程方式提取表格数据能够帮助我们避免出错并节省大量时间。这篇文章将介绍如何使用Python提取PDF表格的数据,主要包括以下内容:

  • Python提取PDF表格数据并保存到TXT文本文档
  • Python提取PDF表格数据并保存到Excel文档

安装Python库

要提取PDF表格数据并保存到文本文档和Excel文档,可以使用Spire.PDF for PythonSpire.XLS for Python库。Spire.PDF for Python主要用于提取PDF表格数据,Spire.XLS for Python主要用于将提取的表格数据写入Excel文档。

你可以通过以下pip命令来安装它们:

pip install Spire.Xls
pip install Spire.Pdf

Python提取PDF表格数据并保存到文本文档

提取PDF文档中的表格数据主要包括以下三个关键步骤:

  • 检索表格

使用PdfTableExtractor.ExtractTable(pageIndex)方法从PDF页面中提取表格。这一步能够快速定位和获取PDF文档中的表格。需要注意的是,Spire.PDF for Python通过表格的边框来识别表格,因此要确保你的PDF文档中的表格是有边框的。

  • 读取数据

对于获取的每个表格,使用PdfTable.GetText(rowIndex, columnIndex)方法来读取表格单元格中的文本数据。这样可以将表格中的内容逐一提取出来。

  • 保存数据

将提取的表格数据写入到文本文件中。

代码如下:

from spire.pdf.common import *
from spire.pdf import *

# 创建PdfDocument对象
doc = PdfDocument()
# 加载PDF文件
doc.LoadFromFile("表格1.pdf")

# 创建一个用于存储表格数据的列表
builder = []

# 创建一个PdfTableExtractor对象
extractor = PdfTableExtractor(doc)

# 循环遍历页面
for pageIndex in range(doc.Pages.Count):
    # 从当前页面中提取表格
    tableList = extractor.ExtractTable(pageIndex)

    # 判断表格列表是否为空
    if tableList is not None and len(tableList) > 0:
        # 循环遍历表格
        for table in tableList:
            # 获取当前表格的行数和列数
            row = table.GetRowCount()
            column = table.GetColumnCount()

            # 循环遍历行和列
            for i in range(row):
                for j in range(column):
                    # 获取当前单元格中的文本
                    text = table.GetText(i, j)

                    # 将文本添加到列表中
                    builder.append(text + " ")
                builder.append("\n")
            builder.append("\n")

# 将列表中的内容写入到文本文件中
with open("表格.txt", "w", encoding="utf-8") as file:
    file.write("".join(builder))

Python 读取PDF表格数据并保存到TXT文本文件

Python提取PDF表格数据并保存到Excel文档

除了将提取的数据保存到文本文件外,你还可以通过Spire.XLS for Python提供的Worksheet.Range[rowIndex, columnIndex].Value属性将它们写入到Excel文档。关键步骤如下:

  • 检索表格

使用PdfTableExtractor.ExtractTable(pageIndex)方法从PDF页面中提取表格。这一步能够快速定位和获取PDF文档中的表格。需要注意的是,Spire.PDF for Python通过表格的边框来识别表格,因此要确保你的PDF文档中的表格是有边框的。

  • 读取数据

对于获取的每个表格,使用PdfTable.GetText(rowIndex, columnIndex)方法来读取表格单元格中的文本数据。这样可以将表格中的内容逐一提取出来。

  • 写入数据到Excel工作表

使用Worksheet.Range[rowIndex, columnIndex].Value属性将将提取的表格数据写入到Excel工作表中。

具体代码如下:

from spire.pdf import *
from spire.xls import *

# 创建PdfDocument对象
doc = PdfDocument()

# 加载PDF文件
doc.LoadFromFile("表格1.pdf")

# 创建Workbook对象
workbook = Workbook()
# 清除默认工作表
workbook.Worksheets.Clear()

# 创建PdfTableExtractor对象
extractor = PdfTableExtractor(doc)

sheetNumber = 1

# 循环遍历页面
for pageIndex in range(doc.Pages.Count):
    # 从当前页面提取表格
    tableList = extractor.ExtractTable(pageIndex)

    # 判断表格列表是否为空
    if tableList is not None and len(tableList) > 0:
        # 循环遍历表格
        for table in tableList:
            # 为当前表格添加一个工作表
            sheet = workbook.Worksheets.Add(f"Sheet{sheetNumber}")

            # 获取表格的行数和列数
            row = table.GetRowCount()
            column = table.GetColumnCount()

            # 循环遍历行和列
            for i in range(row):
                for j in range(column):
                    # 获取当前单元格中的文本
                    text = table.GetText(i, j)

                    # 将文本写入工作表的指定单元格
                    sheet.Range[i + 1, j + 1].Value = text

            sheetNumber += 1

# 保存到文件
workbook.SaveToFile("提取PDF表格数据到Excel.xlsx", ExcelVersion.Version2013)

Python 读取PDF表格数据并保存到Excel表格

本文介绍了如何使用Python读取PDF表格数据,并将读取的数据保存到TXT文本文件和Excel表格。除了TXT文本和Excel格式以外,你可以自行将获取的数据写入到其他格式,如CSV、Word表格等。如需了解Spire.PDF for Python和Spire.XLS for Python的更多功能,请自行查看Spire.PDF for Python文档Spire.XLS for Python文档

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现这个功能的具体步骤如下: 1. 安装Pythonpdfminer库,用于解析PDF文件。可以使用pip命令安装:`pip install pdfminer` 2. 使用pdfminer库解析PDF文件,获取财务报表的附注表格数据。可以使用pdfminer中的PDFPageAggregator和PDFResourceManager类来实现。 3. 使用pandas库将附注表格数据转换为DataFrame格式,并将每个附注表格数据保存到一个单独的Excel工作表中。 4. 将所有附注表格数据合并到一个Excel文件中。 下面是实现代码的一个示例: ```python import os import pandas as pd from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage # 定义一个函数,用于从PDF文件提取附注表格数据 def extract_pdf_table(pdf_file): # 创建一个PDF资源管理器对象,用于存储共享资源,如字体或图像 rsrcmgr = PDFResourceManager() # 创建一个PDF设备对象 laparams = LAParams() device = TextConverter(rsrcmgr, output_type="text", laparams=laparams) # 创建一个PDF解释器对象 interpreter = PDFPageInterpreter(rsrcmgr, device) # 读取PDF文件中的所有页面 with open(pdf_file, 'rb') as f: for page in PDFPage.get_pages(f): interpreter.process_page(page) # 获取页面布局 layout = device.get_result() # 查找包含附注表格文本块 for l in layout: if "附注" in l.get_text().strip(): # 将附注表格文本块转换为DataFrame格式 df = pd.read_csv(pd.compat.StringIO(l.get_text()), sep="\t") # 返回DataFrame对象 return df # 读取所有PDF文件,并将附注表格数据保存Excel文件pdf_dir = "/path/to/pdf/files/" excel_file = "/path/to/excel/file.xlsx" writer = pd.ExcelWriter(excel_file) for pdf_file in os.listdir(pdf_dir): if pdf_file.endswith(".pdf"): # 提取附注表格数据 df = extract_pdf_table(os.path.join(pdf_dir, pdf_file)) if df is not None: # 将附注表格数据保存Excel文件中 sheet_name = os.path.splitext(pdf_file)[0] df.to_excel(writer, sheet_name=sheet_name, index=False) writer.save() print("所有附注表格数据已合并到Excel文件中。") ``` 这段代码假设所有的PDF文件都在同一个目录下,且文件名以“.pdf”结尾。代码会从该目录中读取所有的PDF文件,并将每个附注表格数据保存到一个单独的Excel工作表中,工作表的名称与PDF文件的名称相同(去掉“.pdf”后缀)。最终,所有附注表格数据会合并到一个Excel文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值