首页 > 解决方案 > 如何使用 python-camelot 获取表格坐标?

问题描述

我正在尝试解析一些 pdf 文件以提取一些关键信息。每个 pdf 中有许多表包含这些信息的一部分。所以我尝试使用 camelot 来提取表格,我得到了很好的结果,但我想提取每个表格的标题,因为我想为每个表格及其标题做一个映射。所以我尝试使用获取每个表格的坐标,tables[i]._bbox然后在这些坐标上添加一些边距以检测表格标题的区域(它可以在表格的顶部、左侧或底部),如图所示在图像中:左侧表格的标题

顶部表格的标题

谁能告诉我如何使用python根据表格坐标从pdf中获取包含表格标题的红色区域的坐标?

标签: python-3.xpdfpython-camelot

解决方案


您可以直接创建 PDF 解析器。例如Lattice

parser = Lattice(**kwargs)
for p in pages:
    t = parser.extract_tables(p, suppress_stdout=suppress_stdout,
                                          layout_kwargs=layout_kwargs)
    tables.extend(t)

然后你就可以访问parser.layout其中包含页面中的所有组件了。这些组件都有bbox (x0, y0, x1, y1),提取的表也有一个bbox对象。您可以找到最接近表格的组件并提取其文本和坐标。如果您不想更改在 camelot 中调用表提取的方式,可以再次解析 PDF:

from camelot import utils
layout, dim = utils.get_page_layout(file_name)

推荐阅读