import gradio as gr from transformers import TrOCRProcessor, VisionEncoderDecoderModel from PIL import Image # Cargar modelo OCR de Hugging Face processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-stage1") model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-stage1") # Lógica para analizar banners def analizar_banner(img): pixel_values = processor(images=img, return_tensors="pt").pixel_values generated_ids = model.generate(pixel_values) texto = processor.batch_decode(generated_ids, skip_special_tokens=True)[0].lower() # Clasificación basada en prioridad if any(x in texto for x in ["día de la madre", "día del padre", "navidad", "san valentín", "día de la mujer", "día del hombre"]): tipologia = "fechas especiales" descripcion = next((x for x in ["día de la madre", "día del padre", "navidad", "san valentín", "día de la mujer", "día del hombre"] if x in texto), "") elif "nuevo" in texto: tipologia = "lanzamiento o innovación" descripcion = "nuevo producto" elif any(x in texto for x in ["vacaciones", "verano", "invierno", "playa", "regreso a clases"]): tipologia = "big seasonality" descripcion = "temporada" elif any(x in texto for x in ["solar fest", "madrugón", "miércoles de dermocosmética"]): tipologia = "evento marca e-retailer" descripcion = "" elif any(x in texto for x in ["promo", "promoción", "descuento", "%"]): tipologia = "dinamica comercial" descripcion = "" elif any(x in texto for x in ["beneficio", "ingrediente", "cuida", "hidrata"]): tipologia = "informativo" descripcion = "" else: tipologia = "informativo" descripcion = "" resultado = f"🧾 Texto detectado:\n{texto}\n\n🏷️ Tipología: {tipologia}\n📝 Descripción: {descripcion}" return resultado # Interfaz Gradio demo = gr.Interface( fn=analizar_banner, inputs=gr.Image(type="pil"), outputs="text", title="🧠 Clasificador OCR de Banners (demo HuggingFace)", description="Sube un banner y detectaremos automáticamente su contenido y tipología." ) demo.launch()