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

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

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

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

相关推荐

u盘安装教程(电视u盘安装教程)

怎么用u盘安装系统?那么下面与大家分享下u盘装系统步骤教程。1、打开装机软件,选择启动U盘界面,并且在电脑上插入U盘,点击制作U盘启动盘开始制作2、接着就进入了选择系统的界面,在这里可以看到有各种版本...

手机中文手写输入法下载安装

中文手写板的使用方法:把手写板的驱动盘放进光驱,一般手写板的驱动盘比较小,放进光驱的时候要使劲卡住光盘才行。把手写板的USB接口连接到电脑,然后准备好说明书,有不懂的可以再看看。驱动盘运转后,打开我的...

visio2007安装包下载(visio2010安装包下载)

是的,Visio2007已经停止支持。Microsoft宣布于2017年1月10日正式终止对Visio2007的支持,并停止向该软件提供更新和安全补丁。如果您仍在使用Visio2007,建议您升...

电脑下划线怎么用键盘打出来
  • 电脑下划线怎么用键盘打出来
  • 电脑下划线怎么用键盘打出来
  • 电脑下划线怎么用键盘打出来
  • 电脑下划线怎么用键盘打出来
老款苹果笔记本装win7(苹果笔记本加装win7)

.获取Windows7安装介质:确保你有一张合法的Windows7安装光盘或USB安装驱动器。你可以购买正版Windows7光盘或从微软官方网站下载镜像文件并制作启动USB。2.创建Window...

错误代码0x80070570(错误代码0X8007041D)

第一种解决方法:命令提示符修复。1、首先按下“Win标+R”键,打开运行。2、然后如果你要修复的文件在E盘,那就输入:chkdske:/f如果修复的文件在C盘,那就输入:chkdskc:/f代...

齉龘齉齾爩麤龗灪龖厵纞虋(齉龘齉齾爩麤龗灪龖厵纞虋馫龘飝鱻灥麤靐飍朤馫譶龘嚻)

龘:dá,《说文.龙部》:“龘,飞龙也。从三龙。”本义为龙飞的样子,同“龖”也指双龙:震,龖之赫,霆之砉。靐,拼音bìng,汉字生僻字,雷声的意思。自“雷”人在网络流行后,“靐”又被应用到网络用语,...

免费下载ppt课件网站(ppt一键制作免费版)

1.第一个是优品ppt,首先网站设计的很漂亮,ppt的质量不错,重点是免费;2.第二个是51ppt,里面的模板也都可以免费下载,可以说是非常的良心了,...3.第三个是officeplus,是offi...

win7旗舰版没有快速开机(win7怎么开启快速开机)

在Windows7中没有官方的快速启动选项。快速启动选项通常出现在Windows8和Windows10的启动菜单中。但是,你仍然可以通过其他方法实现快速启动。一种方法是将程序或文件的快捷方式放置...

window7下载什么版本的python

在Win7系统上下载Python的具体步骤如下:从官网下载适合自己电脑版本的Python。选择“下一步”进行安装,然后弹出配置环境变量的窗口。将Python的安装目录追加到系统环境变量中,然后确定。最...

联想笔记本系统怎么重装(联想笔记本系统重装按哪个键)

一、准备工作1、下载联想win7系统3、4G或更大U盘,然后制作大白菜u盘启动盘3、设置bios为U盘启动二、步骤1、制作好U盘启动盘之后,把下载的联想系统iso文件直接复制到U盘的GHO目录下,在联...

电脑未插扬声器或耳机怎么回事

是声卡的驱动没有安装好。也有可能是你的音响或者耳机的插口损坏,最好是检查一下音频接口有没有损坏之类的,如果音响和耳机的接口线都是没问题的。1.首先,咱们在电脑屏幕右下角的位置找到声音图标,然后右键点击...

windows7系统下载专业版(win7下载专业版还是旗舰版)
windows7系统下载专业版(win7下载专业版还是旗舰版)

  1、微软官方  想想看,如果说哪里的win7系统最纯净,那自然是微软官方的了——当然,在官方系统基础上进一步精简的纯净版系统不在本文讨论中。可惜的是,微软已经停止了对win7的维护。不过如果想使用win10、win11的官方纯净版,还是...

2026-01-20 13:55 liuian

如何安装linux操作系统(安装linux教程)

1.下载Linux2.刻录光盘3.把光盘插入要安装的电脑上4.按F2F11F9等快捷键进入BIOS,把光盘调到第一位5.F10保存6按照安装向导提示安装Linux分为很多的发行版,下面以debia...

自己怎样给电脑做系统(自己怎样给电脑做系统还原)

可以。在家给电脑做系统需要一台电脑、一个可引导的USB或光盘、以及系统镜像文件。首先,将系统镜像文件(如WindowsISO文件)下载到电脑上。然后,使用U盘制作工具(如Rufus)将镜像文件写入...