범용 상품 부호
1. 개요
범용 상품 부호(UPC)는 상품에 부착되어 상품을 식별하는 데 사용되는 바코드 형식이다. 1970년대에 개발되어 소매업에서 널리 사용되었으며, 다양한 종류가 존재한다. UPC-A는 가장 일반적인 형태로 12자리 숫자로 구성되며, 상품의 제조업체 코드와 제품 코드를 포함한다. UPC-E는 UPC-A의 축약형으로 6자리 코드를 사용하며, UPC-2와 UPC-5는 각각 잡지 판과 권장 소매 가격을 나타내는 보조 코드이다. UPC는 검사 숫자를 사용하여 데이터 입력 오류를 감지하며, EAN-13은 UPC-A의 상위 집합으로, 국가 코드를 포함한다.
이미지 준비중입니다.
| 종류 | 바코드 |
|---|---|
| 개발 시기 | 1973년 |
| 개발자 | 조지 J. 로러 |
| 사용 분야 | 소매 |
|---|---|
| 표준 | GS1 |
| 자릿수 | 고정 길이, 숫자 전용 (UPC-A: 12자리, UPC-E: 6자리) |
| 장점 | 빠른 스캔 속도 높은 정확도 재고 관리 효율성 증대 |
|---|---|
| 단점 | 제한된 정보량 바코드 손상 시 인식 불가 |
| UPC-A | 12자리 숫자 가장 일반적인 형태 |
|---|---|
| UPC-E | 6자리 숫자 UPC-A의 축소 버전 작은 상품에 적합 |
| UPC-2 | 2자리 추가 코드 정기 간행물 등에 사용 |
| UPC-5 | 5자리 추가 코드 서적 등에 사용 |
| EAN | EAN (European Article Number) |
|---|---|
| QR 코드 | QR 코드 (Quick Response Code) |
-
제품 분류 -
스톡 키핑 유닛
스톡 키핑 유닛(SKU)은 상품의 특징을 나타내는 문자와 숫자의 조합으로, 최소 재고 관리 단위이며, 재고 관리, 판매 분석, 물류 관리에 활용된다. -
바코드 -
QR 코드
QR 코드는 1994년 일본 덴소 웨이브가 개발한 2차원 바코드로, 기존 바코드보다 많은 정보를 저장하고 오류 정정 기능이 있으며, 자동차 부품 관리에서 시작하여 다양한 분야에서 활용되지만 악성 QR 코드에 의한 피해에도 주의해야 한다. -
바코드 -
코드 39
코드 39는 9개의 요소로 구성된 바와 스페이스 조합으로 문자를 표현하는 바코드 형식으로, 스캔이 용이하고 신뢰성이 높지만 코드 길이가 길어 고밀도 정보 표현에는 부적합하며, 표준 방식과 풀 ASCII 방식으로 나뉜다. -
공급망 관리 -
애플리케이션 서비스 제공자
애플리케이션 서비스 제공자(ASP)는 네트워크를 통해 애플리케이션 소프트웨어를 호스팅하고 사용자에게 제공하는 사업 모델로, 사용자는 소프트웨어를 직접 구매하거나 설치할 필요 없이 요금을 지불하고 사용하며, ASP는 애플리케이션 및 서버를 관리하여 최신 기술 지원을 제공한다. -
공급망 관리 -
창고 관리 시스템
창고 관리 시스템(WMS)은 창고 내 재고 및 자재 관리를 위한 소프트웨어로, IoT, AI 등의 기술 통합을 통해 실시간 가시성, 자동화 기능을 제공하며, ERP, SCM 등과 통합되어 공급망 효율성을 높이고 영구 라이선스에서 SaaS 모델로 전환되는 추세이다.
2. 역사
1932년 월리스 플린트가 천공 카드를 이용한 자동 계산대 시스템을 제안했다. 1949년 버나드 실버와 노먼 조셉 우드랜드는 과녁 스타일 코드를 개발하고 특허를 출원했다.
1960년대와 1970년대 초, 북미 철도에서는 다색 바코드를 사용한 철도 차량 추적 시스템을 실험했지만, 이 시스템은 폐기되고 자동 장비 식별(AEI) 시스템으로 대체되었다.
1973년, 식료품 업계의 여러 무역 협회가 통일 상품 코드 협의회(UPCC)를 결성하여 맥킨지 앤 컴퍼니의 래리 러셀과 톰 윌슨의 도움을 받아 통일 상품 코드(UPC)의 숫자 형식의 기초를 정의했다. 여러 기술 회사들이 협의회에 기호 표현에 대한 대안을 제시했고, 기호 선택 위원회는 조지 J. 로러가 설계한 IBM 제안을 구현하기로 결정했다. 다만, 사람이 읽을 수 있는 영역의 글꼴은 약간 수정되었다.
1974년 6월 26일, 오하이오주 트로이의 마쉬 슈퍼마켓에서 최초로 UPC 코드가 부착된 리글리 주시 후르츠 껌 10개 묶음(50개)이 스캔되었다. NCR 금전 등록기는 67센트를 기록했다. 이 껌 포장지의 복제품은 워싱턴 D.C.의 스미소니언 협회 국립 미국사 박물관에 전시되었다.
머레이 에덴은 UPC 바코드 개발팀의 컨설턴트로 참여하여 기호 선택 및 글꼴 결정에 기여했으며, 바코드 리더가 제대로 작동하지 않을 경우를 대비하여 숫자를 아래쪽에 추가하는 아이디어를 냈다.
2.1. IBM의 UPC 개발
1969년 말, 노스캐롤라이나주 리서치 트라이앵글 파크(RTP)의 IBM은 조지 로러에게 슈퍼마켓 스캐너와 라벨 개발을 지시했다. 1970년 말, 허드 바이스터는 IBM 바코드인 델타 B의 문제점(잉크 번짐)을 제시했다.
1971년 중반, 윌리엄 "빌" 크루스는 델타 C라는 새로운 바코드를 발명했다. 델타 C는 잉크 번짐의 영향을 받지 않고, 선의 앞쪽 또는 뒤쪽 가장자리만 사용하여 더 높은 성능을 냈다.
1972년 봄, 바이스터는 한 번의 스캔으로 읽을 수 있는, 모든 막대 너비보다 약간 더 긴 막대가 있는 라벨을 제안했다. 다음날 라벨을 두 부분으로 나누어 막대 길이를 절반으로 줄일 수 있다고 제안했다.
로러는 라벨 세부 사항을 정의하고 제안서를 작성했으며, N.J. 우드랜드가 프로젝트 기획자로 참여했다. 로러의 초기 바코드는 델타 B였으나 라벨 크기가 너무 컸다. 크루스는 델타 C 바코드 사용을 제안하여 라벨 크기를 줄였다.
로러는 크루스에게 스캐너의 라벨 감지 방법에 대한 도움을 요청했다. 그들은 가드 바와 라벨 감지 방법을 정의했고, 가드 바는 반쪽 라벨 식별과 스캐너 임계 회로 학습에도 사용되었다.
1972년 12월 1일, IBM은 미네소타주 로체스터에서 로러의 제안서를 슈퍼마켓 위원회에 제출했다. 크루스는 UPC와 유사한 라벨을 반지 완드로 읽는 실험실 시연을 통해 델타 C 코드의 견고성을 입증했다.
1973년 1월 1일, 크루스는 IBM 고급 기술 그룹으로 복귀하고, 로러는 라벨 책임을 맡았다. 다이모 코퍼레이션의 제안(코드의 문자 독립성)을 IBM 제안에 통합했다.
라벨의 두 부분은 서로 다른 숫자 문자 집합을 사용하기로 결정되었다. 로러는 델타 C 특허 기반 문자 집합을 사용하고, 각 쌍의 막대 너비를 측정하여 문자를 구별했다.
수학자 데이비드 사비르는 심볼의 인쇄 가능성과 신뢰성을 증명하고, 오류 감지 및 수정을 위해 두 자릿수를 추가했다. 홀수/짝수 패리티를 추가하여 스캔 방향 판별 및 오류 감지 능력을 향상시켰다.
다음은 1970년대 초 사용 가능한 적절한 크기의 라벨 표이다.
| 라벨 유형 | 라벨 치수 | 면적 |
|---|---|---|
| 불스아이(모스 부호) | 큼 | 큼 |
| 불스아이(델타 B) | ||
| 불스아이(델타 A) | ||
| 바이스터 1차(델타 B) | ||
| 바이스터 2 절반(델타 B) | ||
| 바이스터 2 절반(델타 A) | ||
| 바이스터(델타 C) |
3. 구성
UPC-A 바코드는 12자리 숫자 시퀀스와 검은색 막대 및 흰색 공간의 스캔 가능한 스트립으로 구성된다. 스캔 가능한 영역은 SLLLLLLMRRRRRRE 패턴을 따르는데, 여기서 S(시작), M(중간), E(종료)는 가드 패턴이고, L(왼쪽)과 R(오른쪽)은 숫자 섹션이다. 첫 번째 숫자 L은 숫자 시스템을 나타내고, 마지막 숫자 R은 오류 감지 검사 숫자이다. 가드 패턴은 6개의 숫자 그룹을 분리하고 타이밍을 설정한다.
막대 및 공간 패턴은 0~9까지 다음과 같이 이루어져 있다.
| 숫자 | L 패턴 | R 패턴 | 길이 |
|---|---|---|---|
| 0 | 0001101 | 1110010 | 3211 |
| 1 | 0011001 | 1100110 | 2221 |
| 2 | 0010011 | 1101100 | 2122 |
| 3 | 0111101 | 1000010 | 1411 |
| 4 | 0100011 | 1011100 | 1132 |
| 5 | 0110001 | 1001110 | 1231 |
| 6 | 0101111 | 1010000 | 1114 |
| 7 | 0111011 | 1000100 | 1312 |
| 8 | 0110111 | 1001000 | 1213 |
| 9 | 0001011 | 1110100 | 3112 |
UPC-A의 x-dimension(단일 모듈 요소의 너비)은 표준 크기에서 0.33mm이다. UPC-A의 표준 심볼 높이는 25.9mm이며, 가드 패턴 막대는 x-dimension의 5배만큼 아래로 연장되어 27.55mm가 된다. UPC-A는 80%에서 200% 사이로 축소하거나 확대할 수 있다. UPC-A 바코드의 각 측면에는 x-dimension의 9배 이상 너비의 여백 영역이 필요하다.
4. 인코딩
UPC-A 바코드는 12자리 숫자를 시각적으로 표현하며, 각 숫자는 2개의 바와 2개의 공간으로 구성된 고유한 패턴으로 나타낸다. 바와 공간은 1, 2, 3 또는 4 모듈 너비를 가진다. 각 숫자 표현의 총 너비는 항상 7개 모듈이므로, UPC-A 12자리 숫자는 총 84개 모듈(7 * 12)이 필요하다.
완전한 UPC-A는 가드 패턴을 포함하여 총 95개 모듈 너비이다. 가드 패턴은 시작(S), 중간(M), 종료(E)에 위치하며, 각각 3개, 5개, 3개 모듈 너비이다. 시작과 종료 가드 패턴은 '바-공간-바' 패턴(각 1 모듈 너비)을 사용하고, 중간 가드 패턴은 '공간-바-공간-바-공간' 패턴(각 1 모듈 너비)을 사용한다. UPC-A 기호는 시작과 종료 가드 패턴 앞뒤에 9개 모듈 너비의 여유 공간이 필요하다.
다음 표는 숫자 0~9의 L 패턴과 R 패턴을 나타낸다.
| 숫자 | L 패턴 | R 패턴 | 길이 |
|---|---|---|---|
| 0 | 0001101 | 1110010 | 3211 |
| 1 | 0011001 | 1100110 | 2221 |
| 2 | 0010011 | 1101100 | 2122 |
| 3 | 0111101 | 1000010 | 1411 |
| 4 | 0100011 | 1011100 | 1132 |
| 5 | 0110001 | 1001110 | 1231 |
| 6 | 0101111 | 1010000 | 1114 |
| 7 | 0111011 | 1000100 | 1312 |
| 8 | 0110111 | 1001000 | 1213 |
| 9 | 0001011 | 1110100 | 3112 |
UPC-A의 왼쪽 숫자(중간 가드 패턴 왼쪽)는 홀수 패리티를 갖는다. 즉, 검은색 바의 총 너비가 홀수 개의 모듈이다. 오른쪽 숫자는 짝수 패리티를 가지므로, 검은색 바의 총 너비가 짝수 개의 모듈이다. 이 패리티 차이 덕분에 스캐너는 스캔 방향(왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽)을 판별할 수 있다.
또한, 오른쪽 숫자는 왼쪽 숫자의 광학적 반전이다. 예를 들어, 왼쪽 숫자 "4"는 '공간×1 - 바×1 - 공간×3 - 바×2' 패턴인 반면, 오른쪽 숫자 "4"는 '바×1 - 공간×1 - 바×3 - 공간×2' 패턴이다.
| 여유 공간 | S (시작) | L (왼쪽 숫자) | M (중간) | R (오른쪽 숫자) | E (종료) | 여유 공간 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |||||
| -- | -- |
5. 숫자 체계
UPC-A 및 UPC-E 바코드의 수는 바코드 생성에 사용된 표준에 의해 제한된다.
* UPC-A: 106 × 105 = 100,000,000,000
* UPC-E: 106 × 2 = 2,000,000
6. 검사 숫자 계산
UPC는 데이터 입력 오류를 감지하기 위해 검사 숫자(마지막 자릿수)를 포함한다. 검사 숫자 방정식은 다음과 같다.
:(3x₁ + x₂ + 3x₃ + x₄ + 3x₅ + x₆ + 3x₇ + x₈ + 3x₉ + x₁₀ + 3x₁₁ + x₁₂) ≡ 0 (mod 10)
UPC-A 검사 숫자는 다음과 같이 계산할 수 있다.
1. 홀수 위치(첫 번째, 세 번째, 다섯 번째, ..., 열한 번째)의 숫자를 더한다.
2. 그 결과에 3을 곱한다.
3. 짝수 위치(두 번째, 네 번째, 여섯 번째, ..., 열 번째)의 숫자 합을 결과에 더한다.
4. 그 결과를 모듈로 10 (즉, 10으로 나눈 나머지)을 구하고, 이를 M이라고 부른다.
5. 만약 M이 0이면, 검사 숫자는 0이다. 그렇지 않으면 검사 숫자는 10 - M이다.
예를 들어, UPC-A 바코드 "03600029145x12"에서, x12는 알 수 없는 검사 숫자이고, 다음과 같이 계산할 수 있다.
1. 홀수 위치의 숫자를 더한다(0 + 6 + 0 + 2 + 1 + 5 = 14).
2. 결과에 3을 곱한다(14 × 3 = 42).
3. 짝수 위치의 숫자를 더한다(42 + (3 + 0 + 0 + 9 + 4) = 58).
4. 결과를 모듈로 10으로 구한다(58 mod 10 = 8 = M).
5. M이 0이 아니면, 10에서 M을 뺍니다(10 - 8 = 2).
따라서 검사 숫자 x12는 2이다.
UPC-A는 다음과 같은 오류 검출 능력을 가지고 있다.
* 단일 숫자 오류의 100%를 감지한다.
* 자리수 전위 오류의 약 89%를 감지한다. 구체적으로, 두 인접한 숫자의 차이가 5인 경우에만 UPC-A는 자리수 전위를 감지할 수 없다.
다음은 UPC-A 바코드의 d-전위 표이며,
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 0 | 0 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 |
| 2 | 1 1 | 1 2 | 1 3 | 1 4 | 1 5 | 1 6 | 1 7 | 1 8 | 1 9 | |
| 3 | 2 2 | 2 3 | 2 4 | 2 5 | 2 6 | 2 7 | 2 8 | 2 9 | ||
| 4 | 3 3 | 3 4 | 3 5 | 3 6 | 3 7 | 3 8 | 3 9 | |||
| 5 | 4 4 | 4 5 | 4 6 | 4 7 | 4 8 | 4 9 | ||||
| 6 | 5 5 | 5 6 | 5 7 | 5 8 | 5 9 | |||||
| 7 | 6 6 | 6 7 | 6 8 | 6 9 | ||||||
| 8 | 7 7 | 7 8 | 7 9 | |||||||
| 9 | 8 8 | 8 9 | ||||||||
| 10 | 9 9 | |||||||||
| 합계 | 10 | 18 | 16 | 14 | 12 | 10 | 8 | 6 | 4 | 2 |
7. 종류 (Variations)
UPC는 일반적으로 UPC-A를 지칭하지만, 그 밖에도 다양한 종류가 있다.
* UPC-B: 국가 약제 등에 쓰이는 12자리 버전으로, 검사 기호가 없다.
* UPC-C: 검사 기호가 있는 12자리 버전이다.
* UPC-D: 12자리 이상의 가변 길이 부호로, 12번째 자리가 검사 기호이다.
* UPC-E: 6자리 코드이다.
* UPC-2: 잡지나 정기간행물의 판을 나타내기 위해 사용되는 2자리 보조 코드이다.
* UPC-5: 책의 권장 소매 가격을 나타내기 위해 사용되는 5자리 보조 코드이다.
7.2. UPC-B
UPC-B는 전국 의약품 코드(NDC) 및 전국 보건 관련 품목 코드를 위해 개발된 검사 숫자가 없는 12자리 UPC 버전이다. 11자리 숫자와 1자리 제품 코드로 구성되어 있으며, 일반적으로 사용되지 않는다.
7.5. UPC-E
UPC-E는 6자리 코드이며, 숫자 시스템 0 또는 1을 사용하는 UPC-A 12자리 코드와 동일하다. 0 억제 방식을 사용하여 코드를 축소한다. UPC-E는 UPC-A 숫자 시스템 0 또는 1에만 해당되며, 숫자 패턴과 패리티 패턴에 따라 UPC-A 코드로 변환된다.
더 작은 포장재에 UPC 바코드를 사용할 수 있도록, 12자리 바코드가 맞지 않는 경우를 위해 UPC의 0 억제 버전인 UPC-E가 개발되었다. 숫자 시스템 숫자, 제조업체 코드의 모든 후행 0 및 제품 코드의 모든 선행 0이 억제(생략)된다. UPC-E는 6자리 코드만 사용하고, 중간 가드 패턴을 사용하지 않으며, 끝 가드 패턴이 공백-바-공백-바-공백-바로 형성된다는 점에서 UPC-A와 다르다. UPC-E 바코드는 SDDDDDDE 패턴을 따른다. 6자리 UPC-E가 12자리 UPC-A와 관련되는 방식은 UPC-E 숫자 패턴과 UPC-E 패리티 패턴에 의해 결정된다. UPC-A 숫자 시스템 0 또는 1에만 해당될 수 있으며, 그 값은 UPC-A 검사 숫자와 함께 인코딩의 UPC-E 패리티 패턴을 결정한다. 제조업체 코드 숫자는 M으로, 제품 코드 숫자는 P로 표시하면 다음과 같다.
| 마지막 UPC-E 숫자 | UPC-E 숫자 패턴 | UPC-A 해당 값 | 사용 가능한 제품 번호 |
|---|---|---|---|
| 0 | MMPPP0 | 0 또는 1 + MM000-00PPP + 검사 숫자 | PPP = 000-999 |
| 1 | MMPPP1 | 0 또는 1 + MM100-00PPP + 검사 숫자 | PPP = 000-999 |
| 2 | MMPPP2 | 0 또는 1 + MM200-00PPP + 검사 숫자 | PPP = 000-999 |
| 3 | MMMPP3 | 0 또는 1 + MMM00-000PP + 검사 숫자 | PP = 00-99 |
| 4 | MMMMP4 | 0 또는 1 + MMMM0-0000P + 검사 숫자 | P = 0-9 |
| 5 | MMMMM5 | 0 또는 1 + MMMMM-00005 + 검사 숫자 | 5 = P |
| 6 | MMMMM6 | 0 또는 1 + MMMMM-00006 + 검사 숫자 | 6 = P |
| 7 | MMMMM7 | 0 또는 1 + MMMMM-00007 + 검사 숫자 | 7 = P |
| 8 | MMMMM8 | 0 또는 1 + MMMMM-00008 + 검사 숫자 | 8 = P |
| 9 | MMMMM9 | 0 또는 1 + MMMMM-00009 + 검사 숫자 | 9 = P |
예를 들어, UPC-E 654321은 인코딩된 숫자의 UPC-E 패리티 패턴에 따라 UPC-A 065100004327 또는 165100004324에 해당할 수 있다.
| UPC-A 검사 숫자 | UPC-E의 UPC-A에 대한 패리티 패턴 |
|---|---|
| 0 | EEEOOO |
| 1 | EEOEOO |
| 2 | EEOOEO |
| 3 | EEOOOE |
| 4 | EOEEOO |
| 5 | EOOEEO |
| 6 | EOOOEE |
| 7 | EOEOEO |
| 8 | EOEOOE |
| 9 | EOOEOE |
"EOEOEO" 패리티 패턴(UPC-A 065100004327)을 가진 UPC-E 654321은 다음과 같이 표현할 수 있다.
:1-1-1 4-1-1-1 1-2-3-1 2-3-1-1 1-4-1-1 2-2-1-2 2-2-2-1 1-1-1-1-1-1.
UPC-E 654321의 바코드는 다음과 같다.
7.8. EAN-13
EAN-13은 UPC-A의 상위 집합으로 개발되어 모든 UPC-A 번호 앞에 추가 자릿수를 더했다. 이를 통해 고유한 값의 수를 10배 증가시켜 이론적으로 1조 개까지 가능하게 했다. EAN-13 바코드는 제품을 판매하는 회사가 기반을 둔 국가를 나타내는데(제품이 제조된 국가와 동일하지 않을 수도 있다), 코드의 처음 세 자리는 GS1 국가 코드에 따라 결정된다. 모든 UPC-A 코드는 UPC-A 코드 앞에 0 자릿수를 추가하여 해당 EAN-13 코드로 쉽게 변환할 수 있으며, 이는 체크 숫자를 변경하지 않는다. 현재 모든 POS(판매 시점 관리) 시스템은 둘 다 똑같이 이해할 수 있다.
EAN-8은 EAN 바코드의 8자리 변형이다.