OCR clásico frente a OCR de aprendizaje profundo en los reading pens B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 e Y6: análisis de precisión, latencia, memoria y compensaciones OEM.

Publicado el: abr. 12, 2024 - 40 Vistas

Motor OCR de Reading Pen frente a Deep Learning OCR: Pipeline Clásico, CNN y Compensaciones de Transformer

Audiencia:Este artículo está dirigido a ingenieros de ML, líderes de firmware y compradores OEM que evalúan qué arquitectura OCR implementar en los lápices de lectura B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 e Y6. Asumimos que ha leído al menos un artículo de referencia sobre benchmarks de OCR, que comprende Tesseract y CRNN, y que desea cifras concretas de un despliegue de lápiz de lectura en producción en lugar de una demostración de laboratorio.

El OCR de lápiz de lectura es un subconjunto restringido del problema general del OCR. El texto siempre está impreso (no manuscrito), siempre en latín o CJK en nuestras versiones de referencia, siempre en un tipo de papel conocido y siempre capturado a una distancia de trabajo fija de 0,5 mm a 1,2 mm con un lente de foco fijo. Estas restricciones nos permiten superar un motor OCR de propósito general en latencia por 4x a 10x mientras igualamos o excedemos su precisión. Este artículo describe las tres generaciones de OCR que hemos implementado, las cifras de precisión y latencia por modelo, y cómo especificar OCR en un contrato OEM.

1. Tres Generaciones de OCR en Lápices de Lectura

El mercado de lápices de lectura ha atravesado tres arquitecturas OCR desde 2015:

  • Generación 1 (pre-2020): tubería clásica estilo Tesseract con binarización, análisis de componentes conectados y coincidencia de plantillas. Se usa en lápices heredados. Nuestros B1, B2 y P2 actuales no implementan Tesseract; implementan nuestro motor G1 propietario que es similar en espíritu.
  • Generación 2 (2020 a 2024): CRNN (CNN + LSTM bidireccional + CTC). Nuestro motor G2 se implementa en F8, K7, KF1, Q6 e Y6.
  • Generación 3 (2024 a presente): una tubería híbrida con un extractor de características CNN ligero y un codificador transformador pequeño para modelado de secuencias. Nuestro motor G3 se implementa en L5, Q8 y T2.

Cada generación representa un compromiso diferente entre precisión, latencia, tamaño del modelo y requisito de CPU host. La elección correcta depende del modelo de lápiz de lectura que esté orientando y del tipo de texto que el usuario escanea.

2. El Motor G1: Tubería Clásica en B1, B2 y P2

El motor G1 en B1, B2 y P2 es una tubería clásica de 5 etapas:

  1. Binarización: método de Otsu en la salida del ISP.
  2. Análisis de componentes conectados: extrae blobs candidatos de caracteres.
  3. Segmentación de caracteres: divide blobs en límites de ligaduras usando un modelo heurístico de ancho de trazo.
  4. Extracción de características: histograma de características direccionales de 64 bins por carácter.
  5. Clasificación: SVM lineal uno contra todos de 96 clases, un modelo por secuencia de comandos admitida.

El tamaño total del modelo es de 1,4 MB para latín (96 caracteres x 14 KB por clase), 2,8 MB para latín + extendido, 3,5 MB para CJK básico (3.500 caracteres). El P2 se envía solo con latín a 1,4 MB. El B1 y B2 se envían solo con latín a 1,4 MB.

En una palabra de 12 caracteres escaneada de un libro infantil, el motor G1 en el P2 se ejecuta en 65 ms en total: 8 ms binarización, 14 ms componentes conectados, 12 ms segmentación, 24 ms clasificación, 7 ms búsqueda en diccionario. La latencia de extremo a extremo desde pen-down hasta el primer audio es de 95 ms a 120 ms.

