El Código Universal de Producto ( UPC o código UPC ) es una simbología de código de barras que se utiliza en todo el mundo para rastrear artículos comerciales en las tiendas.
La simbología elegida tiene barras (o espacios) de exactamente 1, 2, 3 o 4 unidades de ancho cada una; cada dígito decimal que se va a codificar consta de dos barras y dos espacios elegidos para tener un ancho total de 7 unidades, tanto en forma de paridad "par" como "impar", lo que permite escanearlos en cualquier dirección. Se entremezclan "patrones de protección" especiales (de 3 o 5 unidades de ancho, que no codifican un dígito) para facilitar la decodificación.
Un UPC (técnicamente, un UPC-A) consta de 12 dígitos que se asignan de forma única a cada artículo comercial. La organización internacional GS1 asigna los dígitos utilizados tanto para el UPC como para el código de barras del Número de artículo internacional (EAN) relacionado . [1] Las estructuras de datos UPC son un componente de los Números de artículo comercial global (GTIN) y siguen la especificación global GS1, que se basa en estándares internacionales. Algunos minoristas, como los de ropa y muebles, no utilizan el sistema GS1, sino que utilizan otras simbologías de código de barras o sistemas de números de artículo. Algunos minoristas utilizan la simbología de código de barras EAN/UPC, pero no utilizan un GTIN para productos que se venden solo en sus propias tiendas.
Las investigaciones indican que la adopción y difusión del UPC estimularon la innovación y contribuyeron al crecimiento de las cadenas de suministro minoristas internacionales. [2]
En 1932, Wallace Flint propuso un sistema de pago automático mediante tarjetas perforadas . Bernard Silver y Norman Joseph Woodland , un estudiante de posgrado del Instituto Tecnológico de Drexel , desarrollaron un código de estilo diana y solicitaron la patente en 1949. [3] [4]
En la década de 1960 y principios de la de 1970, los ferrocarriles de América del Norte experimentaron con códigos de barras multicolores para el seguimiento de vagones , pero este sistema finalmente se abandonó [5] y se reemplazó por un sistema basado en radio llamado Identificación Automática de Equipos (AEI) .
En 1973, un grupo de asociaciones comerciales de la industria de comestibles formó el Consejo de Código Uniforme de Producto (UPCC) que, con la ayuda de los consultores Larry Russell y Tom Wilson de McKinsey & Company , definió el formato numérico que formó la base del Código Uniforme de Producto. [6] Las empresas de tecnología, incluidas Charegon, IBM , Litton-Zellweger, Pitney Bowes-Alpex, Plessey-Anker, RCA , Scanner Inc., Singer y Dymo Industries /Data General, presentaron propuestas alternativas para las representaciones de símbolos al consejo. [ cita requerida ] El Comité de Selección de Símbolos finalmente eligió implementar la propuesta de IBM diseñada por George J. Laurer , pero con una ligera modificación de la fuente en el área legible por humanos. [ cita requerida ]
El primer artículo con código UPC que se escaneó en una caja de venta minorista fue un paquete de 10 (50 unidades) de chicles Wrigley's Juicy Fruit , comprado en el supermercado Marsh en Troy, Ohio , a las 8:01 am del 26 de junio de 1974. [7] La caja registradora de NCR marcó 67 centavos. [8] El carrito de compras también contenía otros artículos con código de barras, pero el chicle fue el primero que se recogió en la caja. Un facsímil del paquete de chicles se exhibió en el museo de historia estadounidense del Instituto Smithsoniano en Washington, DC [9] [10]
Murray Eden fue consultor del equipo que creó el código de barras Universal Product Code. [11] [12] Como presidente de un comité de científicos del Instituto Tecnológico de Massachusetts , ayudó a "seleccionar un símbolo que soportara la inevitable avalancha de tecnología que se avecinaba". [13] Eligió la fuente y se le ocurrió la idea de agregar números en la parte inferior, que es un sistema a prueba de fallos , en caso de que el lector de códigos de barras no funcione correctamente. [14] [15]
A fines de 1969, IBM en Research Triangle Park (RTP) en Carolina del Norte le encargó a George Laurer que determinara cómo fabricar un escáner y una etiqueta para supermercados. A fines de 1970, Heard Baumeister proporcionó ecuaciones para calcular los caracteres por pulgada que se podían lograr con dos códigos de barras de IBM, Delta A y Delta B. En febrero de 1971, Baumeister se unió a Laurer.
Delta B comparó el ancho de las barras con el ancho del espacio para los bits de código. Esto era extremadamente sensible a la propagación de la tinta, donde niveles inadecuados de tinta o presión harían que ambos bordes de una barra se extendieran hacia afuera o se encogieran hacia adentro.
A mediados de 1971, William "Bill" Crouse inventó un nuevo código de barras llamado Delta C. [4] Logró cuatro veces más caracteres por pulgada que Delta B.
Delta C logró su mayor rendimiento utilizando únicamente bordes iniciales con bordes iniciales o finales con bordes finales, lo que no se vio afectado por la distribución uniforme de la tinta. El código proporcionó el mejor rendimiento cuando tenía un conjunto de caracteres definido con una distancia de referencia fija que abarcaba la mayor parte o, preferiblemente, la totalidad del carácter.
En agosto de 1971, Crouse se unió al proyecto del escáner. Después de varios meses, no habían logrado ningún avance. Conocían la etiqueta de diana de RCA que se podía escanear con un simple escáner láser de línea recta, pero una etiqueta legible era demasiado grande.
Aunque Litton Industries propuso un símbolo de ojo de buey cortado a la mitad para reducir el área, seguía siendo demasiado grande y presentaba los mismos problemas de impresión de manchas de tinta que el símbolo RCA. La redundancia y la capacidad de verificación se eliminaron por completo. También estaban al tanto de las numerosas propuestas de todo el mundo, ninguna de las cuales era viable.
En la primavera de 1972, Baumeister anunció un gran avance: propuso una etiqueta con barras ligeramente más largas que la distancia entre todas las barras que se necesitaba leer en una sola pasada. Esta etiqueta podía escanearse con un simple escáner en "X", apenas un poco más complejo que el escáner láser de línea recta. Al día siguiente, Baumeister sugirió que si la etiqueta se dividiera en dos mitades, la longitud de las barras podría reducirse casi a la mitad.
Estas dos propuestas redujeron la superficie desde el centro de la diana en un tercio y luego en un sexto. La imagen de la derecha muestra la etiqueta propuesta por Baumeister. No especificó ningún código de barras específico, ya que eso era bien entendido. Excepto el código de barras y los diez dígitos, la etiqueta UPC actual es su propuesta. Poco después, Baumeister se trasladó a otra área de RTP.
Laurer procedió a definir los detalles de la etiqueta y a redactar una propuesta. NJ Woodland fue designado planificador del proyecto y ayudó a Laurer a redactar su propuesta.
El primer intento de Laurer con un código de barras utilizó el Delta B. El tamaño de la etiqueta resultante fue de aproximadamente seis pulgadas por tres pulgadas, lo cual era demasiado grande. Crouse sugirió que Laurer utilizara su código de barras Delta C y proporcionó una copia de su patente que tenía un conjunto de caracteres alfanuméricos de muestra y reglas para generar alfabetos de otros tamaños. Esto redujo el tamaño de la etiqueta a aproximadamente 1,5 pulgadas × 0,9 pulgadas (38 mm × 23 mm).
Más tarde, Laurer le pidió ayuda a Crouse para saber cómo el escáner podía detectar una etiqueta. Juntos definieron las barras de protección y una definición de cómo detectar la etiqueta. Las barras de protección también proporcionaban identificación para la discriminación de media etiqueta y barras de entrenamiento para los circuitos de umbral del escáner. Laurer tenía una definición completa de la etiqueta y procedió a escribir su propuesta. [16]
Anteriormente, Crouse había tenido la idea de una varita sencilla que se pudiera usar como anillo y pulsera. Decidió desarrollar esa varita para ofrecer una demostración de la etiqueta. [ cita requerida ]
El 1 de diciembre de 1972, IBM presentó la propuesta de Laurer al Comité de Supermercados de Rochester, Minnesota , el lugar donde IBM desarrollaría el escáner. Durante la presentación, Crouse hizo una demostración de laboratorio en la que leyó etiquetas similares a las del UPC con su lector de anillos. Además de leer las etiquetas normales, leyó la gran etiqueta de dos páginas desplegable en el centro del folleto de la propuesta. Luego pasó a una página que mostraba una foto de artículos etiquetados sobre una mesa. Las etiquetas eran pequeñas y defectuosas debido a la resolución de la foto impresa, pero el lector leyó muchas de ellas. Esta demostración mostró la solidez del código Delta C puro. La propuesta fue aceptada.
Un mes después, el 1 de enero de 1973, Crouse regresó al grupo de Tecnología Avanzada de IBM y Laurer siguió teniendo la plena responsabilidad de la marca.
Dymo Industries , fabricante de dispositivos de impresión portátiles, insistió en que el código fuera independiente de los caracteres [ se necesita una aclaración ], de modo que los dispositivos de impresión portátiles pudieran producir el código de barras en la tienda si los artículos no estaban codificados por los fabricantes. La propuesta de Dymo fue aceptada por IBM y se incorporó a la última propuesta de IBM.
Se decidió que las dos mitades de la etiqueta debían tener un conjunto diferente de caracteres numéricos. El conjunto de caracteres que Laurer derivó de la patente Delta C utilizaba siete incrementos o unidades imprimibles, en las que se imprimían dos barras y dos espacios. Esto producía veinte combinaciones de caracteres, pero había dos pares que, al leerse con las reglas de Delta C, producían el mismo código para el par.
Como dieciocho caracteres no eran suficientes, Laurer intentó añadir una unidad al conjunto de caracteres. Esto dio como resultado veintiséis caracteres Delta C que podían proporcionar los dos conjuntos de caracteres decimales, pero también añadía un catorce por ciento al ancho de la etiqueta y, por tanto, a la altura. Esto supondría un aumento del treinta por ciento en el área o una etiqueta de 1,7 pulgadas × 1,03 pulgadas (43 mm × 26 mm). Laurer consideró que esto no era aceptable.
Laurer volvió al conjunto de caracteres original con veinte caracteres, pero cuatro de ellos eran dos pares con la misma lectura Delta C. Decidió utilizarlos todos. Para distinguirlos entre sí, mediría el ancho de una barra en cada uno de ellos. Para cada par, esas barras tendrían una o dos unidades de ancho.
Laurer no aplicó las ecuaciones de Baumeister a este conjunto. Creía que una sola medición del ancho de barra no sería demasiado grave. Resultó que habría sido necesario un aumento del cincuenta por ciento en el ancho y la altura para un aumento del área de más del doble. Laurer admitió más tarde que estos cuatro caracteres en cada conjunto eran responsables de la mayoría de los errores de lectura del escáner.
El matemático David Savir recibió la tarea de demostrar que el símbolo podía imprimirse y que cumpliría con los requisitos de fiabilidad, y probablemente desconocía las ecuaciones de Baumeister. Él y Laurer añadieron dos dígitos más a la decena para detectar y corregir errores .
Luego decidieron agregar paridad par/impar al número de unidades llenas de barras en cada lado. La paridad par/impar es una técnica utilizada para detectar cualquier número impar de errores de bits en un flujo de bits. Decidieron utilizar paridad par en una mitad y par en la otra. Esto proporcionaría una indicación adicional de qué mitad del ticket se estaba leyendo. Esto significaba que cada ancho de barra debía leerse con precisión para proporcionar una buena lectura. También significaba que cada espacio también sería conocido.
El requisito de que cada ancho de bit se lea con precisión básicamente anuló la ventaja de Delta C, excepto la medición de referencia de Delta C. Solo el extraño conjunto de caracteres y el tamaño de la etiqueta permanecen como una sombra del código Delta C. El tamaño seguía siendo el calculado para Delta C puro. Si el tamaño de la etiqueta se hubiera recalculado correctamente, teniendo en cuenta las mediciones de ancho de barra requeridas, la etiqueta habría sido demasiado grande para ser aceptable.
La ingeniería mecánica y el diseño de circuitos electrónicos suelen requerir diseños en el peor de los casos utilizando tolerancias conocidas. Muchos ingenieros que trabajaban con códigos de barras tenían poca experiencia con estas cosas y utilizaban métodos algo intuitivos. Esta fue la causa del bajo rendimiento del código Delta B y, muy probablemente, la falla del escáner de diana de RCA.
La siguiente tabla muestra las etiquetas viables, disponibles a principios de la década de 1970, con sus tamaños.
Esto supone que se trata de un blanco con la misma información y una legibilidad fiable.
Cada código de barras UPC-A consta de una franja escaneable de barras negras y espacios blancos sobre una secuencia de 12 dígitos numéricos. No pueden aparecer letras , caracteres ni ningún otro tipo de contenido en un código de barras UPC-A. Existe una correspondencia uno a uno entre el número de 12 dígitos y la franja de barras negras y espacios blancos, es decir, solo hay una forma de representar visualmente cada número de 12 dígitos y solo hay una forma de representar numéricamente cada franja de barras negras y espacios blancos.
El área escaneable de cada código de barras UPC-A sigue el patrón S L LLLLLMRRRRR R E, donde los patrones de protección S (inicio), M (medio) y E (fin) se representan de la misma manera en cada código de barras UPC-A y las secciones L (izquierda) y R (derecha) representan colectivamente los 12 dígitos numéricos que hacen que cada UPC-A sea único. El primer dígito L indica un sistema numérico particular que se utilizará en los dígitos siguientes. El último dígito R es un dígito de verificación de detección de errores , que permite detectar algunos errores en el escaneo o la entrada manual. Los patrones de protección separan los dos grupos de seis dígitos numéricos y establecen el tiempo.
UPC-A 042100005264 es equivalente a UPC-E 425261 con el patrón de paridad "EOEEOO", que está definido por el sistema de numeración UPC-A 0 y el dígito de verificación UPC-A 4.
Los códigos de barras UPC-A se pueden imprimir a distintas densidades para adaptarse a una variedad de procesos de impresión y escaneo. El parámetro dimensional significativo se denomina dimensión x (ancho de un elemento de módulo individual). El ancho de cada barra (espacio) se determina multiplicando la dimensión x y el ancho del módulo (1, 2, 3 o 4 unidades) de cada barra (espacio). Dado que los patrones de protección incluyen dos barras cada uno, y cada uno de los 12 dígitos del código de barras UPC-A consta de dos barras y dos espacios, todos los códigos de barras UPC-A constan exactamente de (3 × 2) + (12 × 2) = 30 barras, de las cuales 6 representan patrones de protección y 24 representan dígitos numéricos.
La dimensión x del código UPC-A en su tamaño nominal es de 0,33 mm (0,013"). La altura nominal del símbolo del código UPC-A es de 25,9 mm (1,02"). Las barras que forman los patrones de protección S (inicio), M (centro) y E (fin) se extienden hacia abajo 5 veces la dimensión x, con una altura nominal del símbolo resultante de 27,55 mm (1,08"). Esto también se aplica a las barras del primer y último dígito numérico del código de barras UPC-A. El código UPC-A se puede reducir o ampliar en cualquier valor entre el 80 % y el 200 %.
Debe haber una zona tranquila, con un ancho de al menos 9 veces la dimensión x, en cada lado del área escaneable del código de barras UPC-A. [17] [18] Para un número GTIN-12 codificado en un código de barras UPC-A, el primer y el último dígito de la interpretación legible por humanos siempre se colocan fuera del símbolo para indicar las zonas tranquilas que son necesarias para que los lectores de códigos de barras UPC funcionen correctamente.
El código de barras UPC-A se representa visualmente mediante franjas de barras y espacios que codifican el número UPC-A de 12 dígitos. Cada dígito está representado por un patrón único de 2 barras y 2 espacios. Las barras y los espacios tienen un ancho variable, es decir, 1, 2, 3 o 4 módulos de ancho. El ancho total de un dígito es siempre de 7 módulos; en consecuencia, el número UPC-A de 12 dígitos requiere un total de 7×12 = 84 módulos .
Un UPC-A completo tiene 95 módulos de ancho: 84 módulos para los dígitos (secciones L y R) combinados con 11 módulos para los patrones de protección S (inicio), M (medio) y E (fin). Los patrones de protección S (inicio) y E (fin) tienen 3 módulos de ancho y utilizan el patrón barra-espacio-barra , donde cada barra y espacio tiene un módulo de ancho. El patrón de protección M (medio) tiene 5 módulos de ancho y utiliza el patrón espacio-barra-espacio-barra-espacio , donde cada barra y espacio también tiene un módulo de ancho. Además, un símbolo UPC-A requiere una zona silenciosa (espacio adicional de 9 módulos de ancho) antes de los patrones de protección S (inicio) y después de los patrones de protección E (fin).
Los dígitos del lado izquierdo del UPC-A (los dígitos a la izquierda del patrón de protección M (medio)) tienen paridad impar, lo que significa que el ancho total de las barras negras es un número impar de módulos. Por el contrario, los dígitos del lado derecho tienen paridad par. En consecuencia, un escáner UPC puede determinar si está escaneando un símbolo de izquierda a derecha o de derecha a izquierda (el símbolo está al revés). Después de ver un patrón de protección S (inicio) o E (fin) (son lo mismo, barra-espacio-barra , en cualquier dirección en la que se lean), el escáner verá primero dígitos de paridad impar, si se escanea de izquierda a derecha, o dígitos de paridad par, si se escanea de derecha a izquierda. Con la información de paridad/dirección, un símbolo al revés no confundirá al escáner. Cuando se enfrenta a un símbolo al revés, el escáner puede simplemente ignorarlo (muchos escáneres alternan escaneos de izquierda a derecha y de derecha a izquierda, por lo que leerán el símbolo en un pase posterior) o reconocer los dígitos y colocarlos en el orden correcto. Hay otra propiedad en la codificación de dígitos. Los dígitos del lado derecho son el inverso óptico de los dígitos del lado izquierdo, es decir, las barras negras se convierten en espacios blancos y viceversa. Por ejemplo, el lado izquierdo "4" es espacio × 1 - barra × 1 - espacio × 3 - barra × 2 , mientras que el lado derecho "4" es barra × 1 - espacio × 1 - barra × 3 - espacio × 2 .
La cantidad de códigos de barras UPC-A y UPC-E está limitada por los estándares utilizados para crearlos.
A continuación se muestra una descripción de todos los sistemas numéricos posibles con el esquema de numeración UPC-A de 12 dígitos correspondiente L LLLLLRRRRR R , donde L denota el dígito del sistema de numeración y R el dígito de control.
El UPC incluye un dígito de control para detectar errores comunes en la entrada de datos. Por ejemplo, los códigos UPC-A eligen el dígito de control para satisfacer la ecuación del dígito de control :
Si un código ingresado no satisface la ecuación, entonces no es un UPC-A válido.
El dígito de control UPC-A se puede calcular de la siguiente manera:
Por ejemplo, en un código de barras UPC-A "03600029145 x 12 ", donde x 12 es el dígito de control desconocido, x 12 se puede calcular mediante:
Por lo tanto, el dígito de control x 12 es 2.
Se selecciona la ecuación del dígito de verificación para que tenga propiedades de detección de errores razonables (consulte el algoritmo de Luhn ).
UPC en su uso más común técnicamente se refiere a UPC-A.
Existen otras variantes del UPC:
Para permitir el uso de códigos de barras UPC en paquetes más pequeños, donde un código de barras completo de 12 dígitos puede no caber, se desarrolló una versión de UPC con supresión de ceros, llamada UPC-E, en la que el dígito del sistema numérico, todos los ceros finales en el código del fabricante y todos los ceros iniciales en el código del producto, se suprimen (omiten). [23] Esta simbología difiere de UPC-A en que solo usa un código de 6 dígitos, no usa el patrón de protección M (medio) y el patrón de protección E (final) se forma como barra espaciadora-barra espaciadora-barra espaciadora , es decir, el código de barras UPC-E sigue el patrón SDDDDDDE. La forma en que un UPC-E de 6 dígitos se relaciona con un UPC-A de 12 dígitos está determinada por el patrón numérico UPC-E y el patrón de paridad UPC-E. Solo puede corresponder al sistema de numeración UPC-A 0 o 1, cuyo valor, junto con el dígito de control UPC-A, determina el patrón de paridad UPC-E de la codificación. Con los dígitos del código del fabricante representados por M y los dígitos del código del producto por P, entonces:
Por ejemplo, un UPC-E 654321 puede corresponder al UPC-A 065100004327 o 165100004324, dependiendo del patrón de paridad UPC-E de los dígitos codificados, como se describe a continuación:
UPC-E 654321 con patrón de paridad "EOEOEO" (UPC-A 065100004327) se codificaría como
El código de barras se vería así:
El EAN-13 se desarrolló como un superconjunto del UPC-A, agregando un dígito adicional al comienzo de cada número UPC-A. Esto amplió la cantidad de valores únicos teóricamente posibles por diez veces a 1 billón. Los códigos de barras EAN-13 también indican el país en el que se encuentra la empresa que vende el producto (que puede o no ser el mismo que el país en el que se fabrica el producto). Los tres dígitos iniciales del código determinan esto, de acuerdo con los códigos de país GS1 . Cada código UPC-A se puede convertir fácilmente al código EAN-13 equivalente anteponiendo el dígito 0 al código UPC-A. Esto no cambia el dígito de control . Todos los sistemas de punto de venta ahora pueden entender ambos por igual.
EAN-8 es una variación de 8 dígitos del código de barras EAN.
Notas sobre el uso de UPC:
Después de graduarse en Maryland en 1951, George Laurer se unió a IBM como ingeniero junior y fue ascendiendo hasta llegar a ingeniero senior. En 1969, regresó al lado técnico de la ingeniería y más tarde se le asignó la monumental tarea de diseñar un código y un símbolo para la identificación de productos para el Consejo de Códigos Uniformes de Productos de Alimentos. Su solución, el Código Universal de Productos, cambió radicalmente el mundo minorista. Desde entonces, ha mejorado el código agregando un decimotercer dígito.
{{cite web}}
: CS1 maint: nombres numéricos: lista de autores ( enlace )