【发布时间】:2019-12-03 19:19:35
【问题描述】:
在发布此内容之前,我已经广泛搜索了 stackoverflow,但无法在 camelot 页面尺寸上找到任何内容。有this 问题,建议使用table_region,但这并不能解决OP 的问题或我的问题。不幸的是,我无法评论跟进 OP 并查看他们是否找到了解决方案。
我想要做什么:
我正在使用 Camelot 来识别表格(显然)。有时,当我知道可能包含感兴趣表格的页面区域时,我只想在该区域中进行搜索。使用camelot.read_pdf() 的table_region kwarg 很容易做到这一点 - 我只需要提供一对坐标供 Camelot 搜索。
问题是,我使用 PyMuPDF 获得这些坐标,所以它们在 PyMuPDF 的坐标系中。我已经想出了如何翻译这些坐标,但我错过了来自 Camelot 的一个关键信息——页面的尺寸。这些值很容易在 PyMuPDF(Page 类 .bound() 属性)中获得,我需要 Camelot 等价物。如果有人认为在
到目前为止我所做的尝试:
我读了documentation。由于文档中的这一行,我想知道这是否可以提供一种获取尺寸的方法:“在使用 Lattice 时可能会出现未检测到较小线条的情况。计算检测到的最小线条的大小通过将 PDF 页面的尺寸除以,使用称为 line_scale 的缩放因子。默认情况下,其值为 15"
我对替代方案持开放态度,基本上我要么想检查页面区域是否包含表格(在 PyMuPDF 坐标系中描述的区域,对于 pdf 页面,尺寸通常为 (612, 792) 与原点在左上角。camelot 的原点在左下角)或者如果页面上的任何表格在给定区域中,如果这有意义的话。
【问题讨论】:
-
如果有人遇到类似问题,我发现 camelot 使用 opencv 的坐标系,
shape属性给出了 x 和 y 维度 -
您能说明一下您是如何从 shape 属性中获得页面尺寸的吗?
-
@pynewb 当然。将pdf页面转换为图像(有几种方法),然后将其加载到opencv(
cv2.imread)或将其转换为np.array,然后img.shape[1]是宽度,img.shape[0]是高度
标签: python python-camelot pymupdf