python-3.x - 如何使用 python-camelot 获取表格坐标?
问题描述
我正在尝试解析一些 pdf 文件以提取一些关键信息。每个 pdf 中有许多表包含这些信息的一部分。所以我尝试使用 camelot 来提取表格,我得到了很好的结果,但我想提取每个表格的标题,因为我想为每个表格及其标题做一个映射。所以我尝试使用获取每个表格的坐标,tables[i]._bbox
然后在这些坐标上添加一些边距以检测表格标题的区域(它可以在表格的顶部、左侧或底部),如图所示在图像中:左侧表格的标题
谁能告诉我如何使用python根据表格坐标从pdf中获取包含表格标题的红色区域的坐标?
解决方案
您可以直接创建 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)
推荐阅读
- reactjs - 如何在反应中使用 react-jsonschema-form?
- java - 无法自动接线。找不到“PetService”类型的 bean
- npm - npm 更新检查中的问题失败
- apache - 为 Maven 站点使用 Web 服务器
- ansible - Ansible 命令模块中的通配符
- go - 如何将golang中的用户输入整数转换为函数
- c++ - 如何在 C++ 中对 long 进行哈希处理?
- javascript - 我可以使用 NodeJS 更新 WHMCS 中的自定义字段吗?
- python - 循环检查按钮并获取其值
- java - 从角度发出请求时,HttpSession 不返回检索值