File size: 1,645 Bytes
d61bee5 59503ba bfa2e5d 59503ba d61bee5 bfa2e5d d61bee5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import gradio as gr
import spacy
import pandas as pd
from docx import Document
from io import BytesIO
import subprocess
# Comando a ejecutar
command = ['python', '-m', 'spacy', 'download', 'zh_core_web_trf']
# Ejecutar el comando
subprocess.run(command, check=True, text=True, capture_output=False)
# 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() |