> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/data-logic/flow-control/batch-processing.md).

# Batch Processing

Este bloque de función agrupa varios valores de entrada en un único contenedor de lote para reducir el uso de memoria durante el procesamiento. Úsalo cuando quieras agrupar elementos (imágenes, datos o valores genéricos) en un solo flujo que otros bloques puedan consumir como un batch.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

`Input 1`\
Primer valor que se incluirá en el batch. Puede ser datos de imagen, números, texto, listas u otros valores genéricos.

`Input 2`\
Segundo valor que se incluirá en el batch. Se pueden conectar entradas adicionales según tu flujo de trabajo.

## 📤 Salidas <a href="#outputs" id="outputs"></a>

`Batch`\
Una lista agrupada (batch) única que contiene los valores de entrada conectados, lista para procesamiento por lotes.

## 🕹️ Controles <a href="#controls" id="controls"></a>

Este bloque de función no tiene controles interactivos. Funciona agrupando lo que esté conectado a sus sockets de entrada.

## 🎯 Características <a href="#features" id="features"></a>

* Agrupa múltiples entradas en un único objeto batch optimizado para memoria, listo para procesamiento posterior.
* Acepta tipos de datos genéricos, por lo que puede agrupar imágenes, números, texto o listas.
* Útil para reducir la huella de memoria al manejar muchos elementos en una canalización.

## 📝 Cómo usar <a href="#usage" id="usage"></a>

1. Conecta los elementos que quieras agrupar en `Input 1` y `Input 2` (o más entradas si están disponibles).
2. El bloque emitirá una única salida llamada `Batch` que contiene esas entradas como una lista.
3. Alimenta la salida `Batch` a bloques que acepten entradas en formato batch o a bloques capaces de iterar sobre el batch.

## ⚙️ Comportamiento al ejecutar <a href="#evaluation" id="evaluation"></a>

Al ejecutarse el escenario, el bloque recoge los valores presentes en sus sockets de entrada y los emite empaquetados como un único `Batch`. Si falta alguna entrada o es inválida, el batch incluirá un marcador de posición para esa entrada, de modo que los bloques posteriores puedan manejarla de forma consistente.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Crea conjuntos de imágenes agrupadas desde múltiples fuentes combinando entradas de imagen como `Load Image`, `Camera USB`, `Camera IP (ONVIF)`, o `Video` en un único `Batch` para su procesamiento.
* Usa `Batch Processing` antes de bloques de IA pesados como `Object Detection`, `Mask Detection`, `Super Resolution` o `OCR` para reducir el uso máximo de memoria al procesar muchas imágenes.
* Después de procesar un batch, utiliza `Debatch` para dividir los resultados nuevamente en elementos individuales para dibujar o guardar.
* Fusiona múltiples batches con `Batch Concatenation` cuando necesites combinar batches creados en diferentes partes del flujo de trabajo.
* Usa `Get Batch Size` y `Get Element` para inspeccionar o acceder a elementos dentro del `Batch` con fines de lógica condicional o procesamiento selectivo.
* Al guardar resultados, conecta las salidas por elemento (después de `Debatch`) a `Image Logger`, `Image Write` o `Record Video` para almacenar las imágenes procesadas de forma eficiente.

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* Sin datos en `Batch`: Verifica que los bloques aguas arriba estén produciendo valores en las entradas. Si una entrada está intencionalmente vacía, ese espacio vacío aparecerá en el batch.
* Orden de elementos inesperado: El batch preserva el orden de las entradas según cómo estén conectadas. Reordena las conexiones si se requiere una secuencia distinta.
* Bloques posteriores no aceptan el batch: Algunos bloques esperan elementos individuales en lugar de batches. Usa `Debatch` para convertir un batch en elementos individuales antes de alimentarlos a esos bloques.
