2024-05-23 18:44:13 发布
网友
PDFMiner的文档显示:
PDFMiner allows one to obtain the exact location of text in a page
但是,我还没有找到如何做到这一点。PDFMiner的“文档”非常稀少,所以我不知道如何做到这一点。
您正在每个布局对象上查找bbox属性。PDFMiner文档中有一些关于how to parse the layout hierarchy的信息,但它并没有涵盖所有内容。
bbox
下面是一个例子:
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所做的那样。
LTChar
LTTextBox
LTTextLine
LTFigure
您正在每个布局对象上查找
bbox
属性。PDFMiner文档中有一些关于how to parse the layout hierarchy的信息,但它并没有涵盖所有内容。下面是一个例子:
如果您对单个
LTChar
对象的位置感兴趣,您可以递归地解析成LTTextBox
和LTTextLine
的子布局对象,就像在上面的示例中对LTFigure
所做的那样。相关问题 更多 >
编程相关推荐