百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

在 Python 中将 PDF 表格提取为文本、Excel 和 CSV

liuian 2025-02-08 11:50 51 浏览

由于 PDF 文档的复杂性,从 PDF 文件中提取表格数据可能是一项具有挑战性的任务。与简单的文本提取不同,表格需要小心处理,以保留表格结构以及行和列之间的关系。您无需从大量 PDF 表中手动提取数据,而是可以通过编程方式简化和自动化此过程。在本文中,我们将演示如何使

用于将 PDF 表格提取为文本、Excel 和 CSV 的 Python 库

要将 PDF 表中的数据提取为文本、excel 和 CSV 文件,我们可以使用 Spire.PDF for Python 和 Spire.XLS for Python 库。Spire.PDF for Python 主要用于从 PDF 中提取表格数据,Spire.XLS for Python 主要用于将提取的表格数据保存为 Excel 和 CSV 文件。

您可以在项目的终端中运行以下 pip 命令来安装 Spire.PDF for Python 和 Spire.XLS for Python:

pip install Spire.Pdf
pip install Spire.Xls

如果您已经安装了 Spire.PDF for Python 和 Spire.XLS for Python,并且想要升级到最新版本,请使用以下 pip 命令:

pip install --upgrade Spire.Pdf
pip install --upgrade Spire.Xls

在 Python 中将 PDF 表格提取为文本

Spire.PDF for Python 提供的
PdfTableExtractor.ExtractTable(pageIndex: int)
函数允许您访问 PDF 中的表。访问后,您可以使用 PdfTable.GetText(rowIndex: int, columnIndex: int) 函数轻松地从表中检索数据。然后,您可以将检索到的数据保存到文本文件中以供以后使用。

以下示例显示了如何使用 Python 和 Spire.PDF for Python 从 PDF 文件中提取表数据并将结果保存到文本文件中:

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

# Define an extract_table_data function to extract table data from PDF
def extract_table_data(pdf_path):
    # Create an instance of the PdfDocument class
    doc = PdfDocument()
    
    try:
        # Load a PDF document
        doc.LoadFromFile(pdf_path)
        # Create a list to store the extracted table data
        table_data = []

        # Create an instance of the PdfTableExtractor class
        extractor = PdfTableExtractor(doc)

        # Iterate through the pages in the PDF document
        for page_index in range(doc.Pages.Count):
            # Get tables within each page
            tables = extractor.ExtractTable(page_index)
            if tables is not None and len(tables) > 0:

                # Iterate through the tables
                for table_index, table in enumerate(tables):
                    row_count = table.GetRowCount()
                    col_count = table.GetColumnCount()

                    table_data.append(f"Table {table_index + 1} of Page {page_index + 1}:\n")

                    # Extract data from each table and append the data to the table_data list
                    for row_index in range(row_count):
                        row_data = []
                        for column_index in range(col_count):
                            data = table.GetText(row_index, column_index)
                            row_data.append(data.strip())
                        table_data.append("  ".join(row_data))

                    table_data.append("\n")

        return table_data

    except Exception as e:
        print(f"Error occurred: {str(e)}")
        return None

# Define a save_table_data_to_text function to save the table data extracted from a PDF to a text file
def save_table_data_to_text(table_data, output_path):
    try:
        with open(output_path, "w", encoding="utf-8") as file:
            file.write("\n".join(table_data))
        print(f"Table data saved to '{output_path}' successfully.")
    except Exception as e:
        print(f"Error occurred while saving table data: {str(e)}")

# Example usage
pdf_path = "Tables.pdf"
output_path = "table_data.txt"

data = extract_table_data(pdf_path)
if data:
    save_table_data_to_text(data, output_path)

使用 Python 从 PDF 中提取表格

在 Python 中将 PDF 表格提取到 Excel

当您需要对表格数据执行进一步的分析、计算或可视化时,将 PDF 表格提取到 Excel 非常有用。通过将 Spire.PDF for Python 与 Spire.XLS for Python 结合使用,您可以轻松地将数据从 PDF 表格导出到 Excel 工作表。

以下示例显示了如何使用 Spire.PDF for Python 和 Spire.XLS for Python 将数据从 PDF 表导出到 Python 中的 Excel 工作表:

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

