我正在尝试使用PDFQuery包从PDF中提取信息。信息不是每次都在同一个位置,所以我需要一个查询标签。首先,我编写了函数:
def clean_text_data(text):
return text.split(':')[1]
然后我编写了一个函数来提取文本:
Date = clean_text_data(pdf.pq('LTTextLineHorizontal:contains("Date")').text())
然而,问题是(出于某种原因)几乎所有的数据都在下一个“LTTextHorizontal”上
XML如下所示:
<LTTextLineHorizontal bbox="[58.501, 377.094, 78.501, 385.094]" height="8.0" width="20.0" word_margin="0.1" x0="58.501" x1="78.501" y0="377.094" y1="385.094"><LTTextBoxHorizontal bbox="[58.501, 377.094, 78.501, 385.094]" height="8.0" index="39" width="20.0" x0="58.501" x1="78.501" y0="377.094" y1="385.094">Date: </LTTextBoxHorizontal></LTTextLineHorizontal>
<LTTextLineHorizontal bbox="[107.249, 377.334, 147.281, 385.334]" height="8.0" width="40.032" word_margin="0.1" x0="107.249" x1="147.281" y0="377.334" y1="385.334"><LTTextBoxHorizontal bbox="[107.249, 377.334, 147.281, 385.334]" height="8.0" index="40" width="40.032" x0="107.249" x1="147.281" y0="377.334" y1="385.334">02/26/2020 </LTTextBoxHorizontal></LTTextLineHorizontal>
这里的日期是2020年2月26日,但它在紧接着的方框中。如何创建一个函数来提取以下框
你可以这样做:
在第一部分中,我将查找包含“Date”的PDF区域,并提取其边界框的源坐标,因此x0:y0对应于写入“Date”的位置的左下角
之后,我偏移这些坐标以创建一个新的bbox,它包含我实际查找的信息,我得到它的
.text()
坐标以点为单位进行偏移,可以使用Acrobat标尺进行测量
来源如下:https://pypi.org/project/pdfquery/#quick-start
《快速入门指南》有一个非常好的例子
相关问题 更多 >
编程相关推荐