Как получить местоположение текста в PDF с помощью PDFMiner?

Документация PDFMiner гласит:

PDFMiner позволяет получить точное местоположение текста на странице

Однако я не смог найти, как это сделать. Документация PDFMiner довольно скудная, поэтому я не понял, как это сделать.

Вы ищете свойство bbox для каждого объекта макета. Существует немного информации о том, как разбирать иерархию макета в документации PDFMiner, но она не охватывает все.

Вот пример:

 from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfpage import PDFPage from pdfminer.pdfparser import PDFParser from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LAParams, LTTextBox, LTTextLine, LTFigure def parse_layout(layout): """Function to recursively parse the layout tree.""" for lt_obj in layout: print(lt_obj.__class__.__name__) print(lt_obj.bbox) if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine): print(lt_obj.get_text()) elif isinstance(lt_obj, LTFigure): parse_layout(lt_obj) # Recursive fp = open('example.pdf', 'rb') parser = PDFParser(fp) doc = PDFDocument(parser) rsrcmgr = PDFResourceManager() laparams = LAParams() device = PDFPageAggregator(rsrcmgr, laparams=laparams) interpreter = PDFPageInterpreter(rsrcmgr, device) for page in PDFPage.create_pages(doc): interpreter.process_page(page) layout = device.get_result() parse_layout(layout) 

Если вас интересует местоположение отдельных объектов LTChar , вы можете рекурсивно проанализировать объекты дочернего макета LTTextBox и LTTextLine же, как то, что сделано с помощью LTFigure в приведенном выше примере.