问题描述
我大约有970个具有相同格式的pdf文件,我想从这些pdf文件中提取表格。经过一些研究后,我能够使用tabula-area参数提取表格,不幸的是,每个pdf的区域参数都不相同,因此我无法进行迭代。 因此,如果有人可以帮助我自动为每个pdf查找该区域参数,那将是很大的帮助。
正如您在图像中看到的那样,我必须使用area,否则标题中的垃圾也会被解析。这是我能够成功执行第一个pdf的脚本,但是我需要从970files中提取,这是无法手动执行的。 PLS。帮助!
@author: Jiku-tlenova
"""
import numpy as np
import matplotlib as plt
import pandas as pd
import os
import re
import PyPDF2 as rdpdf
import tabula
path = "/codes/python/"
os.chdir(path)
from convert_pdf_to_txt import convert_pdf_to_txt
os.getcwd()
pa="s/"
os.chdir(path+pa)
files= os.listdir(".")
ar=[187.65,66.35,606.7,723.11]
tablist=[]
for file in files:
i=0
pgnum=2;endval=0
weind=re.findall("\d+",file)
print(file)
reader = rdpdf.PdfFileReader(file)
while endval==0:
table0 =tabula.read_pdf(file,pages = i+2,spreadsheet=True,multiple_tables = False,lattice=True,area=ar) #pandas_options={'header': 'infer'}
table0=table0.dropna(how="all",axis=1)
#foramtiing headers
head=(table0.iloc[0,:]+table0.iloc[1,:]).T
table0.columns=head
table0=table0.drop([0,1])
table0=table0.iloc[:-1] #delete last row - not needed
mys=table0[table0.columns[-1]]
val=mys.isnull().all()
if val==True:
endval=1
tablist.append(table0)
i=i+1```
解决方法
最终我自己就能做到。...基本上是从R中获取代码并使用了包装器....似乎R支持社区在堆栈中比python社区更活跃.....谢谢