python pdfminer读取pdf表格_如何使用PDFMiner从pdf中提取表格?

我正试图从pdf文档中的一些表中提取信息。

考虑输入:Title 1

some text some text some text some text some text

some text some text some text some text some text

Table Title

| Col1 | Col2 | Col3 |

|---------------|---------|---------|

| val11 | val12 | val13 |

| val21 | val22 | val23 |

| val31 | val32 | val33 |

Title 2

some more text some more text some more text some more text

some more text

some more text some more text some more text some more text

我可以得到这样的大纲/标题:path='myFile.pdf'

# Open a PDF file.

fp = open(path, 'rb')

# Create a PDF parser object associated with the file object.

parser = PDFParser(fp)

# Create a PDF document object that stores the document structure.

# Supply the password for initialization.

document = PDFDocument(parser, '')

outlines = document.get_outlines()

for (level,title,dest,a,se) in outlines:

print (level, title)

这给了我:(1, u'Title 1')

(2, u'Table Title')

(1, u'Title 2')

这是完美的,因为级别与文本层次结构对齐。现在我可以提取文本如下:if not document.is_extractable:

raise PDFTextExtractionNotAllowed

# Create a PDF resource manager object that stores shared resources.

rsrcmgr = PDFResourceManager()

# Create a PDF device object.

laparams = LAParams()

device = PDFPageAggregator(rsrcmgr, laparams=laparams)

# Create a PDF interpreter object.

interpreter = PDFPageInterpreter(rsrcmgr, device)

# Process each page contained in the document.

text_from_pdf = open('textFromPdf.txt','w')

for page in PDFPage.create_pages(document):

interpreter.process_page(page)

layout = device.get_result()

for element in layout:

if isinstance(element, LTTextBox):

text_from_pdf.write(''.join([i if ord(i) < 128 else ' '

for i in element.get_text()]))

这给了我:Title 1

some text some text some text some text some text some text some text

some text some text some text some text some text some text some text

Table Title

Col1

val11

val12

val13

Col2

val21

val22

val23

Col3

val31

val32

val33

Title 2

some more text some more text some more text some more text

some more text

some more text some more text some more text some more text

这有点奇怪,因为表是按列方式提取的。我能把桌子一行一行地拿到吗?此外,如何确定表的开始和结束位置?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值