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:
path = 'caminho-do-arquivo.pdf'
for texto in read_pdf(path, pages='all'):
texto = texto.dropna(how='all', axis=1)
nome = texto['Nome Passageiro']
destino = texto['Desembarque']
lista = (nome, destino)
display(lista)
É 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.
import os
import pdfplumber
import pandas as pd
# Set the path to the folder containing the PDFs
folder_path = 'path-to-pdf-folder'
# List to store data from each PDF
data_list = []
# Iterate through all PDF files in the folder
for file_name in os.listdir(folder_path):
if file_name.endswith('.pdf'):
file_path = os.path.join(folder_path, file_name)
# Open the PDF
with pdfplumber.open(file_path) as pdf:
# Read each page of the PDF
for page in pdf.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' in page_text and 'Desembarque' in page_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 logic
desembarque = "Example Destination" # Replace with actual extraction logic
# Append the extracted data to the list
data_list.append([nome_passageiro, desembarque])
# Convert the list to a pandas DataFrame for better visualization and further processing
df = pd.DataFrame(data_list, columns=['Nome Passageiro', 'Desembarque'])
# Display the DataFrame
print(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