# Define a function to extract data from PDF tables to Excel
def extract_table_data_to_excel(pdf_path, xls_path):
    # Create an instance of the PdfDocument class
    doc = PdfDocument()

    try:
        # Load a PDF document
        doc.LoadFromFile(pdf_path)

        # Create an instance of the PdfTableExtractor class
        extractor = PdfTableExtractor(doc)

        # Create an instance of the Workbook class
        workbook = Workbook()
        # Remove the default 3 worksheets
        workbook.Worksheets.Clear()
        
        # Iterate through the pages in the PDF document
        for page_index in range(doc.Pages.Count):
            # Extract tables from each page
            tables = extractor.ExtractTable(page_index)
            if tables is not None and len(tables) > 0:
                # Iterate through the extracted tables
                for table_index, table in enumerate(tables):
                    # Create a new worksheet for each table
                    worksheet = workbook.CreateEmptySheet()  
                    # Set the worksheet name
                    worksheet.Name = f"Table {table_index + 1} of Page {page_index + 1}"  
                    
                    row_count = table.GetRowCount()
                    col_count = table.GetColumnCount()

                    # Extract data from the table and populate the worksheet
                    for row_index in range(row_count):
                        for column_index in range(col_count):
                            data = table.GetText(row_index, column_index)
                            worksheet.Range[row_index + 1, column_index + 1].Value = data.strip()
                    
                    # Auto adjust column widths of the worksheet
                    worksheet.Range.AutoFitColumns()

        # Save the workbook to the specified Excel file
        workbook.SaveToFile(xls_path, ExcelVersion.Version2013)

    except Exception as e:
        print(f"Error occurred: {str(e)}")

# Example usage
pdf_path = "Tables.pdf"
xls_path = "table_data.xlsx"
extract_table_data_to_excel(pdf_path, xls_path)

使用 Python 将 PDF 表格提取到 Excel

在 Python 中将 PDF 表提取为 CSV

CSV 是一种通用格式,可以通过电子表格软件、数据库、编程语言和数据分析工具打开和处理。将 PDF 表格提取为 CSV 格式使数据易于访问并与各种应用程序和工具兼容。

以下示例显示了如何使用 Spire.PDF for Python 和 Spire.XLS for Python 将数据从 PDF 表导出到 Python 中的 CSV 文件:

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

# Define a function to extract data from PDF tables to CSV
def extract_table_data_to_csv(pdf_path, csv_directory):
    # Create an instance of the PdfDocument class
    doc = PdfDocument()

    try:
        # Load a PDF document
        doc.LoadFromFile(pdf_path)

        # Create an instance of the PdfTableExtractor class
        extractor = PdfTableExtractor(doc)

        # Create an instance of the Workbook class
        workbook = Workbook()
        # Remove the default 3 worksheets
        workbook.Worksheets.Clear()
        
        # Iterate through the pages in the PDF document
        for page_index in range(doc.Pages.Count):
            # Extract tables from each page
            tables = extractor.ExtractTable(page_index)
            if tables is not None and len(tables) > 0:
                # Iterate through the extracted tables
                for table_index, table in enumerate(tables):
                    # Create a new worksheet for each table
                    worksheet = workbook.CreateEmptySheet()  
 
                    row_count = table.GetRowCount()
                    col_count = table.GetColumnCount()

                    # Extract data from the table and populate the worksheet
                    for row_index in range(row_count):
                        for column_index in range(col_count):
                            data = table.GetText(row_index, column_index)
                            worksheet.Range[row_index + 1, column_index + 1].Value = data.strip()
                    
                    csv_name = csv_directory + f"Table {table_index + 1} of Page {page_index + 1}" + ".csv"

                    # Save each worksheet to a separate CSV file
                    worksheet.SaveToFile(csv_name, ",", Encoding.get_UTF8())

    except Exception as e:
        print(f"Error occurred: {str(e)}")

# Example usage
pdf_path = "Tables.pdf"
csv_directory = "CSV/"
extract_table_data_to_csv(pdf_path, csv_directory)

使用 Python 将 PDF 表格提取为 CSV

相关推荐

win10任务管理器灰色打不开(windows10任务管理器打不开怎么办)

是的,任务管理器可能会出现灰色的情况。这是因为在某些电脑中,系统管理员有权限限制普通用户使用任务管理器。此外,有一些病毒或恶意软件也会禁止用户打开任务管理器,以防其被检测和结束。如果用户想要打开任务管...

