Spaces:
Sleeping
Sleeping
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() | |