【问题标题】:Camelot PDF dimensionsCamelot PDF 尺寸
【发布时间】: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


【解决方案1】:

试试下面的代码,看看它是否给你想要的尺寸:

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

【讨论】:

  • 是的,这确实有效。看看这个,layoutdim 将提供缩放。 layout.widthlayout.height 应该分别等于 dim[0]dim[1]。不知道为什么他们在他们的source code 中设置dim 他们这样做的方式,因为我以前从未使用过bbox 属性来获取使用pdfminer 时的宽度/高度,但随着我变得更加熟悉pdfs,这可能是我处理我现在发布的原始问题的方式。
  • 这种方法如何获取pdf中特定页面的尺寸?
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
相关资源
最近更新 更多