2.1. Symbology ¶
- 1차원 바코드 인식을 하기 위해서는 해당 바코드의 심볼로지를 이해해야 한다.
- 심볼로지란, 바코드를 표시하는 방법을 정한 규칙이다. 이 규칙이 존재해야 해당 바코드를 생성하거나 읽을 수 있다.
2.2. EAN-13 Symbology ¶
- EAN-13은 13자리 숫자(Check Digit 포함)로 생성하거나 해석할 수 있는 바코드이다.
- EAN-13의 심볼로지에 대해 잘 설명되어 있는 페이지(영문) : http://www.barcodeisland.com/ean13.phtml
2.2.2. Check Digit ¶
- EAN-13의 Check Digit는 마지막 한 자리이며, 나머지 12자리로 부터 생성된다.
- 각 12자리 숫자에 가중치를 곱하여 다 합하고, 합한 값을 10으로 나눈 나머지를 10에서 빼면 Check Digit가 나온다.
- 가중치는 1, 3, 이 반복되는 패턴이다. 첫 번째 자리 숫자에 1을 곱하고, ... , 열두 번째 자리 숫자에 3을 곱한다.
- 가중치는 1, 3, 이 반복되는 패턴이다. 첫 번째 자리 숫자에 1을 곱하고, ... , 열두 번째 자리 숫자에 3을 곱한다.
# Python def generate_isbn_check_digit(numbers): # Suppose that 'numbers' is 12-digit numeric string sum = 0; for i, number in enumerate(numbers): if i%2 == 0: sum += int(number) * 1 else: sum += int(number) * 3 return 10 - sum % 10
2.2.3.2. Character ¶
- 0은 space, 1은 bar를 의미한다.
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
3.1.1. Planar and Packed ¶
- Packed는 Y, U, V의 데이터 영역이 분리되지 않은 포맷이다.
- Planar는 Y, U, V의 데이터 영역이 분리된 포맷이다.