---
name: calculate_media_strategy
kind: function
lang: py
domain: core
version: "1.0.0"
purity: pure
signature: "calculate_media_strategy(image_count: int, line_count: int) -> str"
description: "Determina la estrategia optima de procesamiento de medios para un documento basado en la proporcion de imagenes vs texto. Retorna full_page_vlm, extract o text_only."
tags: [media, strategy, document, vision, vlm, images, classification]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: image_count
    desc: "numero total de imagenes en el documento"
  - name: line_count
    desc: "numero total de lineas de texto en el documento"
output: "string con estrategia optima: 'full_page_vlm', 'extract' o 'text_only'"
tested: true
tests:
  - "0 imagenes text_only"
  - "2 imagenes 100 lineas extract"
  - "10 imagenes 20 lineas full_page_vlm"
  - "5 imagenes 100 lineas full_page_vlm"
  - "0 lineas division por cero evitada"
test_file_path: "python/functions/core/calculate_media_strategy_test.py"
file_path: "python/functions/core/calculate_media_strategy.py"
---

## Ejemplo

```python
calculate_media_strategy(0, 50)    # "text_only"
calculate_media_strategy(2, 100)   # "extract"  (ratio 0.02, pocas imagenes)
calculate_media_strategy(10, 20)   # "full_page_vlm"  (ratio 0.5 > 0.3)
calculate_media_strategy(5, 100)   # "full_page_vlm"  (>= 5 imagenes)
calculate_media_strategy(3, 0)     # "text_only"  (sin texto, sin contexto)
```

## Notas

Logica de clasificacion en tres niveles:

1. `full_page_vlm` — documento dominado por imagenes: ratio imagen/linea > 0.3 o al menos 5 imagenes. Se usa un vision-language model sobre la pagina completa.
2. `extract` — pocas imagenes en documento con texto: extraer y procesar imagenes individualmente.
3. `text_only` — sin imagenes o sin lineas de texto: procesar solo el texto.

El guard `line_count > 0` evita la division por cero y trata documentos sin lineas como `text_only` independientemente del conteo de imagenes, ya que sin texto no hay contexto suficiente para clasificar como `extract`.

Funcion pura, sin dependencias externas. Reimplementada conceptualmente a partir de la logica de clasificacion de medios de OpenViking (AGPL-3.0).
