:: El Monstruillo wARfeando ::

EAN-13

Sigo con otra simbología de los códigos de barras, el EAN-13. Este es el que más nos puede sonar a todos ya que lo podemos encontrar en cualquier comercio. Este es que el cajero o la cajera pasa por el lector cuando vamos a un supermercado.

Esta simbología codifica números de hasta 12 dígitos y es un pelín más complicado que el Code 39 y que el Interleaved 2 of 5 porque requiere un poco más de trabajo.

Un código de barras EAN-13 está dividido en tres partes:

  1. El número de sistema.
  2. El código del fabricante.
  3. El código del producto.
  4. El dígito de control

El número de sistema consiste en dos dígitos (a veces son tres) que identifican la autoridad numeradora del país o de la región económica que le asignó el código del fabricante al fabricante o distribuidor.

00-13: USA & Canada 20-29: In-Store Functions 30-37: France
40-44: Germany 45: Japan (also 49) 46: Russian Federation
471: Taiwan 474: Estonia 475: Latvia
477: Lithuania 479: Sri Lanka 480: Philippines
482: Ukraine 484: Moldova 485: Armenia
486: Georgia 487: Kazakhstan 489: Hong Kong
49: Japan (JAN-13) 50: United Kingdom 520: Greece
528: Lebanon 529: Cyprus 531: Macedonia
535: Malta 539: Ireland 54: Belgium & Luxembourg
560: Portugal 569: Iceland 57: Denmark
590: Poland 594: Romania 599: Hungary
600 & 601: South Africa 609: Mauritius 611: Morocco
613: Algeria 619: Tunisia 622: Egypt
625: Jordan 626: Iran 64: Finland
690-692: China 70: Norway 729: Israel
73: Sweden 740: Guatemala 741: El Salvador
742: Honduras 743: Nicaragua 744: Costa Rica
746: Dominican Republic 750: Mexico 759: Venezuela
76: Switzerland 770: Colombia 773: Uruguay
775: Peru 777: Bolivia 779: Argentina
780: Chile 784: Paraguay 785: Peru
786: Ecuador 789: Brazil 80 - 83: Italy
84: Spain 850: Cuba 858: Slovakia
859: Czech Republic 860: Yugloslavia 869: Turkey
87: Netherlands 880: South Korea 885: Thailand
888: Singapore 890: India 893: Vietnam
899: Indonesia 90 & 91: Austria 93: Australia
94: New Zealand 955: Malaysia 977: International Standard Serial Number for Periodicals (ISSN)
978: International Standard Book Numbering (ISBN) 979: International Standard Music Number (ISMN) 980: Refund receipts
981 & 982: Common Currency Coupons 99: Coupons

El código de fabricante es un código único asignado a un fabricante por la autoridad numeradora del país o de la región económica. Todos los productos creados por este fabricante deben usar el mismo código de fabricante.
EAN-13 usa códigos de fabricante de longitud variable, por lo general la longitud del código de fabricante que se le asigne a una empresa dependerá de la cantidad de clases productos que fabrique y de la estimación de nuevas clases de productos que pueda fabricar. Esto significa que, si un fabricante de un país donde el número de sistema tiene dos dígitos tiene un código de fabricante de 5 dígitos, puede tener hasta 100.000 clases de productos diferentes (del 0 al 99.999).

El código de producto es un código úncico asignado por el fabricante, como la autoridad numeradora ya ha dado un código de fabricante único se garantiza que el símbolo creado será también único. En este caso, el fabricante es el encargado de que no se dupliquen los códigos de productos.

El dígito de control es un dígito adicional (que una vez calculado se añade al final del número que queremos codificar, creando un número final de 13 dígitos) usado para verificar que el código de barras ha sido escaneado correctamente. El método para calcular el dígito de control es el siguiente:

  1. Si el número a codificar no tiene 12 dígitos se añaden ceros a la izquierda hasta tener los 12 dígitos.
  2. Ahora consideramos que el primer dígito está en una posición “par” y se asignan posiciones “impar” y “par” alternativamente a los demás dígitos de izquierda a la derecha.
  3. Se suman todos los dígitos en posición “impar” y se multiplican por 3.
  4. Se suman todos los dígitos en posición “par”.
  5. Se suman los resultados de (3) y (4).
  6. El dígito de control es la diferencia positiva entre el resultado de (5) y el número divisible entre 10 inmediatamente superior al resultado de (5). Si el resultado de (5) ya es divisible entre 10, entonces el dígito de control es 0, no 10.

Un ejemplo clarificador, el número 490178019073 (el de una caja de disquetes que tengo sobre la mesa):

  • Se suman las posiciones “impares” y se multiplican por 3: 9+1+8+1+0+3=22 22×3=66
  • Se suman las posiciones “pares”: 4+0+7+0+9+7=27
  • Se suman los totales 66+27=93
  • Se busca el número inmediatemente superior a 93 divisible entre 10 y se le resta 93: 100-93=7
  • Por lo que 7 es el dígito de control y ya tenemos el número a codificar: 4901780190737

