与将数据从pdf表传输到csv相关的问题[重复]

ih99xse1  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

这个问题已经有答案了

How to extract a table as text from the PDF(4个回答)
25天前关闭
我有一个100页的大PDF文件,几乎完全由表格组成,他在这里:file我需要从这个表格中提取数据并将其传输到Excel,但为了方便,我首先需要将这些数据写入CSV文件。
我使用过python和各种库,从pypdf 2和camelot,到尝试安装slicemypdf(失败)。pypdf 2在时间/结果方面做得最好,但它在输出空单元格和单独写入的数字时有问题(1,000 = 1.000,但是split()方法不能正确地将它们分开)。我将很高兴得到任何帮助,我一直在这个项目上工作了大量的日日夜夜。P.S.我是一个新手,我要求尽可能详细的解释

wribegjk

wribegjk1#

当然可以!从PDF文件中的表格中提取数据可能是一项具有挑战性的任务,有不同的方法可以实现这一点。由于您提到您已经尝试过pypdf 2和camelot,我将指导您使用tabula-py库的替代方法,该库构建在Apache PDFBox之上。
以下是您可以遵循的步骤:

第一步:安装所需的库

请确保已安装必要的库。您可以使用以下命令安装它们:

pip install tabula-py pandas

字符串

第二步:使用tabula-py从PDF中提取表格

import tabula

# Replace 'your_file_path.pdf' with the actual path to your PDF file
file_path = 'your_file_path.pdf'

# Use tabula to extract tables from the PDF
tables = tabula.read_pdf(file_path, pages='all', multiple_tables=True)

# 'tables' now contains a list of DataFrames, where each DataFrame corresponds to a table on a page

第三步:清理和结构化数据

由于表可能具有不同的结构,因此您需要检查提取的表并决定如何构建数据。您可以使用pandas库来处理DataFrames。

import pandas as pd

# Concatenate all DataFrames into a single DataFrame
df = pd.concat(tables, ignore_index=True)

# Display the DataFrame to inspect the structure
print(df)

第四步:保存DataFrame到CSV文件

# Replace 'output_file.csv' with the desired output file path
output_file = 'output_file.csv'

# Save the DataFrame to a CSV file
df.to_csv(output_file, index=False)

注意:

1.**空单元格:**您可能需要根据您的具体需求单独处理空单元格。Pandas可以将空单元格表示为NaN(不是数字)。
1.**数字格式:**Pandas通常可以很好地处理数字格式,但如果需要,您可以在to_csv方法中使用float_format参数来进一步自定义。
1.**自定义输出:**根据表的结构,您可能需要进一步清理和结构化数据。您可以根据需要使用pandas函数来操作DataFrame。
您可以根据您的具体PDF文件和表格结构调整代码。如果您遇到任何问题或有特定要求,请提供更多细节,我很乐意进一步帮助。

相关问题