Разбор PDF в HTML в Python 3 - PullRequest
       39

Разбор PDF в HTML в Python 3

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

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

Я искал несколько вариантов, доступных в Интернете, но пока безуспешно.Вот код, который я использовал для анализа 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

Затем я попробовал апачу-тику.Но с apache tika я не смог извлечь содержимое в правильном формате html, под чем я подразумеваю, что вывод apache tika возвращает результат в тегах

.У меня не было возможности извлечь теги заголовков и подзаголовков из документа PDF.Вот код, который я использовал.

from tika import parser
parsed_data_full = parser.from_file('PDF - Remraam Ph 1 Mosque.pdf',xmlContent=True)
parsed_data_full = parsed_data_full['content']
print(parsed_data_full)

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

Буду признателен за любую помощь, спасибо за чтение длинного вопроса.

...