我们可以选择通过指定PDF坐标来从PDF文档中提取表格。对于Windows用户,为了获取坐标,您必须将PDF文件上传到Tabula网页并导出包含坐标的脚本,然后将坐标输入到您的代码中。对于Mac用户,您只需使用预览应用程序和裁剪检查器。我只是想知道是否有任何第三方程序或插件为Windows用户提供此功能?我认为在下列情况下这会很方便:
如果有人能指出我能找到这样的东西,我将不胜感激。非常感谢。
答案 0 :(得分:5)
Tabula需要以PDF单位指定区域,其定义为1/72英寸。如果使用Acrobat Reader DC,则可以使用“测量”工具并将其读数乘以72.
Tabula需要将区域指定为 top , left , bottom 和 right 距离。要获得它们,您可以测量从页面的顶部到表格开头的距离,依此类推。
答案 1 :(得分:2)
“顶部+高度” (如果您愿意,可以将其称为底部)在此处被接受,但是,这不是从页面底部到表格的距离,而是从页面顶部到表格底部 的距离。
所有必要的细节都在Wiki here中进行了概述,但这是相关的:
注意left,top,height和width参数并计算以下内容:
y1 =顶部
x1 =左
y2 =顶部+高度
x2 =左+宽度
..那么它们的顺序是:y1,x1,y2,x2
可以提供一些完成工作的实用技巧。.我的pdf查看器无法测量,我尝试了linux程序'screenruler'(sudo apt install screenruler
),但这有点麻烦,还需要校准如here
最后,使用旧式方法获得了最准确的结果。在A4纸上打印一张带有表格的页面,用透明尺子进行所有测量,直到估计的毫米量级,所有尺寸的标尺线。好吧,直尺的另一边仅下降到了十六分之一英寸,与公制面相比没有那么细的颗粒,用袖珍计算器将厘米乘以28.346456693即可得到pdf单位。也许您身边有一个直尺,直尺下降到六分之一英寸;)
所有列的度量都是从页面的左侧开始的,只有列之间的内部分隔线,不包括表格最左侧或最右侧的行。
对于非常压缩的列,您可能会发现必须猜测一列字符溢出到下一列的较小尺寸。在这种情况下,您可以调整列的尺寸并进行迭代,直到正确为止。
答案 2 :(得分:0)
Tabula可以以“点”的形式理解坐标数据。
在Windows中,您可以使用Adobe Acrobat DC和Acrobat Reader DC测量区域坐标
如果您具有Adobe Acrobat DC- 工具>>编辑PDF >>选择您的区域,然后按Enter >>将单位更改为点
Top 100 pt = A
Left 50 pt = B
Cropped page size 370 x 225 pt = C x D
如果您具有Adobe 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")
答案 3 :(得分:0)
阅读器仅在PDF创建者允许的情况下才允许测量。 找到了这个 https://graphicdesign.stackexchange.com/a/81666
简要步骤:
答案 4 :(得分:0)
我遇到了同样的问题,代码似乎忽略了区域标注。通过在命令行中包含“ 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))