pdfminer3k не имеет метода с именем create_pages в PDFPage

Поскольку я хочу перейти с python 2 на 3, я попытался работать с pdfmine.3kr в python 3.4. Вроде все отредактировали. Их журналы изменений не отражают внесенные ими изменения, но мне не удалось разобрать pdf с помощью pdfminer3k. Например:

Они переместили PDFDocument в pdfparser (извините, если я пишу неправильно). В PDFPage раньше был метод create_pages, которого сейчас нет. Все, что я вижу внутри PDFPage, - это внутренние методы. У кого-нибудь есть рабочий пример pdfminer3k? Похоже, что нет новой документации, отражающей какие-либо изменения.


person Jack_of_All_Trades    schedule 16.10.2014    source источник
comment
что именно вы ищете? как create_pages в pdfminer3k?   -  person avi    schedule 17.10.2014
comment
Я ищу любые примеры, которые позволяют мне делать то же самое с pdfminer с pdfminer3k на основе их нового api, который нигде не документирован.   -  person Jack_of_All_Trades    schedule 17.10.2014


Ответы (2)


Если вас интересует чтение текста из файла pdf, следующий код работает с pdfminer3k с использованием python 3.4.

from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox, LTTextLine

fp = open('file.pdf', 'rb')
parser = PDFParser(fp)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize('')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.
for page in doc.get_pages():
    interpreter.process_page(page)
    layout = device.get_result()
    for lt_obj in layout:
        if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
            print(lt_obj.get_text())

fp.close()
person CPB    schedule 02.01.2015
comment
Я предполагаю, что это не работает со сканированными изображениями? поскольку у меня, вероятно, нет текстовых полей или текстовых строк. - person Jglstewart; 22.04.2015
comment
@Jgltewart для таких PDF-документов вам нужно преобразовать каждую страницу в изображение и использовать OCR для каждого изображения, чтобы получить текст. Примером OCR является Tesseract, для этого есть код Python - person Nwawel A Iroume; 08.12.2015
comment
Я могу подтвердить, что это решает буквально ВСЕ ваши проблемы с Unicode. Ха-ха :) - person lol; 25.06.2016
comment
Я сравнил этот ответ с принятым ответом в этом сообщении SO и этот не извлекает столько текста - person Jeremy; 10.10.2017
comment
Я хотел попробовать этот пакет, чтобы сэкономить время, я знаю, что могу сделать l=[] if 'x' in lt_obj.get_text(): l.append(page), но как я могу сохранить l в формате pdf? В pdfminer3k нет метода создания страниц. - person Moo10000; 06.02.2020

Возможно, вам стоит использовать pdfminer.six. Это описание:

форк PDFMiner с использованием шести для совместимости с Python 2 + 3

После установки с помощью pip :

pip install pdfminer.six

Он используется как pdfminer, по крайней мере, в моем коде.

Надеюсь, это спасет вам день :)

person Lordran    schedule 31.03.2017