我有以下 HTML 文件,其中包含bbox来自 PDF 文件的信息:
<flow>
<block xMin="53.879997" yMin="369.965298" xMax="63.939976" yMax="380.991433">
<line xMin="53.879997" yMin="369.965298" xMax="63.939976" yMax="380.991433">
<word xMin="53.879997" yMin="369.965298" xMax="63.939976" yMax="380.991433">10</word>
</line>
</block>
</flow>
<flow>
<block xMin="53.879997" yMin="417.965298" xMax="63.939976" yMax="428.991433">
<line xMin="53.879997" yMin="417.965298" xMax="63.939976" yMax="428.991433">
<word xMin="53.879997" yMin="417.965298" xMax="63.939976" yMax="428.991433">20</word>
</line>
</block>
</flow>
<flow>
<block xMin="111.351361" yMin="369.965298" xMax="134.220382" yMax="380.991433">
<line xMin="111.351361" yMin="369.965298" xMax="134.220382" yMax="380.991433">
<word xMin="111.351361" yMin="369.965298" xMax="116.331548" yMax="380.991433">1</word>
<word xMin="121.909358" yMin="369.965298" xMax="134.220382" yMax="380.991433">PC</word>
</line>
</block>
</flow>
以上是单词的边界框区域:10 20 1 PC
在原始文档中,是这样写的:
10 1 PC
20
因此,我想解析上面的 HTML 文件并提取所有 <line>标签,然后按yMin值对它们进行排序。上面的最终输出将是:10 1 PC 20而不是。
到目前为止我尝试过的
我不是很远,因为我还在学习 Python。我正在使用 BeautifulSoup4:
with open("test.html", "r") as f:
contents = f.read()
soup = BeautifulSoup(contents, 'lxml')
for line in soup.find_all("line", attrs={"ymin":True}):
print(line.get('ymin'))
上面只是打印出每个标签及其内容。
我不确定如何对行标签进行排序。
任何帮助将不胜感激。
小唯快跑啊
冉冉说
相关分类