Ler vários arquivos PDF de uma pasta e gerar uma lista
1 resposta
programaçãopdfpython
A
adiogo27
Estou iniciando nos estudos sobre Python e quero fazer uma lista de arquivos a partir de uma fonte de dados de uma pasta de PDFs. Iniciei fazendo um FOR para a leitura dos arquivos, mas não me retorna todos os PDFs. Entao estou testando fazer PDF por PDF, mas não consigo gerar uma lista com 3 colunas. Segue o código que estou executando:
É necessário percorrer todos os ficheiros PDF da pasta, e não apenas um. Isso pode ser feito usando o módulo os ou glob para listar os arquivos no diretório.
Está a utilizar uma função read_pdf. Pode ser das bibliotecas camelot, tabula-py, ou pdfplumber, mas o código não indica qual.
Eis uma abordagem que utiliza o pdfplumber para a leitura de PDFs, o glob para obter os ficheiros PDF e o pandas para armazenar os dados numa DataFrame:
Preciso de instalar o pdfplumber e o pandas.
importosimportpdfplumberimportpandasaspd# Set the path to the folder containing the PDFsfolder_path='path-to-pdf-folder'# List to store data from each PDFdata_list=[]# Iterate through all PDF files in the folderforfile_nameinos.listdir(folder_path):iffile_name.endswith('.pdf'):file_path=os.path.join(folder_path,file_name)# Open the PDFwithpdfplumber.open(file_path)aspdf:# Read each page of the PDFforpageinpdf.pages:# Extract text from the page (you can also extract tables)page_text=page.extract_text()# Assuming your data is in table format (adjust as necessary)# Here, we extract names and destinations manually from text.# You may need to use more specific logic to parse the text or tables.# Example logic for parsing can be updated based on your PDF structure.if'Nome Passageiro'inpage_textand'Desembarque'inpage_text:# Dummy parsing: This is where you'd extract the actual values from your PDF.# You'll need to modify this part based on how your PDF is structured.nome_passageiro="Example Name"# Replace with actual extraction logicdesembarque="Example Destination"# Replace with actual extraction logic# Append the extracted data to the listdata_list.append([nome_passageiro,desembarque])# Convert the list to a pandas DataFrame for better visualization and further processingdf=pd.DataFrame(data_list,columns=['Nome Passageiro','Desembarque'])# Display the DataFrameprint(df)# Optionally, you can export the DataFrame to a CSV or Excel file:df.to_csv('output.csv',index=False)# Export to CSV# df.to_excel('output.xlsx', index=False) # Export to Excel