본문 바로가기

컴퓨터/기타

도서 바코드 인식기 프로그램 제작 (2)

반응형

앞서서 도서 바코드가 어떤 식으로 인코딩이 되어 있는지를 살펴보았다. 이번에는 앞선 내용을 통해서 도서 바코드를 디코딩해서 우리가 원하는 정보를 가져오는 방법에 대해서 살펴보도록 하겠다.


도서 바코드의 경우에는 첫 시작이 9이기 때문에 따로 이 숫자를 인식을 해줄 필요는 없었다. 만약 도서의 첫 시작 번호를 몰랐다면 숫자를 인식할 필요가 있는데, 그 이유는 도서 바코드에 사용하는 EAN-13이 맨 앞자리에 따라서 인코딩 방법이 달라지기 때문이다. (아무리 생각을 해보더라도 왜 앞자리에 따라서 인코딩 방법을 다르게 했는지 이해가 가지 않는다.... 그냥 바코드에 줄을 더 추가해서 맨 앞자리를 표현을 해주면 될텐데 말이다.)


처음에는 C++로 구현을 하려고 했으나, 그냥 구현하는 것이 약간 귀찮아서 그냥 Java를 이용해서 구현하였다. 물론 핵심 알고리즘은 똑같기 때문에 금방 C++로 변환이 가능하기도 하다.


구현 방법을 하기에 앞서 데이터를 이미 0과 1로 변환했다고 가정을 하였다. 물론 이것을 카메라로 찍어서 인식을 시키게 하려면 좀 더 복잡한 알고리즘이 들어가기 때문에 일단은 문제를 간단하게 하기 위해서 위와 같은 가정을 사용하였다.

이 데이터를 문자열 형태로 받은 다음에, 도서의 경우에 첫 시작 숫자가 9이기 때문에 LGGLGLRRRRRR으로 디코딩이 되어 있다는 사실을 토대로 해서 각각의 데이터를 L, G, R의 값에 맞게 디코딩을 하였고, 마지막으로는 그 디코딩한 데이터와 맨 앞자리 숫자인 '9'를 결합한 결과를 반환하는 형태로 디코딩함수를 구현하였다.


Source Code


다음 번에는 바코드 사진을 가져와서 바이너리 데이터로 변환하는 내용을 구현할 예정이다.


반응형