Biblioteca en Python aplica Reed-Solomon a códigos impresos para OCR

Fuentes: Python library adds Reed-Solomon ECC for OCR-safe printed codes

El repositorio chasangchual/reed-solomon-for-ocr ofrece corrección de errores optimizada para flujos de lectura óptica de códigos impresos: cupones, identificadores, etiquetas y cualquier documento generado en entornos de impresión poco fiables, como impresoras matriciales con pines dañados, cintas con tinta agotada o etiquetas expuestas a suciedad. La idea central es imprimir un código compacto con corrección de errores Reed-Solomon (ECC) y texto de paridad seguro para OCR, de modo que cuando el reconocimiento confunda uno o varios símbolos, el decodificador detecte el fallo, identifique las posiciones inconsistentes y recupere el mensaje original, siempre que el número de errores no supere la capacidad configurada.

La implementación trabaja sobre GF(256) con símbolos de 8 bits y longitud máxima de codeword de 255. Por defecto admite hasta 255 símbolos por palabra de código y codifica el mensaje seguido de los símbolos de paridad, con capacidad de corrección de hasta floor(nsym/2) errores desconocidos. Con nsym=10 se añaden diez símbolos de paridad y se corrigen hasta cinco errores. Para minimizar confusiones entre caracteres visualmente parecidos, el proyecto recomienda reducir el alfabeto y conserva solo los símbolos más distintivos dentro de cada grupo (por ejemplo, mantener 1 y eliminar I y l, o conservar 5 y descartar S). El alfabeto final seguro combina números (2 3 4 5 6 7 8 9) y letras (A C D E F H J K L M N P Q R T U W X Y).

Dado que cada byte de paridad no cabe en un único carácter seguro, la biblioteca codifica cada byte de paridad como dos caracteres OCR-safe. La API expone métodos para codificar, verificar y corregir con paridad OCR-safe, además de envoltorios funcionales y pruebas unitarias ejecutables desde la línea de comandos. El objetivo declarado es acercar la fiabilidad del OCR al 100 % en flujos controlados de códigos impresos, siempre que la calidad del escaneo y el número de errores no excedan la capacidad de corrección.