[!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.

Cómo se integra OCR en la pila moderna de AI: los documentos fluyen a través de OCR hacia RAG pipelines, agentes AI y asistentes empresariales

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.

Comparación entre el OCR-1.0 modular pipeline (detección, reconocimiento y posprocesamiento) y el enfoque OCR-2.0 unificado VLM (un único modelo que gestiona todas las fases).

El OCR pipeline tradicional cuenta con tres fases fundamentales:

  1. Detección de texto: localización de las regiones que contienen texto (p. ej., CRAFT, DBNet).
  2. Reconocimiento de texto: conversión de las regiones detectadas en secuencias de caracteres (p. ej., CRNN).
  3. 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:

DatasetAñoTamaño de la pruebaIdiomasMétrica principalPuntuación máximaSaturación
FUNSD201950 documentosEnglishF1~93.5%Moderar
SROIE2019347 recibosEnglishF1~98.7%Casi saturado
CORD2019100 recibosIndonesioF1~98.2%Casi saturado
IAM1999~1,861 líneasEnglishCER~2.75%Moderar
OCRBench v220241,500 privadosEN + CNPuntuación /10063.4Bajo
OmniDocBench20241.355 páginasEN + CNCompuesto94.62Bajo-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.

ModeloSe ha informado OmniDocBench métricaOCR Arena ELOTasa de éxito en ArenaObservación
GLM-OCR94.62132118.8%Banco elevado, arena baja
Gemini 2.5 Pro88.031569¡Buen banco de pruebas, buena arena!
Gemini 3 Flash0.115 ED (menor = mejor)177077.2%Rango alto en la arena según el estado actual.
DeepSeek-OCR¡Bien!133520.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.

MotorSe ha registrado una latencia de CPU.Precisión de impresión limpiaLenguajesEl paquete más pequeño reportado
Tesseract 5.5~0,5 s/páginaExactitud de caracteres del 98–99 %.100+~30 MB
EasyOCR~2 s/páginaExactitud de caracteres del 95–97 %.80+~200 MB
PaddleOCR v5~1 s/páginaPrecisió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

Panorama de modelos de tres niveles que muestra motores tradicionales (Tesseract, PaddleOCR, EasyOCR), VLMs especializados (dots.ocr, GOT-OCR, DeepSeek-OCR), y modelos de vanguardia VLMs (Gemini, Claude, GPT), con sus respectivos equilibrios entre precisión y costo.

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:

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:

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:

NivelLatencia por páginaHardware
Tradicional0,5–3 sCPU
Especialización en VLMpuntos.ocr, GOT-OCR3–8 segundosGPU
Frontier VLMGemini Flash, GPT-5.25–15 segundosAPI

Métricas: cómo medir lo que realmente importa

Elige una métrica que se ajuste al tipo de salida:

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:

ModeloTamañoDistancia de edición de texto (ES)Tabla TEDSEn general
PaddleOCR-VL900 millones0.03590.8992.86
puntos.ocr1,7 mil millones0.04886.7888.41
0.07585.7188.03
MinerU (pipeline)0.20970.9075.51
GPT-4o0.21767.0775.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.

Arquitectura por niveles de producción que implementa enrutamiento basado en la confianza: los documentos pasan por un proceso de preprocesamiento y, a continuación, por el Nivel 1 (PaddleOCR/Tesseract); los resultados de baja confianza se envían al Nivel 2 (Qwen3-VL/etc.ocr) y al Nivel 3 (Gemini Pro/GPT-5.2), para finalmente someterse a postprocesamiento y revisión humana

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:

  1. Comprobar la presencia de texto incrustado (Nivel 0). En el caso de los PDF, inspeccionar la capa de texto con PyMuPDF o pdfplumber Antes de realizar la rasterización, se debe validar que la capa esté completa y ordenada correctamente.
  2. Intentar con un modelo rápido. Utilizar un motor tradicional para las clases de documento para las cuales cumple con los requisitos establecidos.
  3. Evaluar la confianza calibrada. Combinar la confianza del modelo con la clase del documento, la criticidad del campo y las reglas de validación.
  4. Escalar a un modelo más potente. Dirigir las páginas inciertas a un VLM especializado o general.
  5. 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 costeAPI rutaRuta de autohospedaje
InférenciaPrecio actual basado en página o tokenGPU-horas por páginas medidas por hora
Capacidad ociosaPor lo general, es asumido por el proveedor.Utilización y holgura de capacidad
IngenieríaIntegración y monitoreo de proveedoresDespliegue, actualizaciones, capacidad de observabilidad y servicio de soporte técnico 24/7
Procesamiento de datosTransferencia, retención y términos de regiónControles de almacenamiento, red y cumplimiento normativo
Fallos de calidadReintentos y revisión humanaReintentos 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:


Conclusiones clave

  1. 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.
  2. No combinar tablas de clasificación diferentes. Las métricas de OmniDocBench y las preferencias de OCR Arena responden a preguntas distintas.
  3. 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.
  4. 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.
  5. 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