【发布时间】:2019-12-04 18:36:19
【问题描述】:
在下面的示例中,我使用 PDFMiner 生成单词 x,y 坐标,但是结果是逐行的。如何将每个单词与另一个单词分开,而不是逐行拆分单词组(参见下面的示例)。我已经尝试了PDFMiner tutorial 中的几个论点。 LTTextBox 和 LTText 都试过了。此外,我不能使用文本分析中通常使用的开始和结束偏移量。
这个 PDF 是一个很好的例子,它被用在下面的代码中。
http://www.africau.edu/images/default/sample.pdf
from pdfminer.layout import LAParams, LTTextBox, LTText
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
from pdfminer.converter import PDFPageAggregator
#Imports Searchable PDFs and prints x,y coordinates
fp = open('C:\sample.pdf', 'rb')
manager = PDFResourceManager()
laparams = LAParams()
dev = PDFPageAggregator(manager, laparams=laparams)
interpreter = PDFPageInterpreter(manager, dev)
pages = PDFPage.get_pages(fp)
for page in pages:
print('--- Processing ---')
interpreter.process_page(page)
layout = dev.get_result()
for lobj in layout:
if isinstance(lobj, LTText):
x, y, text = lobj.bbox[0], lobj.bbox[3], lobj.get_text()
print('At %r is text: %s' % ((x, y), text))
这将返回可搜索 PDF 的 x,y 坐标,如下所示:
--- Processing ---
At (57.375, 747.903) is text: A Simple PDF File
At (69.25, 698.098) is text: This is a small demonstration .pdf file -
At (69.25, 674.194) is text: just for use in the Virtual Mechanics tutorials. More text. And more
text. And more text. And more text. And more text.
想要的结果(坐标代表演示):
--- Processing ---
At (57.375, 747.903) is text: A
At (69.25, 698.098) is text: Simple
At (69.25, 674.194) is text: PDF
At (69.25, 638.338) is text: File
【问题讨论】: