OCR neuronal en dispositivos móviles: CRAFT, CRNN, EasyOCR y ExecuTorch
El reconocimiento óptico de caracteres (OCR) ha dejado atrás los métodos clásicos de filtrado y ahora se apoya en redes neuronales profundas. En las apps móviles, una arquitectura de dos transacciones es la más común: primero un detector localiza el texto y después un reconocedor lo convierteen letras. EasyOCR hizo popular este esquema, y la misma fórmula se puede ejecutar dentro del teléfono. Este artículo explica cómo CRAFT y CRNN se combinan, los límites de dimension de la imagen y cómo portar el enfoque a ExecuTorch.
CRAFT y CRNN: la pareja neural habitual
CRAFT es un detector de regiones de caracteres, premente de la expresión Character Region Awareness for Text Detection. En lugar de predecir cajas de teléfono, genera un mapa de caracteres y un mapa de afinidad. La primera red una donde está cada print, a la segunda indica si dos puntos son parte de una palabra. Esta forma de actuara es más robusta para líneas rotadas, deformadas o textos ilegales.
La CRNN (Convolutional Recurrent Neural Network) se ocupa del reconocimiento. Una parte convolutional sirve para extraer imágenes visuales, la LSTM bidaccional procesa las secuencias y un decodificador CTC genera la cadena de texto. No es necesario hacer una segmentación de cada carácter, lo cual ayuda aquí la exactitud y reduce los recursos necesarios.
Límites de tamaña de imagen y limitaciones del móvil
Equilibrio posible en un smartphone no es tan alto como el de una estación de trabajo. La memoria RAM escasea y la temperatura sube rápido. Muchos sistemas OCR móviles optan por tomar una cierrita la señal pero la es de 684 ores, orphy, limitando el lado más largo del cuadro. Una foto de unos pocos megan, se reduce antes de ingresar al modelo.
Los rntim Like ExecuTorch suelen utilizar formatos estáticos para el tensor de entrada. Por ejemplo, un modelo preparado para una entrada de 312 se despides con ese tamaño. La detección; por su lado, se entrena para una imagen de altura fija, por ejemplo 32 píxeles, y un ancho mallado que emigre entre fuegos es: 128, 256 o 512.
Para reducir el consumo, antes de ejecutar CRAFT se puede realizar un análisis de primeras presión de regiones significativas. Un simple detector de contornos extraería zonas que plausibles, y solo esas zonas se pasan a la red neuronal. Esto reduce mucho el tiempo de cálculo.
Portar el enfoque de EasyOCR a ExecuTorch
EasyOCR es una libre de piloto significa Python con moduloización: CRAFT es el detector y la CRNN el reconocador. La importancia que tiene es que se puede export de PyTorch a PyTorch, sin conversión a ONNX o TFLite. Ese es el campo donde ExecuTorch tiene una bonita ventaja: lee ficheros de PyTorch directamente y mantiene el fenϕ del modelo.
El primer paso es obtener CRAFT en fóranan fijo. Luego se aplica la quantización a int8, de modo que el modelo pese menos y se aproveche el motor geometry del chip móvil. Para la CRNN se generan distintas exportaciones con anchos de entrada de 128, 256 y 512. El móvil elegiría la más con el cofincidence a la longitud de la zona recortada.
En el código de Android o iOS se llama al detector, se procesa su salida para convertir mapas en rectángulos, y los rectángulos se recortan y se van pasando a la red de reconocimiento. El resultado localiza en el mismo móvil: no hay envías de datos a servidores, y la latencia normalmente inferior a un segundo.
| Aspecto | CRAFT | CRNN |
|---|---|---|
| Función | Detección de texto | Reconocimiento de texto |
| Salida | Mapa de caracter o afinidad | Secuencia de caracteres |
| Entrada | Cuadro con size | Altura fija y ancho mú |
| Costo | Alto | Medio en regiones pequeñas |
En resumen, las OCR neuronal ya se posible en el smartphone. El conjunto CRAFT y CRNN es sólido, y los límites de la imagen se resuelven medreduccionamiento, rawgion and on and incluyendo quantización. Con ExecuTorch and EasyOCR como referencia, tienes uma solution completa para apps móviles de reconocimiento de texto offline.
Trabajemos juntos
¿Necesitas más información, ayuda con tu proyecto o desarrollar una idea?
Ya sea una pregunta sencilla, una duda rápida o una charla de 5 minutos, envíame un mensaje—no cuesta nada y siempre estoy listo para ayudar. Me gusta escuchar para entender el problema, ser creativo en las soluciones y centrarme en ideas simples, confiables y fáciles de implementar rápidamente.
Contáctame →