Precisión a nivel de caracteres de G1 en el subconjunto de lápiz de lectura de ICDAR 2015 (un benchmark de 1.200 imágenes que seleccionamos de muestras públicas y privadas):

  • Texto impreso limpio: 97,6%.
  • Texto en fondo tintado: 89,4%.
  • Texto en papel brillante: 91,2%.
  • Fuentes pequeñas (menos de 8 pt): 78,3%.
  • Secuencias de comandos mixtas en la misma línea: 72,1%.

Los casos de fuentes pequeñas y secuencias de comandos mixtas son los puntos débiles. Para un libro de vocabulario dirigido a niños de 5 a 7 años, el texto impreso generalmente tiene entre 16 pt y 24 pt y está limpio, por lo que la precisión de G1 es aceptable. Para un libro de texto dirigido a estudiantes mayores, el caso de fuentes pequeñas arrastra la precisión de G1 por debajo del 80%, por eso no recomendamos el B1, B2 o P2 para ese caso de uso.

3. El Motor G2: CRNN en F8, K7, KF1, Q6 e Y6

El motor G2 usa una CNN de 7 capas seguida de un LSTM bidireccional de 2 capas y un decodificador CTC. La arquitectura es la CRNN estándar del artículo de Shi et al. de 2015, con dos modificaciones: (1) usamos convoluciones separables en profundidad para reducir el recuento de parámetros en 4x, y (2) reemplazamos la normalización por lotes con normalización por grupos para una mejor estabilidad en dispositivo.

El tamaño del modelo es:

  • Latín: 4,6 MB (float32), 1,4 MB (int8).
  • Latín + extendido: 9,2 MB (float32), 2,7 MB (int8).
  • CJK básico: 18,4 MB (float32), 5,4 MB (int8).

En el K7, KF1, Q6 e Y6 el modelo int8 se ejecuta en la CPU Cortex-A53 a 38 ms por palabra de 12 caracteres. El F8 se envía solo con float32 porque su MCU host carece de aceleración int8; la latencia del F8 es de 64 ms.

Precisión a nivel de caracteres de G2 en el mismo subconjunto de lápiz de lectura de ICDAR 2015:

  • Texto impreso limpio: 98,7%.
  • Texto en fondo tintado: 95,2%.
  • Texto en papel brillante: 96,0%.
  • Fuentes pequeñas (menos de 8 pt): 92,4%.
  • Secuencias de comandos mixtas en la misma línea: 88,9%.

G2 cierra sustancialmente la brecha en fuentes pequeñas y secuencias de comandos mixtas en comparación con G1. El 92,4% en fuentes pequeñas es aceptable para uso en libros de texto. El 88,9% en secuencias de comandos mixtas es aceptable para diccionarios bilingües donde aparecen dos secuencias de comandos en la misma línea.

4. El Motor G3: CNN Híbrida + Transformador en L5, Q8 y T2

El motor G3 es híbrido. El front-end CNN extrae una secuencia de características de 64 pasos a 128 canales por paso. Un codificador transformador de 4 capas con 4 cabezas de atención y 256 unidades ocultas modela la secuencia. El decodificador CTC se encuentra encima, igual que G2.

Tamaño del modelo:

  • Latín: 7,8 MB (float32), 2,3 MB (int8).
  • Latín + extendido: 15,6 MB (float32), 4,6 MB (int8).
  • CJK básico: 31,2 MB (float32), 9,1 MB (int8).

En el L5 el modelo int8 se ejecuta en CPU a 32 ms por palabra de 12 caracteres. En el Q8 y T2 el modelo int8 se ejecuta en la NPU a 18 ms y 11 ms respectivamente.

Precisión a nivel de caracteres de G3 en el subconjunto de lápiz de lectura de ICDAR 2015:

  • Texto impreso limpio: 99,2%.
  • Texto en fondo tintado: 97,4%.
  • Texto en papel brillante: 97,8%.
  • Fuentes pequeñas (menos de 8 pt): 95,9%.
  • Secuencias de comandos mixtas en la misma línea: 94,6%.

