Nemotron OCR v2 demuestra algo que muchos sospechábamos pero pocos habían cuantificado: con suficiente datos sintéticos realistas puedes entrenar un OCR multilingüe que sea a la vez preciso y veloz. ¿Cómo lo lograron? Combinando una granja de datos renderizados con una arquitectura que reaprovecha características para evitar trabajo redundante.
Qué lograron y por qué importa
Construyeron un modelo OCR multilingüe (inglés, chino, japonés, coreano, ruso) que alcanza errores casi nulos en pruebas sintéticas y procesa 34.7 páginas por segundo en una sola GPU A100. Eso no es sólo rapidez por la rapidez: significa pipelines de producción más baratos y respuestas en tiempo real para aplicaciones que deben leer documentos en varios idiomas sin detectar idioma previo.
La palanca principal fue el uso masivo de datos sintéticos: 12.2 millones de páginas generadas con anotación pixel-perfect (cajas a nivel de palabra, línea y párrafo, y grafos de orden de lectura). El dataset público es nvidia/OCR-Synthetic-Multilingual-v1 y el modelo está disponible como nvidia/nemotron-ocr-v2.
Datos sintéticos: la receta y por qué funciona
¿Por qué datos sintéticos y no solo scraping o anotación humana? Porque con renderizado programático obtienes escala y etiquetas puras. Cada caja, transcripción y orden de lectura es conocido exactamente: tú lo colocaste ahí.
Ingredientes clave:
- Fuente de texto: usan mOSCAR para muestrear textos con distribución realista por idioma.
- Conjunto de fuentes: entre 165 y 1,258 fuentes por idioma (Google Fonts, Noto, etc.).
- Motor de renderizado: versión fuertemente modificada de
SynthDoGcon extensiones para multiestructura. - Augmentaciones extensas: efectos en glyphs, dilatación/erosión, blur, desplazamientos de color, sombras, texturas de fondo y más.
Ventaja central: puedes controlar qué edge cases aparecen (columnas verticales, tablas, slides, textos dispersos) y producir millones de ejemplos por día en una sola máquina.
Extensiones importantes sobre SynthDoG
- Anotaciones multi-nivel: cajas a nivel de palabra, línea y párrafo, con quads de 4 puntos y relaciones jerárquicas.
- Grafo de relaciones: orden de lectura explícito entre líneas y párrafos, crucial para documentos multi-columna o tablas.
- Modo de layouts variados: multi-columna, columnas verticales (importante para japonés y chino), tablas, slides, etc.
- Reconocimiento a nivel de línea para CJK: evita segmentación por palabras cuando no hay espacios consistentes.
Todo esto reduce el cuello de botella clásico del OCR multilingüe: no fue la arquitectura, fue la falta de datos representativos.
El dataset en cifras
El set contiene 12.258.146 muestras en seis idiomas. Resumen por idioma:
| Language | Total Samples | Train | Test | Validation |
|---|---|---|---|---|
| English | 1,825,089 | 1,460,304 | 183,629 | 181,156 |
| Japanese | 1,889,137 | 1,502,712 | 193,779 | 192,646 |
| Korean | 2,269,540 | 1,814,994 | 227,091 | 227,455 |
| Russian | 1,724,733 | 1,380,404 | 171,678 | 172,651 |
| Chinese (Simplified) | 2,335,343 | 1,914,948 | 210,143 | 210,252 |
| Chinese (Traditional) | 2,214,304 | 1,772,280 | 221,867 | 220,157 |
| Total | 12,258,146 | 9,845,642 | 1,208,187 | 1,204,317 |
Arquitectura: diseño para velocidad y estructura
Nemotron OCR v2 usa una arquitectura de tres componentes end-to-end:
- Text Detector con backbone
RegNetX-8GF. - Text Recognizer: pequeño Transformer pre-norm que decodifica los recortes rectificados.
- Relational Model: Transformer compacto que predice agrupaciones lógicas y orden de lectura.
La idea es simple y eficiente: la convolución costosa se ejecuta una sola vez y sus mapas de características se reutilizan por detector, reconocedor y modelo relacional. Esa reutilización de características es lo que permite el salto en eficiencia: 34.7 páginas/s en A100.
Dos variantes disponibles:
| Variante | Idiomas | Nivel de región | Capas reconocedor | Charset | Parámetros |
|---|---|---|---|---|---|
v2_english | English | Word | 3 | 855 | 54M |
v2_multilingual | EN, ZH, JA, KO, RU | Line | 6 | 14,244 | 84M |
Nota: el reconocedor multilingüe es más pesado porque maneja un vocabulario de 14,244 tokens y procesa líneas completas, lo que reduce la necesidad de segmentar en idiomas sin espacios, pero afecta el throughput en páginas muy densas.
Resultados: precisión y velocidad
SintDoG (páginas sintéticas) NED: el modelo multilingüe reduce NED a niveles muy bajos comparado con Nemotron v1 y con variantes especializadas de otros frameworks.
| Language | PaddleOCR (base) | PaddleOCR (specialized) | OpenOCR (server) | Nemotron OCR v1 | Nemotron OCR v2 (multi) |
|---|---|---|---|---|---|
| English | 0.117 | 0.096 | 0.105 | 0.078 | 0.069 |
| Japanese | 0.201 | 0.201 | 0.586 | 0.723 | 0.046 |
| Korean | 0.943 | 0.133 | 0.837 | 0.923 | 0.047 |
| Russian | 0.959 | 0.163 | 0.950 | 0.564 | 0.043 |
| Chinese (Simplified) | 0.054 | 0.054 | 0.061 | 0.784 | 0.035 |
| Chinese (Traditional) | 0.094 | 0.094 | 0.127 | 0.700 | 0.065 |
OmniDocBench (documentos del mundo real) muestra un tradeoff claro entre velocidad y exactitud en mezclas de idiomas:
| Model | pages/s | EN | ZH | Mixed |
|---|---|---|---|---|
| PaddleOCR v5 (server) | 1.2 | 0.027 | 0.037 | 0.041 |
| OpenOCR (server) | 1.5 | 0.024 | 0.033 | 0.049 |
| Nemotron OCR v2 (multi) | 34.7 | 0.048 | 0.072 | 0.142 |
| Nemotron OCR v2 (EN) | 40.7 | 0.038 | 0.830 | 0.437 |
| Nemotron OCR v1 | 39.3 | 0.038 | 0.876 | 0.436 |
| EasyOCR | 0.4 | 0.095 | 0.117 | 0.326 |
La tabla deja claro un punto práctico: si tu carga es multilingüe y no quieres detectar idioma antes, la variante multilingüe ofrece mejores resultados generales y un enorme salto de velocidad frente a soluciones por pipeline que ejecutan detectores y reconocedores separados.
Tradeoffs y decisiones de diseño
- Line-level recognition para CJK evita la segmentación por palabras y mejora la robustez en japonés y chino.
- Un vocabulario muy grande (14,244 tokens) exige un reconocedor más profundo y reduce throughput en páginas muy text-densas.
- Reutilizar el backbone reduce latencia, pero impone cuidado en cómo se extraen y rectifican las regiones para el reconocedor.
Si trabajas en producto: piensa en el equilibrio entre soporte multilingüe y rendimiento por página. Para documentos en un solo idioma con poco texto, la variante en inglés puede ser más eficiente; para flujos mixtos o internacionales, el modelo multilingüe simplifica la operación.
Licencia, demos y cómo probarlo
- Modelo:
nvidia/nemotron-ocr-v2(NVIDIA Open Model License) - Dataset:
nvidia/OCR-Synthetic-Multilingual-v1(CC-BY-4.0) - Demo: Nemotron OCR v2 Space en Hugging Face para probar en el navegador
Esto facilita integración y evaluación rápida en tu flujo de datos.
Al final, lo más interesante no es sólo el número de páginas por segundo ni una tabla de NED: es la demostración de que, con un renderer robusto y buenas augmentaciones, los datos sintéticos dejan de ser una aproximación y pasan a ser una solución práctica para escalar OCR a muchos idiomas sin la factura prohibitiva de la anotación humana.
