[!NOTE] Traducción automática Este artículo se tradujo automáticamente a partir de la versión original en inglés.
La guía definitiva sobre OCR en 2026: De Pipelines a VLMs
Los rankings OCR difieren entre sí porque evalúan documentos, resultados y evaluadores distintos. Una muestra obtenida a principios de 2026 de OmniDocBench y OCR Arena arrojó clasificaciones de modelos muy diferentes; las puntuaciones no son intercambiables, pero esta discrepancia resulta útil. Para tomar una decisión en entornos de producción, es necesario contar con documentos y métricas provenientes de la carga de trabajo real.
Los modelos visión-lenguaje (VLMs) son capaces de procesar layouts, escritura a mano, tablas e imágenes degradadas que invalidan un sistema de reconocimiento de texto plano pipeline. Los motores tradicionales siguen siendo competitivos para texto impreso nítido, sobre todo cuando son relevantes la latencia CPU y el costo operativo. Modelos especializados como puntos.ocr Además, los modelos generales VLMs ocupan los niveles intermedios y superiores, presentando diferentes compromisos en cuanto al hardware, la privacidad y la calidad.
Los motores tradicionales siguen siendo la opción más rápida y económica para obtener documentos impresos de alta calidad. Ningún modelo es óptimo en todos los escenarios, por lo que esta guía pasa primero por la evaluación, luego por la selección del modelo y, finalmente, por su despliegue en producción.
Repositorio complementario: El Desafío OCR — una demostración en un único cuaderno de notas que compara 5 tipos de documentos en 3 niveles de modelo (Tesseract → dots.ocr → Gemini 3 Flash) con el fin de mostrar las diferencias drásticas en calidad y los compromisos asociados a los costes.
TL;DR: Comience por verificar la presencia de una capa de texto incrustado. Benchmark un motor tradicional en escaneos limpios, y luego añada un VLM especializado o genérico únicamente para aquellas clases de documentos que no cumplen con el objetivo de calidad. Compare las métricas de texto, tablas y campos por separado, y dirija los campos de baja confianza o de alto riesgo a otro modelo o a un humano.
OCR establece ahora la calidad en las etapas posteriores del proceso
OCR ha servido durante mucho tiempo para alimentar archivos, sistemas postales, herramientas de accesibilidad y sistemas de gestión de documentos. Gracias a RAG y a los agentes especializados en documentos, los modos de fallo de este sistema se han vuelto visibles para un grupo más amplio de ingenieros: un modelo posterior no puede recuperar el texto ni la estructura de las tablas que fueron descartadas durante el proceso de extracción.
La calidad de recuperación del sistema RAG está limitada por la calidad de OCR. Si el proceso de extracción distorsiona una tabla, interpreta mal una fecha o omite un párrafo, las operaciones posteriores de segmentación y embedding modificación no podrán recuperar la información faltante. Este mismo tipo de error puede ocultar una cláusula de contrato, modificar el importe total de una factura o dañar un registro médico. Los errores OCR se propagan a todas las decisiones que se tomen a continuación.
OCR forma, por lo tanto, parte de la infraestructura de recuperación y de los agentes, junto con el análisis sintáctico, el fragmentado, embedding e indexación. Sus errores requieren una evaluación independiente, en lugar de ser incorporados a una única puntuación de tipo end-to-end.
Qué significa OCR en la era de los modelos fundamentales
OCR ya ha trascendido su definición original de “convertir texto impreso en caracteres legibles por máquina”. En la actualidad se refiere a la inteligencia documental: la extracción de texto, estructura, tablas, fórmulas y significado semántico a partir de cualquier entrada visual. Este campo está evolucionando desde “OCR-1.0” (utilizando pipelines de forma modular) hacia “OCR-2.0”, donde un único modelo de extremo a extremo gestiona todas las etapas del proceso.
El OCR pipeline tradicional cuenta con tres fases fundamentales:
- Detección de texto: localización de las regiones que contienen texto (p. ej., CRAFT, DBNet).
- Reconocimiento de texto: conversión de las regiones detectadas en secuencias de caracteres (p. ej., CRNN).
- Procesamiento posterior: corrección ortográfica y corrección mediante modelos de lenguaje.
Esto funciona bien con documentos limpios, pero los errores de detección, reconocimiento y procesamiento posterior pueden acumularse. Es necesario medir tanto la precisión de los caracteres como la precisión de los campos resultantes, para que una página legible no oculte un total o identificador incorrecto.
OCR-2.0 integra una mayor parte de ese pipeline en un codificador de visión combinado con un decodificador de lenguaje. Modelos como GOT-OCR 2.0 son capaces de generar tanto texto como estructura al mismo tiempo, mientras que los modelos generales VLMs también pueden mapear campos a un esquema especificado. Los compromisos que se deben considerar son la latencia dependiente de la carga de trabajo, el costo en términos de GPU o API, así como el riesgo de producir texto plausible que no está presente en la imagen.
Una advertencia práctica: no dejes que la etiqueta “de extremo a extremo” te engañe. En entornos de producción, OCR-2.0 solo está unificado en la fase de reconocimiento. Aún se necesita la rasterización de PDF para generar imágenes, la normalización de imágenes (corrección de inclinación, ajuste de DPI) para lograr una calidad consistente, y el análisis de la salida para extraer los campos estructurados del texto del modelo. El pipeline se ha acortado, pero no ha desaparecido.
Qué miden y qué pasan por alto OCR benchmarks
Los siguientes datasets ilustran cómo diferentes tareas de tipo OCR generan métricas distintas. Las puntuaciones corresponden a instantáneas fechadas extraídas de sus respectivas listas de clasificación, y no a una clasificación en tiempo real que combine datos de múltiples fuentes dataset:
| Dataset | Año | Tamaño de la prueba | Idiomas | Métrica principal | Puntuación máxima | Saturación |
|---|---|---|---|---|---|---|
| FUNSD | 2019 | 50 documentos | English | F1 | ~93.5% | Moderar |
| SROIE | 2019 | 347 recibos | English | F1 | ~98.7% | Casi saturado |
| CORD | 2019 | 100 recibos | Indonesio | F1 | ~98.2% | Casi saturado |
| IAM | 1999 | ~1,861 líneas | English | CER | ~2.75% | Moderar |
| OCRBench v2 | 2024 | 1,500 privados | EN + CN | Puntuación /100 | 63.4 | Bajo |
| OmniDocBench | 2024 | 1.355 páginas | EN + CN | Compuesto | 94.62 | Bajo-a moderado |
La brecha entre “benchmark” y arena
Las clasificaciones automatizadas mediante benchmark pueden entrar en conflicto con las preferencias humanas, ya que la distribución de los datos de entrada y los criterios de evaluación difieren.
| Modelo | Se ha informado OmniDocBench métrica | OCR Arena ELO | Tasa de éxito en Arena | Observación |
|---|---|---|---|---|
| GLM-OCR | 94.62 | 1321 | 18.8% | Banco elevado, arena baja |
| Gemini 2.5 Pro | 88.03 | 1569 | — | ¡Buen banco de pruebas, buena arena! |
| Gemini 3 Flash | 0.115 ED (menor = mejor) | 1770 | 77.2% | Rango alto en la arena según el estado actual. |
| DeepSeek-OCR | ¡Bien! | 1335 | 20.2% | Banco alto, arena baja |
A principios de 2026 OCR Arena La instantánea utilizada aquí consistía en que los usuarios votaban de forma aleatoria sobre los resultados obtenidos en comparaciones cara a cara. Su ordenación difería de OmniDocBench. Las dos tablas no deben combinarse en una única puntuación, ya que una utiliza métricas dataset y la otra, votos de preferencia.
Entre los factores más probables que influyen se encuentran la mezcla de documentos, el formato de salida, la cobertura lingüística y los criterios de evaluación. Las cifras publicadas resultan útiles para la selección inicial, pero para tomar una decisión final es necesario contar con un conjunto de datos reservado extraído del volumen de trabajo real.
Motores tradicionales OCR: aún relevantes
Si los motores tradicionales rinden peor con datos complejos, ¿por qué utilizarlos? Porque son rápidos y económicos al tratar datos estructurados y limpios.
| Motor | Se ha registrado una latencia de CPU. | Precisión de impresión limpia | Lenguajes | El paquete más pequeño reportado |
|---|---|---|---|---|
| Tesseract 5.5 | ~0,5 s/página | Exactitud de caracteres del 98–99 %. | 100+ | ~30 MB |
| EasyOCR | ~2 s/página | Exactitud de caracteres del 95–97 %. | 80+ | ~200 MB |
| PaddleOCR v5 | ~1 s/página | Precisión de caracteres del 97–99 %. | 106+ | 3,5 MB (móvil) |
Tesseract para texto impreso limpio
Tesseract (v5.5.x, Apache 2.0) es un motor maduro basado únicamente en CPU que dispone de más de 100 paquetes de idioma. La precisión en texto impreso puede ser elevada tras una rasterización y preprocesamiento adecuados, pero el texto manuscrito, el texto presente en escenas reales y los diseños complejos requieren pruebas separadas. Su principal ventaja radica en su implementación local y compacta mediante CPU, en lugar de ofrecer una superioridad general en precisión.
EasyOCR
EasyOCR combina un detector CRAFT con un reconocedor CRNN. Gracias a la aceleración total mediante PyTorch GPU, representa una opción rápida para el desarrollo de prototipos y la extracción de texto de escenas.
import easyocr
# Three lines for complete OCR
reader = easyocr.Reader(["en"])
result = reader.readtext("receipt.jpg")
# Returns: [(bbox, text, confidence), ...]
PaddleOCR
PaddleOCR (PP-OCRv5) incluye componentes de detección, reconocimiento e implementación de paquetes. Su documentación indica que cubre más de 106 idiomas, además de contar con un modelo móvil de tamaño reducido para su uso en entornos periféricos. Es necesario verificar el artefacto del modelo específico y la calidad del soporte para los idiomas en la versión seleccionada.
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="en")
result = ocr.ocr("receipt.jpg", cls=True)
for line in result[0]:
bbox, (text, confidence) = line
if confidence > 0.85:
print(f"{text} ({confidence:.2f})")
Opciones especializadas y generales VLM
Los recibos distorsionados, las etiquetas de productos sesgadas, la escritura a mano y los diseños muy densos son escenarios en los que los motores especializados o generales VLMs resultan útiles para probarse frente a los sistemas tradicionales.
La ola especializada de OCR
Los modelos especializados en análisis de documentos publicados entre 2025 y 2026 incluyen:
- puntos.ocr (1,7 mil millones): Un modelo de código abierto que unifica la detección de maquetación, el reconocimiento y el orden de lectura. Su informe abarca más de 100 idiomas y ofrece un rendimiento excepcional. OmniDocBench Resultados.
- GOT-OCR 2.0: Un modelo unificado con 580 millones de parámetros que funciona en un único GPU (~4 GB de VRAM) y genera salida en formato Markdown, LaTeX y notación estructurada.
- DeepSeek-OCR (3B): Implementa una técnica de “compresión óptica contextual” para disminuir la cantidad de tokens visuales. Sus valores de rendimiento deben considerarse específicos del hardware y de las capacidades de dataset.
- Mistral OCR v3: Un servicio propietario dedicado a la extracción de texto y estructuras. Dado que los precios y las cifras relacionadas con benchmark pueden variar, es necesario consultar la ficha técnica actual del modelo y los términos del proveedor al compararlo.
Frontier VLMs
Los modelos generales VLMs constituyen otra opción cuando la tarea combina la extracción de información con el razonamiento visual o semántico. Los ejemplos que se presentan a continuación reflejan la situación del artículo a principios de 2026, y no una clasificación actual:
- Qwen3-VL (Alibaba): Una familia de modelos de peso abierto VLM que cuenta con varias versiones de diferentes tamaños y variantes capaces de manejar contextos extensos.
- Gemini 3 Flash (Google): Un modelo multimodal alojado que obtuvo puntuaciones muy altas en la captura de estado de la OCR Arena mencionada.
- Claude Opus 4.6 (Anthropic): Un VLM general alojado que incluye soporte para la generación de salidas estructuradas.
- GPT-5.2 (OpenAI): Un VLM general alojado diseñado para procesar entradas mixtas de texto e imágenes.
Latencia por nivel
Los rangos que se indican a continuación son marcadores de planificación. Vuelva a medirlos teniendo en cuenta la resolución real de la página, el tamaño del lote, la región del hardware o del proveedor, y la longitud de la salida:
| Nivel | Latencia por página | Hardware | |
|---|---|---|---|
| Tradicional | 0,5–3 s | CPU | |
| Especialización en VLM | puntos.ocr, GOT-OCR | 3–8 segundos | GPU |
| Frontier VLM | Gemini Flash, GPT-5.2 | 5–15 segundos | API |
Métricas: cómo medir lo que realmente importa
Elige una métrica que se ajuste al tipo de salida:
- CER y WER para texto plano. La tasa de error de caracteres y la tasa de error de palabras dependen de las opciones de normalización, como la mayúscula/minúscula, los espacios en blanco y la puntuación; por lo tanto, es necesario ajustar el protocolo de comparación antes de evaluar los modelos.
- EMR y Field F1 para formularios y recibos. La tasa de coincidencia exacta es binaria, lo cual es ideal para códigos fiscales y totales. Field F1 equilibra la precisión y la recuperación según el tipo de campo.
- TEDS para tablas. La distancia de edición en árbol, aplicada sobre representaciones en forma de árbol HTML, permite detectar desalineaciones entre celdas que ocurren en múltiples pasos y que CER no revela.
- ANLS para preguntas y respuestas basadas en documentos. La similitud de Levenshtein normalizada promedio otorga puntos parciales a las respuestas que presentan errores menores OCR.
Para las implementaciones: jiwer gestiona los valores CER/WER de forma predeterminada, y las implementaciones TEDS se encuentran en el repositorio OmniDocBench.
Pruebas de VLMs con OpenRouter
OpenRouter Ofrece una pasarela compatible con OpenAI que permite acceder a modelos de varios proveedores. Los ID de los modelos y las funcionalidades de solicitud soportadas pueden cambiar, por lo que es necesario verificarlos en el catálogo actual de la pasarela antes de ejecutar el ejemplo.
import base64
from openai import OpenAI
client = OpenAI(base_url="https://openrouter.ai/api/v1", api_key="your-key")
def extract_text(image_path: str, model: str) -> str:
with open(image_path, "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model=model,
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Extract all text from this image, preserving layout as markdown."},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_b64}"}},
],
}],
max_tokens=4096,
)
return response.choices[0].message.content
# Compare models by changing one string
models = ["google/gemini-3-flash", "anthropic/claude-sonnet-4.5", "qwen/qwen3-vl-8b"]
for model in models:
print(f"\n--- {model} ---\n{extract_text('receipt.jpg', model)[:200]}...")
Para la extracción estructurada, utilice response_format Con un JSON schema siempre que el modelo y la pasarela seleccionados lo admitan. Esto permite que la respuesta sea parseable; no se validan los valores extraídos en relación con la imagen:
import json
response = client.chat.completions.create(
model="google/gemini-3-flash",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Extract the receipt fields from this image."},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_b64}"}},
],
}],
max_tokens=4096,
response_format={
"type": "json_schema",
"json_schema": {
"name": "receipt",
"schema": {
"type": "object",
"properties": {
"vendor": {"type": "string"},
"date": {"type": "string"},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"amount": {"type": "number"},
},
},
},
"total": {"type": "number"},
},
},
},
},
)
receipt = json.loads(response.choices[0].message.content)
Benchmark resultados: qué indican realmente las cifras
La tabla que aparece a continuación es una captura con fecha del Tabla de clasificación de OmniDocBench y Puntos. ocr artículo (arXiv:2512.02498). Compara los resultados reportados en dicha evaluación, y no las versiones actuales del modelo:
| Modelo | Tamaño | Distancia de edición de texto (ES) | Tabla TEDS | En general |
|---|---|---|---|---|
| PaddleOCR-VL | 900 millones | 0.035 | 90.89 | 92.86 |
| puntos.ocr | 1,7 mil millones | 0.048 | 86.78 | 88.41 |
| — | 0.075 | 85.71 | 88.03 | |
| MinerU (pipeline) | — | 0.209 | 70.90 | 75.51 |
| GPT-4o | — | 0.217 | 67.07 | 75.02 |
En esta captura, PaddleOCR-VL y dots.ocr obtienen una puntuación superior a la VLMs general indicada. La conclusión se limita a OmniDocBench: el tamaño del modelo por sí solo no permite predecir su puntuación en el procesamiento de documentos.
🔧 Ejúzcalo usted mismo: El Desafío OCR Se trata de un único cuaderno ejecutable que evalúa cinco tipos de documentos (factura limpia, recibo arrugado, formulario manuscrito, artículo académico y documento multilingüe) en tres niveles diferentes (Tesseract → dots.ocr → Gemini 3 Flash), mostrando los resultados CER/EMR uno al lado del otro junto con un análisis de costes.
Despliegue de OCR en producción
Una arquitectura por niveles permite separar el preprocesamiento de CPU del proceso de GPU o inferencia de API, reservando así rutas de alto costo para aquellos documentos que realmente las necesitan.
Nota sobre la orquestación: Herramientas como Docling pueden coordinar la conversión, el agrupamiento por lotes y las reintentos. La política de enrutamiento sigue necesitando sus propios etiquetas de calidad y umbrales.
El patrón de fallback por niveles
Comience con la ruta más económica que cumpla con el objetivo de calidad y, a continuación, calibre la enrutación en las páginas etiquetadas:
- Comprobar la presencia de texto incrustado (Nivel 0). En el caso de los PDF, inspeccionar la capa de texto con
PyMuPDFopdfplumberAntes de realizar la rasterización, se debe validar que la capa esté completa y ordenada correctamente. - Intentar con un modelo rápido. Utilizar un motor tradicional para las clases de documento para las cuales cumple con los requisitos establecidos.
- Evaluar la confianza calibrada. Combinar la confianza del modelo con la clase del documento, la criticidad del campo y las reglas de validación.
- Escalar a un modelo más potente. Dirigir las páginas inciertas a un VLM especializado o general.
- Escalar los fallos de alto riesgo a un humano. La revisión humana constituye un nivel separado para aquellos casos cuyo costo por error supera los beneficios de la automatización.
Nota sobre la confianza: Las probabilidades brutas de los caracteres no se calibran automáticamente en función de la corrección del campo. La función ponderada por área que se muestra a continuación sirve como punto de referencia para la agregación a nivel de página, y no constituye un mecanismo de enrutamiento universal. Es necesario calibrarla mediante páginas etiquetadas, y establecer reglas específicas para los campos críticos, ya que el promedio de una página puede ocultar un ID incorrecto o un valor total erróneo.
def area_weighted_confidence(ocr_result):
"""Compute area-weighted confidence from PaddleOCR output."""
total_area, weighted_sum = 0, 0
for line in ocr_result[0]:
bbox, (text, conf) = line
width = bbox[1][0] - bbox[0][0]
height = bbox[2][1] - bbox[1][1]
area = abs(width * height)
weighted_sum += conf * area
total_area += area
return weighted_sum / total_area if total_area > 0 else 0
Análisis de costes a escala
No existe un punto de equilibrio universal entre API y la implementación en servidores propios en cuanto al volumen de páginas procesadas. Es necesario realizar la comparación a partir del mismo trabajo de carga:
| Componente de coste | API ruta | Ruta de autohospedaje |
|---|---|---|
| Inférencia | Precio actual basado en página o token | GPU-horas por páginas medidas por hora |
| Capacidad ociosa | Por lo general, es asumido por el proveedor. | Utilización y holgura de capacidad |
| Ingeniería | Integración y monitoreo de proveedores | Despliegue, actualizaciones, capacidad de observabilidad y servicio de soporte técnico 24/7 |
| Procesamiento de datos | Transferencia, retención y términos de región | Controles de almacenamiento, red y cumplimiento normativo |
| Fallos de calidad | Reintentos y revisión humana | Reintentos y revisión humana |
Utiliza una fórmula compartida: monthly pages × cost per successful page + review cost + fixed operating cost. Una “página exitosa” debe cumplir con los mismos criterios de texto, tabla y campos en ambos caminos. Los precios del proveedor y los costes de alquiler de GPU cambian con demasiada rapidez como para poder incluirlos como una estimación de adquisición fiable.
Manejo de errores: el problema de las alucinaciones
Los errores VLM pueden ser contextualmente plausibles aunque estén equivocados desde el punto de vista factual. Por ejemplo, un total de recibo de “$42.50” podría transformarse en “$45.20”: es sintácticamente válido, pero pasa desapercibido para los correctores ortográficos.
Ejemplo de fallo sintético: Un VLM extrae tres líneas de recibo y un total indicado que coinciden entre sí, pero existe una diferencia en un dígito con respecto a la imagen. La aritmética interna se ejecuta correctamente a pesar de que la extracción es errónea. Por este motivo, la validación requiere etiquetas basadas en la imagen o un proceso de revisión independiente, y no solo comprobaciones de consistencia.
Algunas medidas de mitigación prácticas:
- Validación de checksum. En el caso de las facturas, se debe comprobar que la suma de los importes de cada línea corresponda al total indicado, y señalar las discrepancias para su revisión por parte de un humano.
- Verificaciones básicas mediante expresiones regulares para fechas (ausencia de mes 13), números de teléfono (cantidad correcta de dígitos) y formatos de moneda.
- Comparación entre las líneas detalladas y el total general. Se debe contrastar el subtotal extraído por el VLM con la suma independiente obtenida sumando sus propias líneas detalladas.
- Verificación cruzada entre modelos. Es necesario pasar los campos críticos por dos modelos diferentes y marcar las diferencias encontradas.
- Verificación independiente mediante OCR. Se debe aplicar un segundo método de extracción a las cifras clave y señalar cualquier desacuerdo. La concordancia solo aumenta la confianza cuando los dos métodos presentan patrones de error suficientemente distintos; no constituye una prueba de corrección.
Conclusiones clave
- Asignar el nivel del modelo a una clase de documento etiquetada. Los motores tradicionales pueden ser suficientes para texto limpio; los modelos especializados y generales VLMs justifican su costo adicional en páginas más complejas.
- No combinar tablas de clasificación diferentes. Las métricas de OmniDocBench y las preferencias de OCR Arena responden a preguntas distintas.
- Calibrar la ruta de procesamiento. Los umbrales de confianza, las clases de documento, la criticidad de los campos y la política de revisión humana deben incluirse en una misma evaluación.
- Validar la salida plausible. La conformidad con el esquema y los cálculos internos no pueden demostrar que un valor está presente en la imagen.
- Estimar el costo de las páginas procesadas con éxito. Al comparar APIs con soluciones autohospedadas, se deben tener en cuenta las intentonas de reintentar, las revisiones, las operaciones de corrección y las barreras de calidad.
El preprocesamiento y la detección siguen siendo importantes, pero la implementación en entornos de producción OCR ahora también exige mecanismos de enrutamiento, evaluaciones específicas para cada tarea, además de medidas de defensa contra errores de extracción plausibles.
Referencias
- OCR Clasificación de líderes de Arena - Batallas entre modelos impulsadas por la comunidad y en formato cara a cara El repositorio de OCR Gauntlet - Cuaderno ejecutable para probar la arquitectura de tres capas OCR
- OmniDocBench - Evaluación de análisis de documentos de extremo a extremo Puntos.ocr - Analizador de documentos unificado con VLM de 1,7 mil millones de parámetros PaddleOCR - Herramientas y modelos del kit tradicional OCR
- OpenRouter - Pasarela de acceso unificada para pruebas A/B de modelos