En 2025 ya no es ciencia ficción ejecutar modelos de última generación en tu teléfono. ¿Te imaginas escanear documentos complejos sin enviar nada a la nube y sin pagar APIs por página? Eso es justo lo que muestra el equipo que convirtió dots.ocr
para correr on device con Core ML y MLX.
Qué es dots.ocr y por qué importa
Dots.OCR es un modelo OCR competitivo de 3 mil millones de parámetros desarrollado por RedNote, pensado para tareas de reconocimiento de texto en documentos complejos. En pruebas públicas, supera a modelos grandes como Gemini 2.5 Pro en la benchmark OmniDocBench, lo que lo convierte en una opción interesante para llevar OCR SOTA al dispositivo. (huggingface.co)
Usar modelos en el propio equipo tiene beneficios claros: no expones claves API, no dependes de la conexión y eliminas costos por uso. Además, Apple ofrece aceleración dedicada en sus dispositivos con el Neural Engine, que en pruebas del artículo resulta mucho más eficiente energéticamente que CPU o GPU, algo crítico para apps móviles. (huggingface.co)
Cómo lo hicieron correr en iPhone: pasos clave
La conversión desde PyTorch a un formato que iOS entiende es un proceso en dos pasos: primero capturar el grafo de ejecución (por ejemplo con torch.jit.trace
o torch.export
) y luego compilar ese grafo a un paquete .mlpackage
usando coremltools
. Esa es la ruta general que siguieron, con un enfoque iterativo: primero hacerlo funcionar en GPU y Float32, luego optimizar para el Neural Engine. (huggingface.co)
En la práctica usaron Core ML para la parte visual del modelo y MLX para correr el backbone de lenguaje. También prepararon un "harness" que permite cambiar compute_units
y la precisión, lo que facilita probar distintas combinaciones sin rehacer la conversión cada vez. Si prefieres explorar el repo, el equipo publicó el código y un paquete ya convertido para quienes quieran probar directamente. (huggingface.co)
Problemas reales y soluciones concretas
Convertir modelos grandes raramente funciona a la primera. Encontraron errores típicos de compiladores ML: diferencias de dtype
en operaciones matmul
por un torch.arange
que Core ML interpretaba como int32, problemas con repeat_interleave
y con operaciones in-place que no admiten índices dinámicos. Las soluciones fueron sencillas y prácticas: castear salidas, eliminar lógica pensada para batches o video cuando sólo se procesa una imagen y sustituir máscaras booleanas por máscaras en float
cuando el Neural Engine no soporta bool
. (huggingface.co)
Un principio que repetían es empezar con el modelo mínimo que haga lo esencial y quitar trucos no necesarios para la versión on device. Eso reduce la superficie de errores y acelera la conversión. También cambiaron implementaciones de atención a la variante sdpa
para alinear mejor con lo que Core ML soporta. (huggingface.co)
Rendimiento, tamaño y siguientes pasos
Tras la conversión inicial, la buena noticia fue funcionalidad y precisión muy cercanas al PyTorch original. La mala noticia es el tamaño: la versión Float32 resultó en más de 5 GB, y el pase hacia adelante del encoder visual tardó más de un segundo en algunas mediciones, lo cual no es aceptable para muchas apps móviles. Por eso la segunda y tercera parte de la serie se centran en integrar Core ML con MLX y en optimizaciones como cuantización y manejo de shapes dinámicas para aprovechar el Neural Engine. (huggingface.co)
Ejecutar modelos SOTA en el dispositivo es posible, pero requiere disciplina al simplificar el modelo, paciencia para depurar la conversión y técnicas de compresión para que el resultado sea práctico.
¿Qué significa esto para desarrolladores y empresas?
Si eres desarrollador móvil, esto abre la puerta para ofrecer OCR potente sin enviar datos sensibles a la nube. Para equipos de producto, significa que puedes repensar flujos donde la latencia, privacidad y costos son críticos. Sí, el trabajo de ingeniería es real, pero el artículo deja claro el camino: entender la arquitectura, reducir el modelo a lo esencial y aplicar pasos iterativos de conversión y optimización. (huggingface.co)
En resumen, la conversión de dots.ocr
muestra que la barrera para llevar IA avanzada al bolsillo se reduce. Todavía quedan retos en tamaño y rendimiento, pero la combinación de Core ML, MLX y buenas prácticas de ingeniería hace que ejecutar OCR SOTA en dispositivos iOS sea una opción real para 2025. (huggingface.co)