Una vez que tenemos el número de 13 dígitos, ya podemos crear su símbolo.

Un símbolo EAN-13 tiene la estructura física siguiente:

  • Marca de inicio, codificada como: 101
  • Segundo dígito del número de sistema.
  • Los 5 siguientes dígitos del número a codificar (puede ser el código de fabricante si este tiene 5 dígitos).
  • Marca central, codificada como: 01010
  • Los 6 dígitos restantes del número a codificar, incluido el dígito de control.
  • Marca de final, codificada como 101

Antes de continuar es necesario hacer saber que hay diferencias de codificación entre los dígitos de la izquierda de la marca central y los dígitos de la derecha de dicha marca. En la parte izquierda hay dos tipos de codificación, dos paridades “par” e “impar”, esto es así porque el primer dígito del número de sistema se codifica en la paridad de los últimos 5 dígitos de la parte izquierda.

DIGITO Cod. Izquierda IMPAR Cod. IzquierdaPAR Cod. DerechaTODOS
0 0001101 0100111 1110010
1 0011001 0110011 1100110
2 0010011 0011011 1101100
3 0111101 0100001 1000010
4 0100011 0011101 1011100
5 0110001 0111001 1001110
6 0101111 0000101 1010000
7 0111011 0010001 1000100
8 0110111 0001001 1001000
9 0001011 0010111 1110100
Num. Sist1er Dig Num. Sist2o Dig 1 2 3 4 5
0 Impar Impar Impar Impar Impar Impar
1 Impar Impar Par Impar Par Par
2 Impar Impar Par Par Impar Par
3 Impar Impar Par Par Par Impar
4 Impar Par Impar Impar Par Par
5 Impar Oar Par Impar Impar Par
6 Impar Par Par Par Impar Impar
7 Impar Par Impar Par Impar Par
8 Impar Par Impar Par Par Impar
9 Impar Par Par Impar Par Impar

Ahora voy con un ejemplo de codificación, el número de antes era 4901780190737., pues voy a por él:

  1. Paridad con la que codificar el primer dígito del número de sistema (P: par, I: impar): 4 –> PIIPP
  2. Marca de inicio: 101
  3. Segundo dítigo del número de sistema, siempre con paridad impar, no lo indica el primer dígito: 9 –> 0001011
  4. Primer dígito de los 5 restantes de la parte izquierda, paridad par: 0 –> 0100111
  5. Segundo, paridad impar: 1 –> 0011001
  6. Tercero, paridad impar: 7 –> 0111011
  7. Cuarto, paridad par: 8 –> 0001001
  8. Quinto, paridad par: 0 –> 0100111
  9. Marca central: 01010
  10. Primer dígito de la parte derecha, solo tienen una paridad: 1 –> 1100110
  11. Segundo: 9 –> 1110100
  12. Tercero: 0 –> 1110010
  13. Cuarto: 7 –> 1000100
  14. Quinto: 3 –> 1000010
  15. Sexto (dígito de control): 7 –> 1000100
  16. Marca de final: 101

Y con esto ya tenemos el código para 4901780190737:

10100010110100111001100101110110001001010011101010110011011101001110010100010010000101000100101

Y aquí el código de barras en cuestión.

ean13

Ales, otro día más…

This entry (Permalink) was posted on Friday, October 27th, 2006 at 8:27 and is filed under Códigos de Barras. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response , or trackback from your own site.

3 Responses to “EAN-13”

  1. meneame.net Says:

    Códigos de Barras: EAN-13…

    Cuarto artículo sobre códigos de barras. Este trata sobre codificación de EAN-13, uno de los más populares ya que te lo encuentras en todos los artículos que se comercializan de cualquier manera. Ale a disfrutar…

  2. Jordi Fabregat Says:

    Necesito saber como convertir una cadena de caracteres en el codigo data matrix o el codigo pdf417. Necesito ayuda urgente ya que tenemos terminado el programa para una empresa y tenemo que añadir este codigo en los albaranes.

  3. monstruillo Says:

    Buenas Jordi,
    aún no me he visto en la necesidad de crear nada que cree este tipo de símbolos. Desgraciadamente tampoco tengo un lector de códigos de barras aquí capaz de leer ninguno de las dos simbologías que me comentas, así que no podría asegurar que algún algoritmo que traduzca una cadena de carácteres a una simbología de las que me has dicho funcione correctamente, pero quizá estos links te puedan ser de ayuda:

    Datamatrix

    PDF417

    Espero que te sean de ayuda.

Leave a Reply

You must be logged in to post a comment.