pypdf не извлекает таблицы из pdf

1

Я использую pypdf для извлечения текста из PDF файлов. Проблема в том, что таблицы в файлах PDF не извлекаются. Я также пытался использовать pdfminer, но у меня такая же проблема.

Теги:
pypdf

1 ответ

5
Лучший ответ

Проблема в том, что таблицы в PDF файлах обычно состоят из абсолютно позиционированных линий и символов, и нетривиально преобразовать это в разумное представление таблицы.

В Python, PDFMiner, вероятно, ваш лучший выбор. Он дает вам древовидную структуру объектов макета, но вам придется выполнять интерпретацию таблицы, просматривая позиции линий (LTLine) и текстовые поля (LTTextBox). Здесь немного документации.

В качестве альтернативы, PDFX пытается это сделать (и часто преуспевает), но вы должны использовать его как веб-сервис (не идеально, но отлично для случайной работы). Чтобы сделать это из Python, вы можете сделать что-то вроде следующего:

import urllib2
import xml.etree.ElementTree as ET

# Make request to PDFX
pdfdata = open('example.pdf', 'rb').read()
request = urllib2.Request('http://pdfx.cs.man.ac.uk', pdfdata, headers={'Content-Type' : 'application/pdf'})
response = urllib2.urlopen(request).read()

# Parse the response
tree = ET.fromstring(response)
for tbox in tree.findall('.//region[@class="DoCO:TableBox"]'):
    src = ET.tostring(tbox.find('content/table'))
    info = ET.tostring(tbox.find('region[@class="TableInfo"]'))
    caption = ET.tostring(tbox.find('caption'))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню