Tabla de Contenidos
La instantánea
La necesidad de escanear nuestras identificaciones, facturas, recibos, etc., y extraer la información almacenada en ellos ha surgido en algún momento de nuestras vidas. De manera similar, es posible que tengas documentos PDF que contengan información que necesites extraer. ¿Sabías que el reconocimiento óptico de caracteres (OCR) es el responsable de esto?
Este artículo te proporcionará una imagen clara del potencial del OCR, qué es, cuáles son las tecnologías utilizadas y los usos más frecuentes (y útiles) de esta tecnología.
¿Qué significan las siglas OCR?
OCR significa Reconocimiento Óptico de Caracteres. La definición técnica se refiere a tecnologías de software capaces de capturar elementos de texto de imágenes o documentos y convertirlos a un formato de texto legible por máquina.

Las tecnologías OCR básicas tienen un alcance de uso limitado. Sin ninguna capa de procesamiento adicional, su propósito suele ser recuperar texto codificado por máquina de imágenes o documentos escaneados y almacenarlos en software de gestión documental.
Para otros casos de uso, como la extracción de información clave de documentos, se requiere construir otra capa de inteligencia sobre la salida del OCR, basada en información semántica u otras características visuales o de lenguaje natural. Independientemente del contexto, el OCR es el paso inicial cuando el punto de entrada de tu flujo de trabajo obtiene texto estructurado a partir de documentos escaneados o fotos.
Por lo tanto, el acrónimo OCR se usa comúnmente para referirse a cualquier aplicación basada en OCR, como una aplicación móvil de consumo que convierte una imagen en un documento de texto editable. Por ejemplo, el software capaz de extraer información clave de facturas a menudo se denomina "OCR de facturas".
OCR para documentos y fotos
En la escuela primaria, aprendiste a realizar la conversión de imagen a texto utilizando tus ojos como entradas visuales y tu conocimiento sobre las formas de los caracteres como modelo. Es cierto que a esa edad podías leer palabras bien escritas/tecleadas en una hoja de papel, pero es posible que te costara leer grafitis escritos a mano.
Antes de profundizar en la tecnología OCR, es importante comprender los principales casos de uso y cómo se utiliza dentro del software. Estructurar texto a partir de imágenes puede ayudar a resolver múltiples casos de uso en el mundo real.
De esta manera, dividiremos los casos de uso en dos dominios visuales distintos:
- OCR en entornos reales: un mensaje de amor escrito en la arena de la playa
- OCR en documentos: su billete de tren
Estos dos dominios presentan diferencias significativas en cuanto a la densidad de elementos (mucho mayor en los documentos) y las disposiciones espaciales/estructurales. Sin embargo, nos centraremos en el dominio más específico: el OCR en documentos.
¿Para qué sirve el OCR?
Convertir imagen a texto usando OCR
La conversión de imagen a texto es el caso de uso más común del OCR. Se refiere a cualquier aplicación web o móvil que transforma una imagen que contiene texto en texto plano legible por máquina. El objetivo principal de estas herramientas es ayudar al usuario a transcribir todo el texto capturado en una foto en pocos segundos, en lugar de escribir manualmente todo el texto. El texto resultante puede copiarse luego en el portapapeles del usuario y utilizarse en su dispositivo.
Digitalizar documentos con OCR
También conocida como desmaterialización, la digitalización de un documento consiste en crear una copia de texto legible por máquina de un documento para almacenarla en un software de gestión documental. Puede ser un formato de texto plano o una copia editable con el mismo diseño. En el segundo escenario, se requiere un OCR capaz de detectar la posición de cada palabra junto con su contenido de texto para detectar el diseño de los documentos.
La mayoría de las empresas de digitalización proporcionan a sus clientes el hardware adecuado (escáneres) para gestionar la conversión de documentos en papel a datos digitales.

Hacer que los PDF sean buscables e indexables con OCR
Cualquier archivo de documentos no estructurados puede transformarse en texto legible por máquina para que cada documento sea buscable mediante una consulta en lenguaje natural. Utilizando solo un OCR, puede simular una búsqueda CTRL/CMD+F dentro de un documento escaneado sobre el texto que contiene. Para casos de uso de OCR más avanzados, es probable que necesite construir un motor de búsqueda para buscar diferente información semántica escrita en su documento. Podría ser necesario añadir funciones de extracción de información clave a su OCR antes de indexar los datos extraídos en un motor de búsqueda.
{{cta-awareness-1="/in-progress/global-blog-elements"}}
Reconocimiento óptico de caracteres para el reconocimiento de documentos
También conocida como clasificación de documentos, esta tarea consiste en clasificar automáticamente un nuevo documento asignándole un tipo de entre un conjunto predefinido de clases de documentos. El papel del OCR, en este caso, es extraer todas las palabras y caracteres de un documento y utilizarlos como características para un clasificador más adelante. Este clasificador puede basarse en reglas sencillas de detección de palabras clave (es decir, "impuestos" para facturas o recibos, "números de pasaporte" para documentos de pasaporte…) así como en algoritmos de aprendizaje automático (ML) para una clasificación más compleja. El uso de un modelo de ML es una ventaja real para esta tarea, ya que no requiere un OCR extremadamente robusto para obtener un rendimiento muy alto.

- En flujos de trabajo de adquisiciones: Dado un nuevo documento similar a una factura, las acciones tomadas en un flujo de trabajo de adquisiciones varían según el tipo de documento. Un formulario de pedido debe ser aprobado, una factura debe ser pagada y, finalmente, un recibo debe ser cargado al sistema de contabilidad.
- En la gestión de gastos: El software de gestión de gastos utiliza los datos de los recibos para aplicar el proceso de aprobación correcto o para detectar posibles fraudes. Por ejemplo, algunas empresas solo reembolsan parcialmente los gastos de sus empleados en gasolina o restaurantes, pero reembolsan completamente los recibos de estacionamiento u hotel. Algunas de ellas tampoco reembolsan los gastos de restaurante de sus empleados si la hora del recibo no se encuentra dentro de una ventana de tiempo específica.
- En la solicitud de préstamos: Para algunos procesos de solicitud de préstamos, el solicitante envía un PDF único que incluye un conjunto de documentos diferentes (identificaciones, declaración de impuestos, nóminas, certificado de constitución para empresas, etc.). Ese PDF único debe dividirse en los tipos de documentos adecuados para enviar cada uno de ellos a diferentes flujos de trabajo.
Extraer información clave de documentos usando OCR
Este caso de uso es probablemente el más complicado y crucial en el ámbito de la automatización de flujos de trabajo. Consiste en extraer información específica de documentos y generarla en un formato legible por máquina que pueda utilizarse en otro software.
En comparación con el problema de clasificación de documentos, el rendimiento del OCR utilizado es extremadamente importante para este caso de uso, ya que no se basa en una extrapolación del contenido del texto, sino en caracteres específicamente encadenados.

- Flujos de trabajo de incorporación de clientes: Esto implica obtener datos estructurados de documentos heredados para poblar la información de la cuenta de los clientes en el software requerido. En el software de gestión de contratos, por ejemplo, los usuarios necesitan tener sus contratos pasados y en curso almacenados con sus datos clave para beneficiarse de las características del producto. Estos datos clave incluyen principalmente las partes, el tipo de contrato, las fechas de inicio y fin, y la política de renovación. Automatizar el extracción de información clave (KIE) de los contratos es importante para facilitar el proceso de incorporación.
- En los flujos de trabajo de adquisiciones: la automatización de las cuentas por pagar (AP) requiere extraer los datos clave escritos en las facturas para automatizar o facilitar el proceso de pago de las facturas entrantes. El uso del término "OCR de facturas" para este caso de uso está muy extendido, pero no se corresponde con la definición técnica de un OCR. El conjunto de datos que debe extraerse depende ligeramente del flujo de trabajo y de las especificaciones del software, pero generalmente incluye:
- Nombre del proveedor (a veces junto con un identificador de empresa como TIN (número de identificación fiscal), SIRET, número de IVA…)
- Fecha de facturación
- Fecha de vencimiento del pago
- Importes totales de la factura: uno incluyendo impuestos y otro excluyéndolos
- Impuestos totales de la factura (a veces con los detalles de la línea de impuestos)
- Datos bancarios del proveedor para transferencias
Añadir datos clave adicionales a esta lista puede ayudar a cubrir más casos de uso de adquisiciones:
- La conciliación a tres bandas consiste en asociar un formulario de pedido, una factura y un recibo de pago utilizando el número de orden de compra (PO) que debe extraerse de los tres documentos;
- La automatización de las cuentas por cobrar (AR) y el factoring que requieren la extracción automática del nombre y la dirección del cliente;
- La aprobación de adquisiciones requiere la extracción de las partidas individuales escritas en las facturas. La extracción de partidas individuales es una tarea que no encaja exactamente con el problema de la extracción de información clave, ya que se basa en la detección y estructuración de tablas.
{{cta-consideration-1="/in-progress/global-blog-elements"}}
Tecnología OCR
¿Cómo se distinguen las meras secuencias de palabras de un documento? ¿Cómo se percibe la diferencia entre "escribir 1 o 2 párrafos sobre un tema" y "crear un documento sobre un tema"?
Hay que reconocer que los párrafos consecutivos no son suficientes para crear un documento. Los documentos codifican información combinando convenciones semánticas/de escritura (a qué se refiere una secuencia de caracteres dada) y disposiciones visuales/estructurales (por ejemplo, documentos tipo formulario). Los documentos pueden integrar fácilmente información no textual (por ejemplo, una imagen), lo que los convierte en un medio de información más rico que las meras secuencias de palabras.

Como primer paso, consideremos cómo un humano interpreta un documento:
- Localización parcial de la información
- Centrarse en las palabras secuencialmente para reconocer la información textual
- Utilizar el conocimiento semántico para dar sentido a este texto.
También podemos argumentar que un humano utiliza su conocimiento semántico como un bucle de retroalimentación para el reconocimiento de texto: si tienes dudas visuales sobre un carácter en medio de una palabra, tu conocimiento del lenguaje te ayudará a disipar esa duda.
Las tecnologías OCR se basan en los mismos pasos para detectar y reconocer texto dentro de las imágenes. El primer paso consiste en localizar los elementos de texto en la imagen, y el segundo es reconocer los caracteres en esas ubicaciones para convertirlos en una secuencia de caracteres legible por máquina.
OCR Detección de texto
En general, un problema de detección de objetos en visión por computadora se refiere a la tarea de detectar las posiciones de los objetos en las imágenes. La salida de dichos algoritmos es una lista de cajas delimitadoras que corresponden a las posiciones de cada objeto detectado en la imagen.

El algoritmo de detección de texto en un flujo de trabajo OCR es responsable de detectar cada cadena de caracteres en la imagen que no contiene un espacio en blanco. La definición de alto nivel del algoritmo de detección de texto es:
- Entrada: imagen con múltiples secuencias de palabras
- Salida: localización de cada palabra / secuencia de caracteres ininterrumpida.
Por convención, consideraremos que la localización se realiza utilizando cajas delimitadoras (la caja rectangular más pequeña que encierra la palabra). Pero en general, la salida puede ser cualquier polígono que encierre el objeto deseado.
Un primer acercamiento a la detección de texto: Detección de objetos simple
Arquitecturas populares de modelos de visión por computadora: Faster R-CNN, YOLO

Extracción de características de imagen
La mayoría de los modelos de aprendizaje profundo procesan la información visual utilizando varias capas de convoluciones. Las convoluciones son un tipo de función matemática utilizada en una red neuronal, típicamente para reconocer patrones presentes en las imágenes. Cada capa extrae información de su vecina anterior identificando patrones espaciales locales. Dichas capas apiladas extraen, por lo tanto, patrones espaciales cada vez más amplios y complejos.
Este proceso se denomina generalmente extracción de características (espaciales) y produce un conjunto de patrones espaciales complejos identificados por su modelo. Para una introducción detallada a las redes neuronales convolucionales, consulte este excelente artículo con animación interactiva en el navegador.
Agrupación de características (Feature pooling)
Cada objeto está representado por un conjunto de coordenadas que forman la caja delimitadora que incluye el objeto que buscamos (palabras en este caso). Para cada candidato de objeto, imaginemos que las características extraídas son un conjunto de matrices (N, N) (siendo N generalmente mucho menor que el tamaño de la imagen de entrada), donde la esquina superior izquierda de estas corresponde a los patrones espaciales que se extrajeron de la parte superior izquierda de su imagen de entrada. Ahora necesitamos enfocarnos en una amplia gama de tamaños de objetos en la imagen. Para ello, estableceremos algunas premisas:
- un conjunto de relaciones de aspecto esperadas
- un conjunto de escalas esperadas
- un conjunto de centros de objeto esperados
Más específicamente, en una ubicación/centro de objeto dado, solo consideraremos objetos que estén cerca de cualquier combinación de nuestras relaciones de aspecto y escalas predefinidas.
Ahora que tenemos nuestras características extraídas y la localización aproximada estimada (caja delimitadora) de un objeto, extraeremos las características de cada ubicación y las redimensionaremos utilizando una operación llamada agrupación de regiones (RoI pooling en Faster-RCNN, RoI Align en Mask-RCNN), ilustrada a continuación.

Usando esto, si tuviéramos M centros de objeto esperados, 3 posibles relaciones de aspecto y 3 posibles escalas, obtendríamos un conjunto de 9 * M características agrupadas (cada una correspondiente a una combinación de centro, relación de aspecto y escala). Tenga en cuenta que esto es cierto independientemente del tamaño de nuestras características extraídas.
Clasificación y regresión de cajas
Para cada uno de nuestros candidatos a objeto, ahora podemos realizar diferentes tareas. En la detección de objetos, refinaremos el cuadro delimitador (partiendo de nuestro previo correspondiente de centro + escala + relación de aspecto) y clasificaremos el objeto (por ejemplo, ¿es un perro o un gato?). En nuestro contexto, la clasificación será simplemente binaria (¿es esto una palabra o no?).
Un segundo enfoque para la detección de texto: segmentación de imágenes
Arquitecturas populares de modelos de visión por computadora: U-Net, DeepLab

Utilizando las mismas características extraídas que en la detección de objetos, el conjunto de características espaciales (N, N), ahora necesitamos escalar estas de nuevo a las dimensiones de la imagen (H, W). Recuerde que N es menor que H o W.
Escalado de características
Especialmente si nuestras matrices (N, N) son mucho más pequeñas que la imagen, un sobremuestreo básico no aportaría valor. En lugar de simplemente interpolar nuestras matrices a (H, W), las arquitecturas tienen diferentes trucos para aprender esas operaciones de escalado, como las convoluciones transpuestas. Así obtenemos características de grano fino para cada píxel de la imagen.
Clasificación binaria
Utilizando las múltiples características de estos píxeles, se realizan algunas operaciones para determinar su categoría. En nuestro caso, solo determinaremos si el píxel pertenece a una palabra, lo que produce un resultado similar a la ilustración de "segmentación" de la figura anterior.
Conversión de cuadros delimitadores
Finalmente, el mapa de segmentación binaria debe convertirse en un conjunto de cuadros delimitadores. Parece una tarea mucho más fácil que producir el mapa de segmentación, pero dos palabras cercanas entre sí podrían parecer la misma según su mapa de segmentación. Se requiere cierto postprocesamiento para producir una localización de objetos relevante.
Reconocimiento de texto OCR

El bloque de reconocimiento de texto en una tubería de OCR es responsable de transcribir la secuencia de caracteres de una imagen:
- imagen con una secuencia de caracteres única
- Salida: el valor de la palabra
La suposición de que hay una única secuencia de caracteres nos permite considerar dos enfoques.
Un primer enfoque para el reconocimiento de texto: clasificación de caracteres progresiva

Dividir palabras en recortes de caracteres
Existen numerosas técnicas de visión por computadora para localizar horizontalmente cada carácter, como los histogramas de color horizontales. Generalmente, esta operación no requiere una gran potencia de cálculo gracias a nuestra suposición de una secuencia de un solo carácter.
Clasificación de caracteres
Ahora, en lugar de tener una secuencia de caracteres que identificar, esto se convierte en un simple problema de clasificación de imágenes. En vez de predecir si es un perro o un gato (¿es una palabra o no?), tendremos que identificar directamente el carácter en nuestra imagen.
Afortunadamente para nosotros, esto no requiere imágenes de entrada grandes ni arquitecturas muy profundas, como demostró Yann Lecun con su modelo LeNet5 entrenado para clasificar dígitos escritos a mano en 1998. En resumen, el modelo extraerá características espaciales, las agrupará y clasificará todo el conjunto de características para predecir el resultado. Luego, solo necesitamos ensamblar nuestras predicciones de caracteres en predicciones de palabras.
Un segundo enfoque para el reconocimiento de texto: modelado de secuencias

Extracción de características de imagen
Nuestros recortes de imágenes de palabras ahora pueden ser alimentados a un modelo para extraer características espaciales, similar a lo que hemos hecho en la detección de objetos (esta vez con una resolución mucho, mucho más baja). Para simplificar, imaginemos que esto produce un conjunto de (1, N características espaciales.
Alineación y clasificación
Ahora es muy importante señalar que las características extraídas siempre tendrán el mismo tamaño de salida, independientemente de la longitud de la palabra. Esto significa que en nuestras (1, N características espaciales, rara vez hay N caracteres. Puede que ya lo hayas entendido: tenemos un problema de alineación.
Este problema de alineación es común a todos los problemas de modelado de secuencias, como la transcripción de audio a texto, de imagen a secuencia de caracteres, etc.
Uno de los enfoques modernos para esto implica el uso de la Clasificación Temporal Conectiva (explicada brillantemente en este artículo ), que procede en dos pasos:
- alineación: pasar de nuestras características N-6 (x1, …, x6) a N caracteres alineados ("c", "c", "a", "a", "a", "t")
- colapsado: fusionar los caracteres N-alineados en una salida limpia ("c", "a", "t") Obstáculos del OCR Obstáculos del mundo real
Recurso de OCRs
Dependiendo de sus limitaciones y recursos internos, puede aprovechar el OCR de múltiples maneras: desde implementar su propio OCR y gestionar su despliegue listo para producción hasta delegar todo el proceso a un servicio comercial de terceros.
Bibliotecas OCR de código abierto
Si bien los recursos de código abierto generalmente no vienen sin gastos financieros directos, necesita tener recursos internos para orquestar el despliegue de su servicio. Sin embargo, esto generalmente deja espacio para personalizar su bloque de predicción (reentrenamiento, optimización, interfaz) ya que tiene acceso a todo el código base.
Mindee proporciona a desarrolladores y científicos de datos un OCR de código abierto en Python docTR, a continuación encontrará una demostración.
API de OCR de Mindee
El aspecto positivo de los servicios comerciales es que solo necesitará interconectar la API con su sistema de información. Con esta opción, delega a terceros las responsabilidades de orquestación en la nube y desarrollo de modelos a cambio de dinero por su factura pagada. Mindee es una API de OCR de confianza que se utiliza para analizar documentos para desarrolladores. Con nuestra clave API gratuita, puede comenzar a usar nuestras API de reconocimiento óptico de caracteres (OCR) de forma rápida y sencilla para extraer información de sus documentos.
{{cta-conversion-1="/in-progress/global-blog-elements"}}
Acerca de



.webp)
.webp)
.webp)