首页 > 解决方案 > 如何使用pdfplumber将表格详细信息提取到行和列中

问题描述

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

pdf 表格的示例屏幕截图 - 灰色框是刚刚隐藏的文本

我希望上表有 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)

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

标签: pythonpandasdataframepdfplumber

解决方案


使用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

Morover,请阅读pdfplumber文档(提取表)部分,因为在您的输入文件中的代码中包含许多选项:

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


推荐阅读