G3 es la primera generación que supera el 95% en las 5 categorías. La atención del transformador ayuda a desambiguar líneas de secuencias de comandos mixtas donde el LSTM en G2 tiene dificultades.


OCR Engine Comparison — Accuracy vs Latency on Latin 12-Char Word

5. Latencia y Memoria: Las Tres Generaciones Comparadas

Latencia de extremo a extremo desde pen-down hasta el primer audio decodificado en una palabra de 12 caracteres:

Generación Tamaño del modelo (int8) Host Latencia RAM
G1 (B1/B2/P2) 1.4 MB Cortex-M4 95-120 ms 2.1 MB
G2 (F8) 4.6 MB (float32) Cortex-A7 64 ms 6.8 MB
G2 (K7/KF1/Q6/Y6) 1.4 MB (int8) Cortex-A53 38 ms 4.2 MB
G3 (L5) 2.3 MB CPU Cortex-A53 32 ms 5.1 MB
G3 (Q8) 2.3 MB NPU 0.5 TOPS 18 ms 5.1 MB
G3 (T2) 2.3 MB NPU 1.2 TOPS 11 ms 5.1 MB

G3 en T2 es el más rápido con 11 ms pero cuesta $14.50 por unidad. G1 en B1 es el más económico con $3.80 por unidad pero con 120 ms de latencia. La elección correcta depende de su caso de uso, no de qué motor sea "mejor".

6. ¿Por Qué No Usar Tesseract Directamente?

A veces los compradores preguntan por qué no enviamos Tesseract. Tres razones:

  1. Tesseract está diseñado para documentos escaneados, no para imágenes de punta de bolígrafo a velocidad de video. Su binarización y análisis de diseño están ajustados para escaneos de página de 300 DPI, no para transmisiones de punta de bolígrafo a 60 fps. Ejecutar Tesseract en el F8 tarda 320 ms por palabra, lo que es 8x más lento que G2.
  2. El modelo LSTM de Tesseract ocupa 33 MB para latín. El modelo G2 ocupa 1.4 MB int8. Con el presupuesto de flash de 8 MB del K7, Tesseract no cabe.
  3. La precisión de Tesseract en el subconjunto de bolígrafos de lectura ICDAR es del 95.1% en texto limpio, 86.3% en fuentes pequeñas. G2 es del 98.7% y 92.4%. Tesseract es peor en cada métrica que importa para un bolígrafo de lectura.

Si su requisito OEM es "debe ejecutar Tesseract", está especificando el producto equivocado. La línea de 11 modelos existe porque un motor no se adapta a todos los casos de uso.

7. ¿Por Qué No Ejecutar Siempre el Modelo Más Grande?

Una pregunta natural: si G3 es más preciso, ¿por qué no ponerlo en cada modelo? La respuesta está en la CPU host y el presupuesto de flash.

  • El B1 y B2 se envían con un MCU clase Cortex-M4 a 80 MHz. G3 no funcionaría a ninguna latencia aceptable.
  • El P2 se envía con flash de 4 MB. G3 Latin int8 ocupa 2.3 MB más 0.8 MB de diccionario y 0.4 MB de firmware, totalizando 3.5 MB. Con los activos de audio el flash está lleno.
  • El F8 se envía con un Cortex-A7 a 800 MHz. G3 int8 funcionaría a 180 ms, lo que está por encima del umbral de percepción humana.

Por lo tanto, G3 está limitado a L5, Q8 y T2, donde el SoC host tiene margen de CPU y margen de flash. Los otros 8 modelos usan G1 o G2.

8. Impacto del Pipeline de Audio de Extremo a Extremo

El OCR es una etapa en un pipeline de 5 etapas: ISP → detección de texto (TC-128) → segmentación → OCR → búsqueda en diccionario → TTS → salida de audio. La latencia del OCR típicamente no es el cuello de botella. El llenado del buffer de audio, la síntesis TTS y el inicio del DAC juntos añaden de 30 ms a 60 ms. Por lo tanto, un motor OCR que tarda 38 ms frente a 32 ms no cambia la experiencia del usuario. Lo que importa más es la latencia de cola: un pico en el percentil 99 de 38 ms a 280 ms hace que el audio se sienta entrecortado.

