El Verdadero Cuello de Botella: Datos, No Arquitectura
¡Hola devs! Cuando hablamos de OCR, la mayoría de los equipos se obsesiona con la arquitectura del modelo — capas transformer, cabezas de atención, elección del backbone. Pero la historia del Nemotron OCR v2 le da la vuelta a esa lógica. El equipo de NVIDIA descubrió que, incluso expandiendo el conjunto de caracteres de 855 a 14,244, la precisión apenas se movió. El modelo podía teóricamente generar los caracteres correctos, pero nunca había aprendido cómo se veían.
La conclusión es clara: el cuello de botella son los datos, no la arquitectura.
Para OCR multilingüe, recolectar y anotar imágenes reales a escala es prohibitivamente caro. ¿Anotar bounding boxes a nivel de palabra, línea y párrafo en seis idiomas diferentes? Olvídalo. La generación de datos sintéticos resuelve esto — te da la escala del web scraping con la pureza de la anotación manual.
Este enfoque produjo el Nemotron OCR v2, que redujo el NED (Normalized Edit Distance) para idiomas no ingleses de 0.56–0.92 a 0.035–0.069. Vamos a ver cómo lo hicieron.
Fuente: Blog de NVIDIA - Nemotron OCR v2

El Pipeline de Datos Sintéticos: Agnóstico de Idioma
La magia está en el pipeline de renderizado. Es lo suficientemente genérico para funcionar con cualquier idioma — solo necesitas texto fuente y fuentes tipográficas. Checa esto:
Ingredientes
- Texto fuente de mOSCAR, un corpus web multilingüe con 163 idiomas. Esto te da vocabulario, longitud de frases y frecuencia de caracteres realistas.
- Fuentes de colecciones open-source como Google Fonts y Noto — de 165 a 1,258 fuentes únicas por idioma.
Renderizado con SynthDoG Modificado
El equipo extendió SynthDoG (del proyecto Donut) para generar:
- Bounding boxes multinivel — palabra, línea y párrafo, con quads de 4 puntos
- Grafos de relación para orden de lectura (esencial para layouts con múltiples columnas y tablas)
- Modos de layout diversos — texto fluido, palabras estilo escena, columnas verticales (para CJK), tablas, tabla de contenidos, slides y páginas de documento
- Reconocimiento a nivel de línea para idiomas CJK (sin fronteras de palabra para segmentar)
Pila de Aumentaciones
Cada página renderizada pasa por aumentaciones aleatorias:
- Nivel del texto: bordes, sombras, ruido de glifo, variación de opacidad del trazo
- Nivel de la imagen: dilatación, erosión, blur mediano, distorsión elástica
- Nivel de la página: jitter de contraste/brillo, blur Gaussiano/de movimiento, desplazamiento de color, sombras, ruido aditivo
¿Resultado? 12.2 millones de muestras en inglés, japonés, coreano, ruso, chino simplificado y tradicional.
# Pseudocódigo simplificado del pipeline de datos sintéticos
import random
from synthdog import DocumentRenderer
from augmentations import apply_augmentations
idiomas = ['en', 'ja', 'ko', 'ru', 'zh_cn', 'zh_tw']
for lang in idiomas:
texto_fuente = load_moscar_subset(lang)
fuentes = load_fuentes_para_idioma(lang)
renderer = DocumentRenderer(fuentes=fuentes, modos_layout=['multi_columna', 'tabla', 'slide', 'texto_escena'])
for _ in range(numero_muestras):
texto = random.choice(texto_fuente)
imagen, anotaciones = renderer.render(texto, modo_layout=random.choice(renderer.modos_layout))
imagen = apply_augmentations(imagen, altura_minima_texto=8)
guardar_muestra(imagen, anotaciones, lang)
Lectura relacionada: Pruebas Just-in-Time para Desarrollo Agentic — otro enfoque basado en datos para la calidad.

Arquitectura: Backbone Compartido, Features Reutilizadas
El Nemotron OCR v2 usa diseño FOTS (Fast Oriented Text Spotting) con backbone RegNetX-8GF compartido. La pasada convolucional ocurre una vez, y los mapas de features se reutilizan por los tres componentes:
- Detector de Texto — localiza regiones
- Reconocedor de Texto — Transformer pre-norm (6 capas para multilingüe, 3 para inglés)
- Modelo Relacional — predice agrupamiento y orden de lectura
Esta reutilización es la razón por la que el modelo alcanza 34.7 páginas/segundo en una sola A100 — contra 1.2 páginas/s del PaddleOCR v5 server. Más de 28x más rápido.
Resultados de Benchmark
| Idioma | PaddleOCR (especializado) | Nemotron OCR v2 (multi) |
|---|---|---|
| Inglés | 0.096 | 0.069 |
| Japonés | 0.201 | 0.046 |
| Coreano | 0.133 | 0.047 |
| Ruso | 0.163 | 0.043 |
| Chino (Simplificado) | 0.054 | 0.035 |
| Chino (Tradicional) | 0.094 | 0.065 |
En datos reales (OmniDocBench), el Nemotron OCR v2 multilingüe es competitivo y mucho más rápido:
| Modelo | páginas/s | EN NED | ZH NED | Mixto NED |
|---|---|---|---|---|
| PaddleOCR v5 (server) | 1.2 | 0.027 | 0.037 | 0.041 |
| Nemotron OCR v2 (multi) | 34.7 | 0.048 | 0.072 | 0.142 |
Limitaciones y Precauciones
- Tradeoff velocidad-precisión: El modelo multilingüe es más lento que la versión solo inglés (34.7 vs 40.7 páginas/s) por el reconocedor más pesado (6 capas vs 3).
- Brecha con mundo real: En documentos mixtos, el Nemotron v2 multilingüe muestra NED más alto (0.142) comparado con PaddleOCR (0.041). Los datos sintéticos solos no bastan — el modelo aún se beneficia de ~680K imágenes reales.
- Cobertura de idiomas: Actualmente limitado a 6 idiomas. Extender a árabe, devanágari o tailandés requiere fuentes y texto fuente, pero el pipeline está listo.
Próximos Pasos
- Explora el dataset: nvidia/OCR-Synthetic-Multilingual-v1 — licencia CC-BY-4.0.
- Prueba la demo: Nemotron OCR v2 Space — sube un documento y ve cómo funciona.
- Arma tu propio pipeline: Empieza con SynthDoG, agrega fuentes de tu idioma y texto de mOSCAR, y experimenta con modos de layout.

Conclusión: La Estrategia de Datos es el Diferenciador
El Nemotron OCR v2 prueba que invertir en ajustes de arquitectura no resuelve un cuello de botella de datos. La inversión del equipo en un pipeline genérico de datos sintéticos generó precisión casi perfecta en seis idiomas — usando un solo modelo unificado.
Para devs construyendo sistemas OCR, el mensaje es claro: invierte en infraestructura de generación de datos antes de correr tras la próxima arquitectura SOTA. Los datos sintéticos te dan control, escala y etiquetas perfectas. El desafío es el realismo, pero como muestra NVIDIA, con suficiente aleatorización y aumento, los modelos generalizan bien a documentos reales.
El pipeline es open-source y extensible. Si trabajas con OCR para un idioma aún no cubierto, el camino es directo: consigue fuentes, consigue texto, y renderiza. El resto ya está listo.
Junto con: Native Popover API para Tooltips — otro ejemplo de repensar suposiciones para mejores experiencias de desarrollo.