11

我们可以选择通过指定其坐标从 PDF 文档中提取表格。对于 windows 用户,为了获取坐标,您必须将 PDF 文件上传到 Tabula 网页并导出包含坐标的脚本,然后将坐标输入到您的代码中。对于 Mac 用户,您只需使用 Preview 应用程序和裁剪检查器。我只是想知道是否有任何第三方程序或插件向 Windows 用户提供此功能?我认为这在以下情况下会很方便:

  1. 当您无法访问互联网时。
  2. 我认为预览应用程序会更准确,因为我经历过 Tabula 网页产生的不准确坐标。

如果有人能指出我在哪里可以找到这样的东西,我将不胜感激。非常感谢。

4

5 回答 5

19

Tabula 需要以 PDF 单位指定区域,定义为 1/72 英寸。如果使用 Acrobat Reader DC,您可以使用测量工具并将其读数乘以 72。

Tabula 需要将区域指定为topleftbottomright距离。要获得它们,您可以测量从页面顶部到表格开头的距离等等。

在此处输入图像描述

于 2017-08-04T22:38:50.137 回答
4

阅读器仅在 PDF 创建者允许的情况下才允许测量。而是找到了这个: https ://graphicdesign.stackexchange.com/a/81666

简要步骤:

  1. 下载苏门答腊PDF。它也可以作为 zip 使用,无需安装。
  2. 使用 Sumatra 阅读器打开 PDF。
  3. 按'm' - 这会在左上角显示光标位置。
  4. 使用 tabula 和选项 -p 表示页面,-a 表示区域。(上、左、下、右)
于 2018-09-24T07:35:49.443 回答
4

Tabula 可以理解“点”形式的坐标数据。

在 Windows 中,您可以使用 Adob​​e Acrobat DC 和 Acrobat Reader DC 测量您的区域坐标

如果您有 Adob​​e Acrobat DC - 工具 >> 编辑 PDF >> 选择您的区域并按 Enter >> 将单位更改为点

Top               100       pt = A
Left              50        pt = B
Cropped page size 370 x 225 pt = C x D

如果您有 Adob​​e Acrobat DC 或 Acrobat Reader DC- 编辑 >> 首选项 >> 单位 >> 将页面单位更改为点 >> 确定 >> 工具 >> 测量

Top           = A = 100
Left          = B = 50
Areas  Width  = C = 370
Areas  Length = D = 225

你必须做这个计算

area=[A,B,A+D,B+C]
area=[100,50,100+225,50+370]

在代码中

df=read_pdf(folder,area=[[100,50,325,420]] ,output_format="xlsx")
于 2018-09-07T04:44:22.647 回答
4

我有同样的问题,代码似乎忽略了区域标注。通过在命令行中包含“guess = False”来修复它。像这样(注意我使用的是修订版 1.2.1):

df = tabula.read_pdf(file_folder + file_name, 
                     guess=False, pages=1, stream=True , encoding="utf-8", 
                     area = (200.8125,64.6425,352.2825,496.1025), 
                     columns = (65.3,196.86,294.96,351.81,388.21,429.77))
于 2018-10-05T15:51:01.683 回答
2

如果您愿意,您可以称之为底部的“顶部+高度”在此处接受的答案中缺失,尽管这不是从页面底部到表格的距离,而是从页面顶部到底部的距离的表

所有必要的细节都在此处的 wiki 中进行了总结,但这是相关的部分:

注意 left、top、height 和 width 参数并计算以下内容:

y1 = 顶部

x1 = 左

y2 = 顶部 + 高度

x2 = 左 + 宽度

..那么它们的顺序是:y1,x1,y2,x2

可以提供一些关于完成工作的实用技巧。我的 pdf 查看器没有测量,我尝试了 linux 程序“screenruler”(sudo apt install screenruler),但这有点痛苦,还需要按照此处所述进行校准

然而,最后用老式的方法得到了最准确的结果。在 A4 纸上打印一张带有表格的页面,用透明尺子进行所有测量,估计为一毫米的几分之一,所有尺寸的标线。好吧,尺子的另一边只下降到 16 英寸,这不是细粒度的,所以用公制边,用袖珍计算器乘以 28.346456693 的厘米得到 pdf 单位。也许你周围有一个尺子,尺子的高度只有六分之一英寸;)

列的测量都是从页面的左边开始的,只有列之间的内部分隔线,不包括表格最左边或最右边的线。

您可能会发现对于非常压缩的列,您必须猜测一列中的字符溢出到下一列的小尺寸。在这种情况下,您可以调整列尺寸并迭代直到正确。

于 2020-04-08T09:42:48.060 回答