Medimos la latencia de cola en 10,000 reconocimientos consecutivos. G3 en L5 tiene una latencia percentil 99 de 64 ms (frente a 32 ms mediana). G3 en T2 tiene un percentil 99 de 22 ms (frente a 11 ms mediana). La cola está impulsada por fallos de caché DRAM y contención DMA con el motor de audio; el T2 tiene mayor ancho de banda RAM, por lo que su cola es más ajustada.

9. Datos de Entrenamiento y Mejora Continua

El modelo G3 está entrenado con un corpus de 6.2 millones de líneas escaneadas recopiladas de 38,000 usuarios de bolígrafos de lectura en 47 países (acumulativo desde 2023). Las líneas abarcan 14 idiomas, 12 tipos de papel y 9 familias de fuentes. Aumentamos con distorsiones sintéticas: deformación de perspectiva, desenfoque, textura de papel, fondo impreso, artefactos de compresión similares a JPEG.

El modelo se reentrena trimestralmente. Cada versión está condicionada por una prueba de regresión en el subconjunto ICDAR 2015 retenido y en una muestra de producción de 200,000 líneas del trimestre anterior. Una versión se envía solo si mejora la precisión en ≥ 0.2 puntos porcentuales sin regresión en ninguno de los 14 idiomas soportados.

Consejo para compradores:Pregunte al proveedor con qué frecuencia se reentrena el modelo OCR y cómo es el corpus de prueba de regresión. Un proveedor que reentrena "cuando tiene tiempo" está enviando un modelo obsoleto. Nuestra cadencia trimestral está documentada en las notas de versión del firmware.

10. Especificación de OCR en un Contrato OEM

Una especificación de OCR defendible incluye:

  • Generación del motor y tamaño del archivo del modelo.
  • Precisión a nivel de caracteres en un conjunto de prueba nombrado (enviamos el subconjunto de bolígrafos de lectura ICDAR 2015 bajo solicitud).
  • Latencia mediana y percentil 99 en una palabra de 12 caracteres.
  • Presupuesto de memoria (flash + RAM).
  • Sistemas de escritura soportados.
  • Cadencia de reentrenamiento y metodología de prueba de regresión.
  • Informe de calibración por modelo en la línea de producción.

Para más información sobre cómo se detecta el texto antes del OCR, consulte Detección y segmentación de texto del lápiz de lectura. Para saber cómo el procesador de señales de imagen alimenta el motor de OCR, consulte ISP de cámara del lápiz de lectura y procesador de señales de imagen. Para saber cómo se asigna la salida YUV a la entrada del OCR, consulte YUV frente a RGB del lápiz de lectura y espacio de color. Para el motor de reconocimiento de escritura a mano, consulte Motor de reconocimiento de escritura a mano del lápiz de lectura. Para solicitar un informe comparativo de rendimiento con su contenido frente a nuestro subconjunto ICDAR, consulte /request-a-quote.

OCR Engine Generations Compared

Lecturas relacionadas

Solicitar cotización: obtenga una respuesta rápida de fábrica

Lectura complementaria: OCR para escritura de derecha a izquierda y scripts verticales

El OCR para árabe, hebreo y persa requiere un procesamiento de derecha a izquierda a nivel del modelo de lenguaje, que los motores G2 y G3 admiten de forma nativa. El motor de OCR genera la secuencia de caracteres de izquierda a derecha en el orden visual de la imagen, y el modelo de lenguaje invierte y transforma la secuencia al orden lógico correcto. La precisión en un conjunto de prueba de 50.000 líneas en árabe es del 94,8% en G3 T2 y del 91,6% en G2 K7. La menor precisión en comparación con el latín se debe a las formas de letras conectadas (inicial, media, final, aislada) que cuadruplican el número efectivo de clases.

