Cuando un lector óptico falla al leer un código de barras, el error casi nunca se descubre al mirar la etiqueta, sino al comprobar el último carácter. Ese carácter es un dígito verificador calculado sobre los anteriores, y su existencia explica por qué la caja del supermercado rechaza una lectura defectuosa en lugar de cobrar el producto equivocado. Entender cómo se obtiene ese dígito ayuda a diagnosticar problemas de etiquetado y a decidir qué comprobaciones merece la pena hacer en un sistema que trabaja con muchos códigos.
¿De dónde sale el último dígito de un código de barras?
Los códigos de barras comerciales reservan su última posición para un control calculado con los demás caracteres. Ese control no aporta información sobre el producto: no dice qué es, ni de quién es, ni cuánto cuesta. Su única función es permitir que el lector detecte que ha interpretado mal una barra.
La ventaja es evidente en caja: una barra borrosa o mal impresa produce una cadena incoherente, y el sistema puede pedir que se repita la lectura antes de aplicar un precio. Sin ese control, un solo trazo mal leído se traduciría en un producto distinto y el error pasaría desapercibido hasta el inventario.
Conviene fijar también el vocabulario, porque en la conversación diaria se mezclan. Los dos estándares más conocidos son EAN y UPC, y designan formatos con distinta longitud y con reglas de presentación diferentes. Sus métodos de control, en cambio, pertenecen a la misma familia.
Dos longitudes habituales y el reparto de pesos
Los formatos más frecuentes en circulación tienen dos longitudes, y esa diferencia condiciona la forma de calcular el control.
| Formato | Longitud habitual | Último carácter |
|---|---|---|
| EAN | Una cifra más que su variante corta | Dígito verificador |
| UPC | Una cifra menos que el formato largo | Dígito verificador |
El punto delicado es que las ponderaciones que se aplican a cada posición dependen de la longitud total de la cadena. La misma secuencia de cifras, leída bajo un formato y bajo otro, produce sumas distintas y por tanto controles distintos. Ese es el motivo por el que un software que no fije explícitamente el formato puede aceptar o rechazar la misma lectura según el orden en que pruebe las variantes.
En la práctica, los sistemas de inventario guardan el formato junto al número y no intentan adivinarlo. Esa decisión sencilla evita una clase entera de errores difíciles de reproducir.
La idea del cálculo: ponderar de derecha a izquierda y complementar
El cálculo se apoya en tres movimientos que ya conocemos de otros esquemas: multiplicar cada posición por un peso, sumar los productos y quedarse con el resto de dividir esa suma entre un módulo. La particularidad de los códigos de barras está en el reparto de los pesos y en el último paso.
Los pesos se asignan alternando dos valores, habitualmente tres y uno, empezando a contar por la derecha y excluyendo el propio dígito de control. Después se toma el complemento del resto respecto al módulo, y ese complemento se usa como carácter final. Cuando el resto es cero, el complemento es cero, y el control también lo es.
Ese último paso, el complemento, es lo que distingue a este miembro de la familia de otros que publican el resto tal cual. La diferencia parece menor y cambia por completo el resultado, así que conviene no mezclar implementaciones de esquemas distintos creyendo que son intercambiables.
Qué dice y qué no dice el prefijo del código de barras
El tramo inicial del código suele asociarse con la autoridad que registró la empresa, y de ahí nace una de las confusiones más extendidas: creer que ese prefijo indica dónde se fabricó el producto. No lo indica. El prefijo identifica a la entidad que asignó el número, no al lugar de producción, y un producto fabricado en cualquier parte del mundo puede llevar un prefijo que no corresponde al país de venta.
La atribución de esos tramos la gestiona una organización internacional, y la consulta de qué entidad está detrás de un prefijo concreto se hace contra sus registros publicados, no contra una lista que convenga memorizar ni copiar en el código fuente.
Para un validador, el prefijo no interviene en la comprobación del dígito. Se puede mostrar como información de contexto, pero el resultado de la comprobación no depende de él, y mezclar ambas cosas complica el diagnóstico sin mejorar nada.
¿Basta con que la comprobación pase para poder escanearlo?
No. Que la comprobación pase significa que la cadena de cifras es coherente consigo misma y que se ha leído o transcrito sin errores. No significa que el producto esté registrado, que el número haya sido asignado a una empresa ni que el artículo exista.
Un número inventado que respete la fórmula pasará la comprobación sin dificultad, porque la fórmula solo depende de los caracteres anteriores. Igual que en el resto de esquemas, la comprobación es una prueba de forma y nunca una prueba de existencia.
Para saber si un código está efectivamente asignado hay que consultar los registros de la organización correspondiente, y esa consulta es una operación distinta, con sus propios tiempos de espera, sus límites de uso y su posibilidad de fallar.
Para quien programa: escaneo por lotes y localización de errores
Cuando se procesan lecturas en grandes cantidades, unos cuantos hábitos marcan la diferencia.
- Registra siempre el formato junto al número; no dejes que el código lo deduzca por la longitud.
- Al detectar un fallo, informa de la posición del carácter que no cuadra, no solo de que hay un fallo.
- Trata las lecturas repetidas como un caso normal, no como un error, porque un lector puede disparar dos veces.
- Recuerda que el mismo número puede aparecer con ceros iniciales según el sistema de origen.
- No mezcles la comprobación del control con la consulta de registro, ni en el código ni en los mensajes.
Si en el mismo catálogo conviven libros y productos, conviene revisar también la guía sobre dígito verificador en ISBN e ISSN, donde el cálculo comparte familia pero cambia de alfabeto y de longitud.
Siguientes pasos
Toma una cadena inventada, calcula su control a mano y después cambia una cifra del medio manteniendo el control anterior. Al pasar el resultado por el validador de números obtendrás un no válido, que es exactamente lo que debe ocurrir.
Si quieres comparar este miembro de la familia con los demás, la guía sobre algoritmos de dígito verificador pone los parámetros de cada uno en la misma tabla.
Nota final sobre los ejemplos: los códigos mencionados en este texto son cadenas de demostración construidas para explicar el cálculo; no corresponden a productos reales, no identifican a ninguna empresa y no deben usarse en catálogos ni etiquetas.