Códigos de barras y 1D

¿Qué es un dígito de control y cómo detecta errores?

Ese último número de un código de barras no es aleatorio: es un dígito de control. Cómo una fórmula sencilla detecta errores de escaneo y de tecleo.

Un dígito de control es el detector de mentiras integrado de un código de barras. Es un único dígito extra, calculado a partir de todos los demás, cuyo único propósito es revelar cuándo un código se ha escaneado o tecleado mal. Entender cómo funciona te muestra por qué un número de producto mal tecleado casi nunca pasa desapercibido. 🐾

¿Qué es un dígito de control?

Un dígito de control es un dígito de redundancia: un número calculado a partir de los demás dígitos de un código usando una fórmula fija, y luego añadido al final. Cuando el código se escanea después, el lector ejecuta la misma fórmula sobre los dígitos entrantes y comprueba si el resultado sigue coincidiendo con ese dígito final. Si no coincide, algo se leyó mal, y el escáner rechaza el código en lugar de actuar sobre datos erróneos.

El dígito no lleva información de producto propia. Es pura detección de errores. Esta idea forma parte de una familia mucho más amplia de técnicas, que repasamos en detección frente a corrección de errores y sumas de comprobación, hashes y paridad. En un código de barras es la última y silenciosa línea de defensa contra un escaneo defectuoso.

¿Cómo funciona el dígito de control del UPC y el EAN?

El UPC-A y el EAN-13 usan ambos un algoritmo ponderado mod-10. La parte ingeniosa es la ponderación alterna: los dígitos no se suman sin más. En su lugar, los dígitos alternos se multiplican por 3 y el resto por 1 antes de sumar, por lo que a menudo se le llama la ponderación 3-1.

Aquí tienes la receta para un UPC-A, cuyos primeros 11 dígitos son los datos y cuyo 12.º dígito es el de control:

  1. Toma los 11 dígitos de datos y numéralos desde la izquierda.
  2. Suma los dígitos en las posiciones impares (1.ª, 3.ª, 5.ª, y así sucesivamente) y multiplica esa suma por 3.
  3. Suma los dígitos en las posiciones pares (2.ª, 4.ª, 6.ª, y así sucesivamente) y multiplica esa suma por 1.
  4. Suma los dos resultados para obtener un total.
  5. Halla lo que debes añadir para alcanzar el siguiente múltiplo de 10. Ese número, el complemento mod-10, es el dígito de control.

En resumen, el dígito de control es lo que haga que toda la suma ponderada se divida exactamente por 10.

Un ejemplo resuelto, paso a paso

Calculemos el dígito de control del UPC-A cuyos 11 dígitos de datos son 03600029145. Numerando desde la izquierda, los dígitos ocupan las posiciones 1 a 11.

Posición1234567891011
Dígito03600029145

Paso 1 — posiciones impares (1, 3, 5, 7, 9, 11): 0 + 6 + 0 + 2 + 1 + 5 = 14. Multiplica por 3: 14 × 3 = 42.

Paso 2 — posiciones pares (2, 4, 6, 8, 10): 3 + 0 + 0 + 9 + 4 = 16.

Paso 3 — total: 42 + 16 = 58.

Paso 4 — complemento mod-10: 58 dividido entre 10 deja un resto de 8. Para alcanzar el siguiente múltiplo de 10 (que es 60) necesitamos sumar 2. Así que el dígito de control es 2.

El UPC-A completo y válido es 036000291452. Si un escáner llega a leer un dígito final distinto, las cuentas no cuadrarán, y el código se rechaza.

Un detalle pulcro: cuando el resto ya es 0, el dígito de control es 0, no 10. Eso es lo que garantiza el "mod-10", un único dígito cada vez.

¿Qué errores detecta un dígito de control?

El esquema ponderado mod-10 está deliberadamente diseñado para detectar los dos deslices humanos y de máquina más comunes.

Errores de un solo dígito

Si cualquier dígito se lee mal, digamos que un 3 se convierte en un 8, el total ponderado cambia y ya no cae en un múltiplo de 10. Un dígito de control detecta todos los errores de un solo dígito.

Errores de transposición

Una transposición es cuando dos dígitos adyacentes se intercambian, como teclear 21 en lugar de 12, un tropiezo clásico de los dedos. Como las posiciones vecinas llevan pesos distintos (una se multiplica por 3, la otra por 1), intercambiarlas normalmente cambia el total, así que la mayoría de las transposiciones también se detectan.

¿Qué errores pueden colarse?

Ningún dígito de control único es perfecto, y es honesto decirlo. La ponderación 3-1 se pierde un caso concreto y estrecho: una transposición de dos dígitos adyacentes que resultan diferir exactamente en 5. Por ejemplo, intercambiar un 1 y un 6 deja el total ponderado sin cambios, porque la diferencia que crea el intercambio es un múltiplo de 10 y se desvanece bajo mod-10.

Estos puntos ciegos son raros, por lo que un solo dígito de control basta para el comercio minorista. Cuando se necesita una fiabilidad mucho mayor, los sistemas superponen esquemas más fuertes, desde sumas de comprobación más largas hasta la corrección de errores completa integrada en los códigos 2D, descrita en la corrección de errores de los códigos QR. Un dígito de control es un guardián inteligente, no uno indestructible.

¿Por qué importa esto en los códigos de barras cotidianos?

Cada vez que el escáner de un cajero pita, ese pitido significa que el dígito de control pasó. Un pitido fallido, o un "vuelva a escanear, por favor", a menudo significa que el lector detectó una lectura errónea antes de que pudiera cobrarte el artículo equivocado. Este diminuto trozo de matemáticas, ejecutándose silenciosamente miles de millones de veces al día, es una gran razón por la que se confía en los códigos de barras.

Todo el sistema de quién emite estos números y los mantiene únicos está coordinado globalmente, como explicamos en los estándares de códigos de barras GS1, y puedes ver de dónde vino el código minorista en la historia del código de barras UPC. Si prefieres codificar un mensaje completo en lugar de un número de consulta, puedes crear un código QR gratis cuya cuadrícula lleva su propia corrección de errores, mucho más potente.

Preguntas frecuentes

¿Qué es un dígito de control?

Es un dígito extra calculado a partir de los demás dígitos de un código usando una fórmula fija. Un escáner lo recalcula sobre los dígitos que lee y rechaza el código si el resultado no coincide, detectando así las lecturas erróneas.

¿Cómo se calcula el dígito de control del UPC?

Suma los dígitos en las posiciones impares y multiplica por 3, suma los dígitos en las posiciones pares, suma ambos resultados y luego toma el número necesario para alcanzar el siguiente múltiplo de 10. Ese complemento mod-10 es el dígito de control.

¿Qué significa la ponderación 3-1?

Los dígitos alternos se multiplican por 3 y el resto por 1 antes de sumar. Dar pesos distintos a las posiciones vecinas es lo que permite que el esquema detecte la mayoría de los errores de transposición.

¿Qué errores se le escapan a un dígito de control?

El esquema del UPC y el EAN detecta todos los errores de un solo dígito y la mayoría de las transposiciones, pero puede pasar por alto el intercambio de dos dígitos adyacentes que difieren exactamente en 5, porque ese cambio se cancela bajo mod-10.

¿Usan los códigos QR un dígito de control?

Los códigos QR van más allá, usando corrección de errores integrada que puede tanto detectar como reparar el daño, en lugar de un solo dígito de control que solo detecta errores.

Crea un código QR de forma honesta 🐾

Gratis para siempre, sin rastreo, sin caducidad — generado en tu propio navegador.

🎨 Crear un código QR →