Para scripts verticales (chino tradicional, japonés, mongol), enviamos un modelo de texto vertical independiente con cajas de anclaje rotadas. La arquitectura es idéntica a G3, pero el conjunto de entrenamiento utiliza recortes de líneas verticales. El modelo es 1,2 veces más grande que el modelo horizontal, con 2,8 MB int8. No enviamos texto vertical en L5 porque la CPU del host no puede cumplir con el objetivo de latencia de 35 ms; Q8 y T2 manejan texto vertical a 22 ms y 14 ms respectivamente.

Las páginas de orientación mixta (un libro de texto con un párrafo horizontal y una barra lateral vertical) se manejan ejecutando el modelo horizontal en toda la página primero, luego ejecutando el modelo vertical solo en las regiones donde el modelo horizontal devolvió una baja confianza. Este enfoque selectivo mantiene la latencia promedio en 19 ms en Q8 frente a 36 ms si ambos modelos se ejecutan en la página completa.

Frequently Asked Questions

¿Qué modelos de bolígrafo de lectura utilizan OCR con aprendizaje profundo?
El F8, K7, KF1, Q6 e Y6 utilizan un motor de OCR con aprendizaje profundo basado en CRNN llamado G2. El L5, Q8 y T2 utilizan un motor de CNN más transformador llamado G3. El B1, B2 y P2 utilizan una canalización clásica llamada G1 porque sus MCU de clase Cortex-M4 no pueden ejecutar una red neuronal a una latencia aceptable. G3 es el más preciso con un 99,2% en texto limpio; G2 alcanza el 98,7%; G1 alcanza el 97,6%.
¿Cuál es el tamaño de fuente más pequeño que el OCR del bolígrafo de lectura puede reconocer?
En el motor G3 en T2, se reconocen fuentes de hasta 6 pt con una altura de mayúscula de 0,18 mm con una precisión de caracteres del 91,4%. En G2 en K7, el mismo texto de 6 pt baja al 86,2% de precisión. En G1 en B1, el texto de 6 pt tiene una precisión del 71,8%. Para libros de texto escolares con texto de cuerpo de 8 pt, recomendamos solo el L5, Q8 y T2 con el motor G3.
¿Con qué frecuencia se reentrena el modelo OCR?
Los modelos G3 y G2 se reentrenan trimestralmente con un corpus de 6,2 millones de líneas extraídas de 47 países. Cada versión debe mejorar la precisión general en al menos 0,2 puntos porcentuales en el subconjunto de bolígrafos de lectura de ICDAR 2015 reservado para pruebas y no debe retroceder en ninguno de los 14 idiomas admitidos. La cadencia de reentrenamiento y la metodología de pruebas de regresión están documentadas en cada nota de versión del firmware.
¿Por qué el tamaño del modelo OCR difiere entre modelos?
El modelo G3 Latin int8 ocupa 2,3 MB en disco, el modelo G2 Latin int8 ocupa 1,4 MB y la canalización G1 Latin int8 ocupa 1,4 MB. El presupuesto de flash en cada modelo limita los scripts admitidos. B1, B2 y P2 se envían solo con Latin. K7, KF1, Q6 e Y6 se envían con Latin más 6 scripts latinos extendidos. L5, Q8 y T2 se envían con Latin más CJK básico más árabe más cirílico.
¿Se puede entrenar un modelo OCR personalizado para un diccionario OEM?
Sí. Aceptamos corpus de clientes de tan solo 50.000 líneas escaneadas y ajustamos finamente el modelo G2 o G3 en 8 horas en una sola GPU A100. El modelo ajustado finamente se envía como un binario firmado y reemplaza al modelo general en el firmware. El pedido mínimo OEM es de 5.000 unidades; el SLA de entrenamiento es de 15 días hábiles, incluidos 3 días de revisión de QA y aprobación del cliente.
Tu carrito
Su experiencia en este sitio mejorará al permitir cookies. Política de Cookies
Chat on WhatsApp