import gradio as gr import spacy import pandas as pd from docx import Document from io import BytesIO # Cargar el modelo de SpaCy en español nlp = spacy.load('zh_core_web_trf') # Función para extraer nombres de personas def extract_names_from_docx(docx_file): # Cargar el archivo DOCX document = Document(docx_file) full_text = [] for para in document.paragraphs: full_text.append(para.text) # Unir todo el texto text = ' '.join(full_text) # Procesar el texto con SpaCy doc = nlp(text) # Extraer los nombres de las personas (entidades PERSON) persons = [ent.text for ent in doc.ents if ent.label_ == 'PER'] # Eliminar duplicados persons = list(set(persons)) # Crear un DataFrame df = pd.DataFrame(persons, columns=['Nombres']) # Guardar el resultado en un archivo Excel en memoria output = BytesIO() with pd.ExcelWriter(output, engine='openpyxl') as writer: df.to_excel(writer, index=False) output.seek(0) return output, "nombres_personas.xlsx" # Interfaz de Gradio iface = gr.Interface( fn=extract_names_from_docx, inputs=gr.File(file_types=[".docx"]), outputs=[gr.File(), "text"], title="Extractor de Nombres", description="Sube un archivo .docx y extrae los nombres de las personas usando NLP con SpaCy. Descarga el resultado en un archivo Excel." ) # Iniciar la aplicación iface.launch()