如何使用PDFPL将表的详细信息提取到行和列中

2024-03-29 13:13:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pdfplumber从pdf中提取表格。但是使用中的表没有分隔内容的可见垂直线,因此提取的数据分为3行和一个巨大的列

sample screenshot of pdf table - grey boxes are text just hidden

我想把上表分成13行

import pdfplumber
import pandas as pd
import numpy as np
with pdfplumber.open('test.pdf') as pdf:
    page = pdf.pages[0]
    tables = page.extract_tables()

print(tables)

从文档中,我无法理解是否有我可以应用的特定表格设置。我试了一些,但没用


Tags: 数据importnumpy内容pandastablespdfas
2条回答

请在使用extract_tables()选项时添加以下设置(这可能需要根据您的输入文件进行更改):

import pdfplumber
import pandas as pd
import numpy as np

with pdfplumber.open(r'document.pdf') as pdf:
    page = pdf.pages[0]    
    table = page.extract_table(table_settings={"vertical_strategy": "lines", 
                                               "horizontal_strategy": "text", 
                                               "snap_tolerance": 4,})
    
    df = pd.DataFrame(table, columns=table[0]).T

此外,请阅读pdfplumber文档(提取表)部分,因为有许多选项可包含在基于输入文件的代码中:

https://github.com/jsvine/pdfplumber#extracting-tables

您可以使用pandas.DataFrame自定义表格,而不是直接打印表格

df = pd.DataFrame(tables[1:], columns=tables[0])
for column in df.columns.tolist():
    df[column] = df[column].str.replace(" ", "")

print(df)

相关问题 更多 >