请重试(请重试无法验证你的设备)

通常出现这个情况的原因是文档是被保护的。取消文档加密步骤:点击0ffice按钮-准备-加密文档删除密码-确定取消工作表保护如果Excel2007工作表已保护起来,“保护工作表”按钮将自动变化为“取消工...

免费注册个人邮箱账号(免费注册邮箱号码)
  • 免费注册个人邮箱账号(免费注册邮箱号码)
  • 免费注册个人邮箱账号(免费注册邮箱号码)
  • 免费注册个人邮箱账号(免费注册邮箱号码)
  • 免费注册个人邮箱账号(免费注册邮箱号码)
下载机系统(下载机有什么用)

1、点亮手机屏幕,找到【系统工具】文件夹,点击打开。2、进入系统工具界面,找到【文件管理】选项,点击打开。3、在文件管理界面,选择【手机版】选项,点击打开。4、在此界面,向下方滑动找到【downloa...

备份整个硬盘为镜像(备份分区到镜像)

1、尝试过,TimeMachine可以备份到移动硬盘的其中一个分区。2、如果希望移动硬盘既可用于TimeMachine备份,也可用于Windows系统,我是这样做的:首先为移动硬盘分区(至少2个分...

佳能打印机驱动安装视频教程

电脑搜索“佳能驱动”。02进入首页点击“服务于支持”。03然后选择“下载与支持”点击进入。04然后选择你使用的打印机种类图片。05然后在选择产品页面逐一选择产品的种类、系列、型号、下载的文件类型。06...

班级优化大师官网登录(班级优化大师官网登录网址)

班级优化大师可以在另一个手机上重新下载安装该应用,并使用之前绑定的账户进行登录操作,即可同步之前的班级信息和配置。如果之前未绑定账户,则需要通过“找回密码”或“注册新账户”的方式来登录应用,并重新配置...

什么是chatgpt(什么是ai技术)

ChatGPT是由美国人工智能实验室OpenAI开发的一个对话AI模型,于2022年11月正式推出。它能够通过学习和理解人类的语言来进行对话互动,并协助人类完成一系列任务。chatGPT实际上是美国o...

无线网显示不可上网是怎么回事

可能有几下几方面原因:1、无线路由器网络参数设置错误,无法拨通ISP运营商的局端设备,无法接入互联网;2、宽带线路出现故障,路由器无法拨通ISP运营商的局端设备,无法连通;3、宽带DNS服务器由于某种...

电脑最好的显卡(电脑显卡最好的是什么型号)

华硕比较好点。挑选显卡的方法:1、独立显卡中分为A卡和N卡,A卡即AMD(原ATI公司,现被AMD公司收购)公司生产的显卡,N卡即nVidia公司生产的显卡。A卡中一线品牌有:蓝宝石,微星,华硕,F...

windows7怎么下载主题(windows 7主题下载)

1、打开win7系统电脑左下角“开始”菜单,找到【控制面板】点击打开;2、进入控制面板界面,右上方【查看方式】更改为“小图标”,然后找到【管理工具】打开;3、进入“管理工具”,点击打开【服务】选项;4...

计算机计算器(计算机计算器区别)

计算器是现代人发明的可以进行数字运算的电子机器。现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价...

联想台式电脑价格(联想台式电脑价格一览表)

配置如下主板sis-651CPUIntelCeleronProcessor2.00GHz硬盘希捷ST3160215A(150G)新显示器即插即用监视器(LCSA771LXH-GJ769F3)显卡SiS...

华为手机驱动官网下载(华为手机驱动官网下载不了)

华为手机驱动程序安装方法:1:首先把华为手机连接电脑,在手机下拉通知栏中选择“设备文件管理(MTP)”或者“作为USB存储设备连接”或者“仅充电”的模式选择,进入USB计算机连接菜单选择“PC助手(...

win7系统设置定时关机任务(win7定时关机怎么设置方法)

在Win7系统中,可以通过“任务计划程序”来设置定时自动关机。首先打开“任务计划程序”,选择“创建基本任务”,按照向导步骤设置任务名称、触发器(选择“按计划时间安排”并设置时间)、操作(选择“程序启动...