ISBN_Barcode_Image_Recognition (rev. 1.15)
- Image로 부터 ISBN 스캔라인 추출, 해석
- 구글 안드로이드에서 동작
2. 1D Barcode Image Recognition ¶
2.1. Symbology ¶
- 1차원 바코드 인식을 하기 위해서는 해당 바코드의 심볼로지를 이해해야 한다.
- 심볼로지란, 바코드를 표시하는 방법을 정한 규칙이다. 이 규칙이 존재해야 해당 바코드를 생성하거나 읽을 수 있다.
2.1.1. Bar and Space ¶
- Bar는 바코드의 검은 부분, Space는 흰 부분이며, 각각 Black, White라고 표현하기도 한다.
- 가장 좁은 Bar 혹은 가장 좁은 Space(의 폭 길이)를 의미한다.
- 바코드를 보다 쉽게 인식하기 위해, 바코드 좌우로 X-dimension의 10배의 Space가 존재한다.
- 바코드를 잘못 인식하는 경우를 방지하기 위해. 실제 데이터로부터 생성되는 데이터가 있을 수 있다.
- 가장 두꺼운 Bar 혹은 Space의 폭 길이는 X-dimension의 4배이다.
- EAN-13의 Check Digit는 마지막 한 자리이며, 나머지 12자리로 부터 생성된다.
- 각 12자리 숫자에 가중치를 곱하여 다 합하고, 합한 값을 10으로 나눈 나머지를 10에서 빼면 Check Digit가 나온다.
- 가중치는 1, 3, 이 반복되는 패턴이다. 첫 번째 자리 숫자에 1을 곱하고, ... , 열두 번째 자리 숫자에 3을 곱한다.
# Python
def generate_isbn_check_digit(numbers): # Suppose that len(numbers)=12 and 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