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

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

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

由于 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

相关推荐

手机清理垃圾哪个软件最好(oppo手机管家在哪里)

您的地盘您做主,您喜欢哪个,那个就好。如果仅仅是手机垃圾清理的话可以使用猎豹清理大师,如果是手机安全管理的话可以使用腾讯手机管家。猎豹清理大师特色NO.1的垃圾清理效果大多数App在使用中都会在本地产...

ms office2010产品密钥(office 2010产品密钥完整版)

直接使用这个Microsoftoffice2010产品密钥HV7BJ-R6GCT-VHBXD-YH4FD-GTH2T亲测可以使用这个是试用版本的密匙,有些功能可能无法使用不过基础操作够用了...

win7旗舰版声卡驱动用哪个(windows7安装声卡驱动)

安装声卡不仅是看你系统的类别和位数(例如32和64之分)重点还是看你声卡的型号,现在声卡都集成在了主板上,并不是独立或者外置的声卡,你可以下载一个驱动精灵(驱动精灵比驱动人生好用),下载过来,安装,打...

笔记本显卡怎么查看(笔记本显卡怎么查看参数)

查看方法:如果你要查看笔记本电脑的显卡的具体参数的话。第1种办法是可以下载鲁大师。然后给他进行一次系统配置检测。基本上就能识别到这个独立显卡的型号和显存大小。另外更加详细的识别办法,可以下载图吧工具箱...

win10注册表在哪里(w10的注册表在哪里)

windows7系统下打开注册表编辑器的方方法一:直接在电脑桌面-开始-在搜索框里直接输入regedit回车后就可以打开注册表编辑器,当然你也可以在win7的运行中输入regedit回车也是一样的,...

纯净版win7安装完没有驱动怎么办

如果在安装Windows7系统时出现缺少驱动程序的提示,可以尝试以下几种方法:1.检查硬件设备的兼容性:确定硬件设备是否与Windows7系统兼容,如果不兼容则需要更新至兼容的设备。2.检查安...

windows10下载地址官方(windows10下载官网地址)

系统家园最好。这里的系统都是安全可靠的,而且安装方法也很简单,适合所有用户使用。1、这里的系统有多个好处。2、首先,保证安全可靠,所有系统都是可以正常安装不报错的。3、其次,安装操作特别简单,都是一键...

手机怎么进入qq邮箱(手机怎么进入qq邮箱登录)
  • 手机怎么进入qq邮箱(手机怎么进入qq邮箱登录)
  • 手机怎么进入qq邮箱(手机怎么进入qq邮箱登录)
  • 手机怎么进入qq邮箱(手机怎么进入qq邮箱登录)
  • 手机怎么进入qq邮箱(手机怎么进入qq邮箱登录)
flashgo模拟定位免费版(flash模拟器官网)

如果是在场景外面了,你可以在场景中选中mc的关键帧,按ctrl+K调出对齐对话框,选中“相对于舞台”,点击垂直对齐和水平对齐,就可以把这个关键帧中的元件居中了。这是一个软件使用熟练的事情,你用得多了,...

如何制作一个u盘启动盘(如何自己制作一个启动u盘用于系统安装)
如何制作一个u盘启动盘(如何自己制作一个启动u盘用于系统安装)

U盘启动盘的制作过程如下,首先你用U盘制作工具,像大白菜或U盘启动大师将U盘制成启动盘,制作过程中会提示你对U盘进行格式化确认后,可以生成U盘的引导盘和一些制作工具,仅BIOS设置成U盘启动后,在PE环境下可以将WINDOWS操作系统统性安...

2025-12-08 22:55 liuian

怎么彻底清理电脑垃圾(华为怎么删除垃圾清理)

1、运用磁盘清理软件清理C盘,大约可为C盘释放50M-800M空间。2、关闭休眠功能,在开始菜单的运行里输入powercfg-hoff指令,关闭休眠,此文件实际大小和物理内存是一样的,大约可以...

电脑桌面软件打不开(电脑桌面软件打不开了怎么办 提示找不到)
电脑桌面软件打不开(电脑桌面软件打不开了怎么办 提示找不到)

1.同时按下shift+alt+delete键或shift+ctrl+esc键调用任务管理器程序2.打开任务管理器,然后选择”进程“选项卡,在进程中找到explorer.exe这个进程单击一下,然后3.按”结束进程“按钮,这时候桌面都没...

2025-12-08 21:55 liuian

ie浏览器设置主页(ie浏览器 设置主页)
ie浏览器设置主页(ie浏览器 设置主页)

如果您想将IE浏览器设置主页,请按照以下步骤操作:1.打开您的电脑,并进入“控制面板”。2.单击“系统和安全”。3.单击“系统”。4.单击“当前的用户区域”。5.选择“高”,然后单击“更改”。6.在“语言”下拉菜单中,选择“简体...

2025-12-08 21:05 liuian

迷你世界激活码大全(迷你世界激活码大全 有效)

头条迷你世界没用的激活码有:GQUShfhX100478HNZsgYaSDbqGjGmI100478ERhaLBLmHJtwzdGY100478gweIDpoNBKCBpAMj100478xyrBxn...

手机管家360清理大师(手机管家360清理大师官方正版)

你好!很高兴回答你的问题。360手机卫士和腾讯手机管家这两款都是手机安全类软件,这两者区别不大它们都是国内数一数二互联网大公司而360主打的是安全类而腾讯的业务比360更广有游戏、新闻、视频等等…这个...