Generación de código

Crear una función a partir de una especificación

Genera una función limpia y comentada en el lenguaje que elijas a partir de su objetivo, entradas, salida y casos límite.
Eres un desarrollador senior en [LENGUAJE]. Escribe una función que cumpla esta especificación:

Objetivo: [qué debe hacer]
Entradas: [parámetros y tipos]
Salida: [qué devuelve]
Casos límite a tener en cuenta: [casos]

Requisitos: código limpio y comentado, nombres descriptivos y manejo de errores. Añade 2-3 ejemplos de uso.
por JofranNET

Importación automática de cartas mediante IA

# Implementación: Importación automática de cartas mediante IA

## Objetivo

Permitir a los restaurantes crear su carta digital a partir de una fotografía o PDF de su carta física, reduciendo el tiempo de configuración inicial.

---

## Flujo de funcionamiento

### 1. Subida de archivo

El usuario podrá subir:

* Fotografías (JPG, PNG, WEBP)
* Documentos PDF

### 2. Extracción de texto

Se utilizará Tesseract OCR para extraer el texto del documento.

Ejemplo:

```text
Entrantes
Patatas Bravas 6,50€
Croquetas Caseras 8,00€

Pizzas
Barbacoa 12,50€
Carbonara 11,90€
```

### 3. Procesamiento mediante IA

El texto obtenido se enviará a Ollama mediante API local.

Prompt sugerido:

```text
Extrae las categorías, productos, descripción y precio.

Devuelve únicamente JSON válido.

Formato:

{
  "categorias": [
    {
      "nombre": "",
      "productos": [
        {
          "nombre": "",
          "descripcion": "",
          "precio": ""
        }
      ]
    }
  ]
}
```

### 4. Respuesta esperada

```json
{
  "categorias": [
    {
      "nombre": "Entrantes",
      "productos": [
        {
          "nombre": "Patatas Bravas",
          "descripcion": "",
          "precio": "6.50"
        },
        {
          "nombre": "Croquetas Caseras",
          "descripcion": "",
          "precio": "8.00"
        }
      ]
    },
    {
      "nombre": "Pizzas",
      "productos": [
        {
          "nombre": "Barbacoa",
          "descripcion": "",
          "precio": "12.50"
        }
      ]
    }
  ]
}
```

### 5. Pantalla de revisión

Antes de guardar:

* Mostrar categorías detectadas.
* Mostrar productos detectados.
* Permitir modificar precios.
* Permitir mover productos entre categorías.
* Permitir eliminar elementos incorrectos.

### 6. Guardado automático

Tras la validación:

* Crear categorías.
* Crear productos.
* Asociar productos a la carta.
* Generar la carta digital.

---

## Tecnologías

### OCR

* Tesseract OCR

### Inteligencia Artificial

* Ollama
* Modelo recomendado:

  * Llama 3.2
  * Qwen 3

### Backend

* PHP 8.x
* API REST interna

### Base de datos

* MariaDB / MySQL

---

## Endpoint interno sugerido

```http
POST /api/menu/import
```

Parámetros:

```json
{
  "restaurant_id": 123,
  "file": "menu.pdf"
}
```

Respuesta:

```json
{
  "success": true,
  "categorias": [...]
}
```

---

## Ventajas para el cliente

* Configuración inicial en menos de 2 minutos.
* Menor trabajo manual.
* Menos errores de introducción de datos.
* Mayor conversión de nuevos restaurantes.

---

## Posible modelo comercial

### Plan gratuito

* Creación manual de cartas.

### Plan Pro

* Importación desde foto.
* Importación desde PDF.
* Procesamiento automático mediante IA.

---

## Recursos del servidor

Servidor actual:

* AlmaLinux 9
* Plesk
* 32 GB RAM

Capacidad suficiente para ejecutar:

* Aplicación principal.
* Tesseract OCR.
* Ollama.
* Procesamiento concurrente de cartas.

---

## Fases de desarrollo

### Fase 1

* Instalación de Tesseract.
* Instalación de Ollama.
* Prueba de extracción de texto.

### Fase 2

* Generación automática de JSON.

### Fase 3

* Pantalla de revisión.

### Fase 4

* Integración con la base de datos.

### Fase 5

* Lanzamiento en producción.