import logging import os import shutil from app.utils.extract_utils import extract_text_from_pdf, extract_text_from_docx from datetime import datetime def extract_text_from_files(files): """Estrae il testo dai file caricati.""" if not files: return "" extracted_text = [] # Usa il percorso assoluto della cartella Temp_file temp_dir = "/Users/danieledragoni/hugginface/Edurag_beta/app/Temp_file" if not os.path.exists(temp_dir): os.makedirs(temp_dir) for file in files: temp_path = None try: file_extension = os.path.splitext(file.name)[1].lower() # Crea un nome file univoco nella cartella Temp_file timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") temp_filename = f"temp_{timestamp}{file_extension}" temp_path = os.path.join(temp_dir, temp_filename) # Copia il file da Gradio alla nostra cartella Temp_file shutil.copy2(file.name, temp_path) logging.info(f"File temporaneo creato in: {temp_path}") # Estrai il testo in base al tipo di file if file_extension == '.pdf': try: text = extract_text_from_pdf(temp_path) extracted_text.append(text) except Exception as e: logging.error(f"Errore nell'elaborazione del PDF {file.name}: {str(e)}") extracted_text.append(f"[Errore nell'elaborazione del PDF {file.name}. Dettaglio: {str(e)}]") elif file_extension == '.docx': text = extract_text_from_docx(temp_path) extracted_text.append(text) elif file_extension == '.txt': with open(temp_path, 'r', encoding='utf-8') as f: text = f.read() extracted_text.append(text) except Exception as e: logging.error(f"Errore durante l'elaborazione del file {file.name}: {str(e)}") extracted_text.append(f"[Errore nell'elaborazione del file {file.name}]") finally: # Pulisci il file temporaneo if temp_path and os.path.exists(temp_path): try: os.remove(temp_path) except Exception as e: logging.error(f"Errore nella pulizia del file temporaneo: {str(e)}") return "\n\n".join(extracted_text)