import gradio as gr import os import sys import zipfile import tempfile from spacy2 import classifica_e_sposta_documenti import shutil import re # Aggiunto per rimuovere caratteri non consentiti nei nomi delle directory # Aggiungi il percorso relativo di Poppler alla variabile di ambiente PATH poppler_path = os.path.join(os.getcwd(), "poppler-24.01.0") os.environ["PATH"] += os.pathsep + poppler_path # Aggiungi il percorso relativo di Poppler alla variabile di ambiente LD_LIBRARY_PATH (solo per Linux) if sys.platform.startswith("linux"): os.environ["LD_LIBRARY_PATH"] = poppler_path def rimuovi_caratteri_non_consentiti(nome): # Utilizza una regular expression per rimuovere caratteri non consentiti return re.sub(r'[\/:*?"<>|]', '', nome) def classifica_e_sposta_documenti_wrapper(uploaded_files): # Crea una cartella temporanea per archiviare i file caricati temp_folder = tempfile.mkdtemp() for uploaded_file in uploaded_files: # Rimuovi caratteri non consentiti dal nome del file file_name = rimuovi_caratteri_non_consentiti(uploaded_file.name) file_path = os.path.join(temp_folder, file_name) # Sposta il file temporaneo nella cartella temporanea shutil.move(uploaded_file.name, file_path) # Chiamata alla tua funzione spacy2.classifica_e_sposta_documenti con il nome del file classifica_e_sposta_documenti(file_path, file_name) # Creazione del file zip zip_filename = 'processed_files.zip' zip_filepath = os.path.join(temp_folder, zip_filename) with zipfile.ZipFile(zip_filepath, 'w', zipfile.ZIP_DEFLATED) as zipf: for root, dirs, files in os.walk(temp_folder): for file in files: zipf.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), os.path.join(temp_folder, '..'))) return zip_filepath def process_files(uploaded_files): # Chiamata alla tua funzione spacy2.classifica_e_sposta_documenti zip_filepath = classifica_e_sposta_documenti_wrapper(uploaded_files) return "Elaborazione completata. Puoi scaricare i file elaborati [qui](" + zip_filepath + ")." iface = gr.Interface(fn=process_files, inputs="files", outputs="text", live=True) iface.launch()