PDFMiner TypeError: не все аргументы конвертируются во время форматирования строки - PullRequest
0 голосов
/ 24 сентября 2019

Я пытался найти решение для анализа PDF в HTML, поэтому позже я буду использовать красивый суп для извлечения всех заголовков, подпунктов и абзацев соответственно в древовидной структуре.

Я искал несколько вариантов, доступных в Интернете, но пока безуспешно.Вот код, который я использовал для анализа PDF в HTML с помощью PDFMiner.six

import sys
from pdfminer.pdfdocument import PDFDocument
from pdfminer.layout import LTContainer, LTComponent, LTRect, LTLine, LAParams, LTTextLine
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice, TagExtractor
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.image import ImageWriter
from io import StringIO, BytesIO
from bs4 import BeautifulSoup
import re
import io



def convert_pdf_to_html(path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    outfp = BytesIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = HTMLConverter(rsrcmgr, outfp, imagewriter=ImageWriter('out'))
    fp = open(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device) 
    password = ""
    maxpages = 0 #is for all
    caching = True
    pagenos=set()
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)
    fp.close()
    device.close()
    str = retstr.getvalue()
    retstr.close()
    return str

convert_pdf_to_html('PDF - Remraam Ph 1 Mosque.pdf')

Однако приведенный выше код возвращает следующую ошибку, которую я не могу исправить,Спасибо за любую помощь, спасибо.

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pdfminer\pdftypes.py in decode(self)
    293                 data = ccittfaxdecode(data, params)
    294             elif f == LITERAL_CRYPT:
--> 295                 raise PDFNotImplementedError('Crypt filter is unsupported')
    296             else:
    297                 raise PDFNotImplementedError('Unsupported filter: %r' % f)

TypeError: not all arguments converted during string formatting

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Быстрое обновление, я исправил эту проблему, просто удалив и установив Anaconda, а затем я установил pdfminer.six by coda.Я думаю, что установка пипса не работает для меня должным образом.В любом случае установите пакет, используя coda install .. имя пакета

0 голосов
/ 24 сентября 2019

Пакет pdfminer.six не поддерживает pdf с фильтром Crypt.Он поддерживает другие методы шифрования.Отличие от фильтра Crypt состоит в том, что этот алгоритм определяет алгоритм расшифровки как параметры, а не фиксированный фильтр.

Из справочного руководства Pdf:

Фильтр Crypt (PDF 1.5) позволяет обработчику безопасности на уровне документа (см. Раздел 3.5, «Шифрование») определять, какие алгоритмы следует использовать.используется для расшифровки входных данных.Параметр Name в словаре параметров декодирования для этого фильтра (см. Таблицу 3.12) указывает, какой из названных фильтров шифрования в документе (см. Раздел 3.5.4, «Фильтры шифрования») следует использовать.

Если вам нужна эта функция, вы можете создать выпуск github .

...