Я пытался найти решение для анализа 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-теги для идентификации заголовков и подзаголовков этого документа.
Буду признателен за любую помощь, спасибо за чтение длинного вопроса.