0

我是 pdfplumber 的新手,我对它如何从表格中提取文本感到惊讶。

它很容易适用于所有页表,但就我而言,我使用的是一些拓扑示意图,其中包含一些表。

它无法提取文档中每个表的第一列和最后一行。我试图调整 table_settings 变量中的几个配置参数,不幸的是我无法获得更好的结果(在我的情况下,原理图中的其余文本被视为表格,以防我使用“文本”而不​​是“线”)。

有什么帮助吗?我正在使用 Python 3.9.8,用于测试的 pdf 可以在以下位置找到:schematic.pdf

接下来是源代码:

import pdfplumber
pdf_file = "Schematic.pdf"
tables=[]
with pdfplumber.open(pdf_file) as pdf:
    pages = pdf.pages
    tbl = pages[0].extract_tables()
    
    print(f'{tbl}')
4

1 回答 1

1

PDF 中的某些边缘显示为线条,但并不完全是 pdfplumber 视为线条的内容,在这种情况下,所有曲线和边缘都可以明确视为线条。使用下表设置适用于这种情况

{
    "vertical_strategy": "explicit",
    "horizontal_strategy": "explicit",
    "explicit_vertical_lines": page.curves+page.edges,
    "explicit_horizontal_lines": page.curves+page.edges,
    "intersection_tolerance": 15,
}

图片

['(cid:47)(cid:44)(cid:54)(cid:55)(cid:36)(cid:3)(cid:39)(cid:40)(cid:3)(cid:39)(cid:40)(cid:54)(cid:57)(cid:203)(cid:50)(cid:54)', None, None, None, None, None]
['(cid:49)(cid:158)', 'PK', 'VEL.', '(cid:49)(cid:158)', 'PK', 'VEL.']
['A64', '3+100', '100 Km/h', 'A66', '3+365', '100 Km/h']
['A65', '3+189', '100 Km/h', 'S2MSU2', '5+884', '100 Km/h']
['A67', '3+363', '100 Km/h', 'S4MSU1', '6+052', '100 Km/h']
['', '', '', '', '', '']

['(cid:54)(cid:40)(cid:102)(cid:36)(cid:47)(cid:40)(cid:54)', None, None, None]
['NOMBRE', 'PK', 'NOMBRE', 'PK']
['E3', '3+720', 'EMSUF2', '5+766']
['E4', '3+784', 'EMSUF1', '5+766']
['B004F2', '4+295', 'SMSUM2', '6+185']
['B004F1', '4+295', 'SMSUM1', '6+188']
['', '', '', '']
于 2021-12-03T11:24:02.763 回答