Разбиение pdf-файла с помощью регулярного выражения
Я хочу разбить pdf-документ с помощью регулярного выражения (?: *\n){2,} и сохранить координаты каждого блока в виде словаря {"page x0 y0 x1 y1" : "some text", ...}
Я использую следующий код:
def read_pdf(self, document_path):
fp = open(document_path, 'rb')
parser = PDFParser(fp)
document = PDFDocument(parser)
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
rsrcmgr = PDFResourceManager()
device = PDFDevice(rsrcmgr)
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
doc = {}
def parse_obj(lt_objs, i, page):
for obj in lt_objs:
if isinstance(obj, pdfminer.layout.LTTextBoxHorizontal):
key = "%d %d %d %d %d" % (i, obj.bbox[0], page.mediabox[3] - obj.bbox[3], obj.bbox[2], page.mediabox[3] - obj.bbox[1])
doc[key] = obj.get_text().replace('\n', '')
elif isinstance(obj, pdfminer.layout.LTFigure):
parse_obj(obj._objs, i, page)
i = 1
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
layout = device.get_result()
parse_obj(layout._objs, i, page)
i += 1
return doc
Но иногда мне выдает слишком маленькие блоки. Подскажите, пожалуйста, как разбить pdf и сохранить координаты каждого блока. Спасибо!