Извлечение таблиц в формате 1000 в формате PDF с использованием аргумента tabula area

#python #pdf #tabula

#python #PDF #tabula

Вопрос:

У меня около 970 файлов PDF с одинаковым форматом, и я хочу извлечь таблицу из этих PDF-файлов. после некоторых исследований я могу извлечь таблицу, используя аргумент tabula-area, к сожалению, параметры области не одинаковы для каждого PDF-файла, поэтому я не могу выполнить итерацию. Итак, если кто-нибудь может помочь мне автоматизировать поиск аргументов этой области для каждого PDF-файла, это было бы большой помощью. формат файла pdf

как вы можете видеть на изображении, я должен использовать area, иначе мусор в заголовке также анализируется. Вот сценарий, который я могу успешно выполнить для первого pdf, но мне нужно извлечь из 970 файлов, что невозможно вручную. ПОЖАЛУЙСТА. ПОМОГИТЕ!!

 @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```
  

Ответ №1:

наконец-то смог сделать это сам …. в основном взял код из R и использовал оболочку …. кажется, сообщество поддержки R гораздо активнее в stack, чем python ….. спасибо