QR Code(2차원 바코드) 생성하고 읽어보기

회사일로 2차원 바코드에 대해서 이것저것 점검해 보다가 마침 블로그 포스팅도 뜸하고 해서 정리도 할 겸 글을 써봅니다.

QR Code 에 대한 자세한 내용은 http://en.wikipedia.org/wiki/QR_Code 를 참고하시고, QR Code 란 흔히 말하는 2차원 바코드입니다.

일본에서는 여기저기 잘 활용되고 있고, 구글에서도 AdSense 에 적용해서 신문광고에 써먹는 모양입니다만 우리나라에서는 아직까지는 '말아먹은' 상태입니다.

JISC- Japanese Industrial Standards Committee 에 가셔서 JIS-X-0510 의 spec을 찾아볼 수도 있습니다.


아무튼 이 QR Code 는

Numeric Only : Max 7,089 characters
Alphanumeric : Max 4,296 characters
Binary(8bit) : Max 2,953 characters

만큼의 데이터를 담을 수 있어 일반적인 바코드보다 데이터 저장 용량이 크고 왜곡에 대해서도 강한 특징이 있습니다.


우선 서버에서 1) QR Code를 생성할 수 있어야 하고,  2) 사용자가 업로드한 QR Code 이미지로부터 데이터를 추출할 수 있어야 합니다.

About 2D Code QR Code.com 이 링크를 통해 들어가면 QR 저작툴 두개를 다운로드 받을 수 있는데 Trial 이니 Pro 니 하는걸로 봐서 돈주고 사야하는듯 하고 라이브러리가 아닌 사용자용 제품인 관계로 패스~

뒤지다 보니 http://qrcode.kaywa.com/ 라는 사이트에서 입력값으로 QR Code 이미지를 출력해줍니다. 가입절치 등도 없고 단순히  QR Code 의 이미지 사이즈를 선택하고(S/M/L/XL) URL/Text/Phone Number/SMS 중 하나를 선택한 다음 Generate! 를 누르면 QR Code 이미지가 생성됩니다.

아래의 QR Code 는

RSS URL : http://www.potatosoft.com/tt/rss

라는 문구를 입력하여 만든 QR Code입니다.

qrcode

permlink 를 제공해 주길래 봤더니

http://qrcode.kaywa.com/img.php?s=8&d=Hello%20World

이런 식이네요. 앞으로 QR code 만들때 유용하게 써먹을 수 있을 것 같습니다. ( 그나저나 iPhone 은 언제나와 ㅜ.ㅜ )

몇몇 국내 보급된 휴대폰이 이 QR Code 를 읽을 수 있는 듯 하지만 국내 보급률이 그렇게 높지 않아서 아마 갖고 계신 분이 거의 없을테고, 혹시라도 iPhone 을 쓰시는 분이라면 iMatrix 같은 것들이 나와있기 때문에 곧바로 메세지를 읽어보실 수 있겠군요. ( iPod Touch 는 카메라가 없어서 /애도 )


어쨌든 이미지를 만들었기 때문에 이걸 읽어봐야 할텐데... -_-;; NTT Docomo 에서 QR Factory (http://www.nttdocomo.co.jp/english/service/imode/make/content/barcode/tool/) 라는 QR Code 저작툴을 제공합니다만, 영어/일본어 윈도우만 지원을 하기 때문에 한국어 윈도우를 쓰신다면 설치가 불가능합니다. 그리고 역시 클라이언트 용도이기 때문에 패스~

image

.NET 용의 라이브러리를 찾을 수 있었지만 회사에서는 주로 C/Java 를 쓰는 관계로 계속 검색을 하다 보니 http://qrcode.sourceforge.jp/ 이런게 있군요.

"Hello World" 라는 내용으로 QR Code 를 만들어 이미지를 저장하고

qrcode

다운로드받은 java 용 qrcode 예제 중 CUIExample 을 돌려서 읽어봤습니다.

[freesoft@localhost qrcode]$ java -classpath classes example.QRCodeDecoderCUIExample ./qrcode.png
Hello World
[Success] ./qrcode.png
Processed 1 images in 283ms (283 images/sec)
OK: 1 NG: 0

뭐 나름대로 괜찮군요. 하지만 이 오픈소스 라이브러리는 좀 길거나 복잡한 내용이 들어가거나, "안녕하세요? 제 RSS 주소는 http://www.potatosoft.com/tt/rss 입니다" 와 같은 식으로 입력해서 만든 QR Code 는 읽어들이지 못하는데.. 일단 생성시에 오류는 발생하지 않으니 Reader쪽에 문제가 있다고 보는게 맞을 것 같네요.

구글에서 AdSense 에 QR Code 를 적용하니 어쩌니 하는 기사를 봤던 것 같아서 뒤져보니 Google에서 Chart API 의 한 형태로 QR Code를 만들 수 있는 기능을 제공해줍니다.  럭키~

기존의 바코드와 QRCode  를 모두 읽을 수 있는 java 오픈소스 ZXing 도 제공해주는군요. (http://code.google.com/p/zxing/)

... 모든 걸 원점에서 다시 시작해봅니다.


Google Chart API 로 "My RSS URL is http://www.potatosoft.com/tt/rss" 를 QR Code 로 만들어 봤습니다.

입력은

http://chart.apis.google.com/chart?cht=qr&chl=My%20RSS%20URL%20is%20http://www.potatosoft.com/tt/rss&chld=H|2&chs=144

이런식으로 하면 되구요 EC Level 을 H 로, 차트 사이즈는 144pixel 로 설정했습니다.

보이기는 이런 식으로 보이게 되지요.

ZXing 은 android / j2se / j2me 등 다양한 환경의 코드를 제공해주는데 우선 core 라는 공통 라이브러리를 컴파일해야 하고, 이를 위해서는 WTK를 설치해야 합니다. ( 공통이면 모바일이든 웹이든 상관없이 돌아가 줘야 하는거 같은데 WTK에 의존한다는게 좀 -_-;; )

qrcode.sourceforge.jp 는 간단한 QR Code 만 가능했지만, 구글이 제공하는 chart api 로 QR Code 를 만들었으니 당연히 구글에서 제공하는 것으로 디코딩도 되리라는 믿음으로 WTK 를 설치하고 Eclipse 에서 core 를 컴파일 한 다음(build.xml 에 WTK-home 경로 지정), j2se 쪽 gui runner 를 실행시키기 위해 core.jar 를 library build 에 추가하고 실행해봅니다.

Google Chart API로 만든 QRCode 이미지를 파일로 저장한 다음 ZXing 에서 해당 파일을 읽어보니

image

깔끔하게 디코딩이 자~ㄹ 됩니다. QR Code 만들기 위해 상용 패키지 사서 쓰지 않아도 되겠군요. 우왕국~

깔끔한 이미지는 잘 읽는데, 그럼 실제 사용자들이 찍어 올리는 QR Code는 어느정도 인식을 할지 궁금해져서 테스트를 해봤습니다.

QR Code가 가장 널리 쓰이는 곳이 아무래도 일본이다 보니 이미지 대부분이 일본쪽 것들이군요.

image

실패 -_-;; 이런 건 인식 못하는군요. 옆에 이미지를 잘라내고 깔끔하게 만들어서 먹여줘봤습니다.

image

역시 실패 -_-;


웹검색을 하다 보니 이런 이미지도 있더군요. 그냥 해보면 당연히 에러가 나겠지 라는 새각으로 가운데 부분만 잘라서 인식시켜 보았습니다.

image

우왕 성공~!!  어떻게든 QR Code 의 흰색과 검은색만이 보이도록 사진을 찍어야 하는군요.

... 라고 생각하다가 이미지 패턴인식 형태이기 때문에 색깔이 문제가 아닐수도 있겠다 싶어 원본 이미지를 그대로 인식시켜 보았습니다.

image

우왕 -_-;; 이런것도 인식되는군요.


간단한 테스트였지만 이걸 만약에 사진을 찍어서 MMS로 전송한 다음 뭔가의 내용을 서버에서 처리하여 다시 사용자에게 SMS로 보내준다든지 하면 인식률 때문에 사용자들이 서비스를 쓰지 않을 것 같고, 사용자의 단말기에 QR Code 리더가 붙어있어야만 서비스가 활성화 될 가능성이 높아 보입니다. 그것도 별도의 리더를 붙인다든가 하는 게 아니라 휴대폰 카메라로 찍으면 바로 인식되는 형태의 built-in 으로 제공되어야 할 것 같군요.

Android 를 적용한 구글폰이나 iPhone 을 언제까지나 기다릴 순 없고.. -_-;;

QR Code 의 주요 활용 방안 중 하나라고 한다면 리더기로 해당 QR Code를 읽으면 곧바로 단말기가 무선인터넷 접속을 해서 관련 정보를 읽는 등의 용도로 쓰일 수 있는데(쿠폰을 바로 받는다든지), 국내의 이통사 3사에서는 아직까지 무선인터넷 요금을 내리실 생각이 별로 없기 때문에 향후로도 QR Code 가 활성화될 가능성은 거~의 없다고 봐도 되겠습니다.

국내 이통사에서도 KTF의 핫코드, SKT의 네이트코드, LGT의 이지코드 ( 그나마 KTF가 이름 짓는데 좀 창의적이고, SKT는 주로 NATE OOO, LGT는 이지OOO 이런 식 ) 를 이미 시범서비스중인 것으로 알고 있습니다만 이런저런 문제로 상용화는 이루어지지 않고 있다고 합니다. ( http://www.dt.co.kr/contents.html?article_no=2008081402012060745001 )

뭐 그 이유는 위에서 이야기한대로 QR Code를 읽을 수 있는 단말기의 부재와 더불어 요금문제가 가장 크게 다가올 것 같군요.


그나마 현재로써 가장 가능성이 있는건 LGT의 OZ 서비스일텐데... QR Code 무제한 요금제 같은거 도입하고 단말기에 리더 집어넣어서 활성화 시켜 볼 생각은 없으신가요?

특히 최근의 한우/멜라민 득 각종 식품파동과 관련해서 대형마트와 공조해서 차별화된 서비스를 내어놓아도 좋을 듯 합니다만...

이건 뭐 관련 서비스를 만들어봐야 리더기 보급이 되어있지 않으니 말짱 헛일이군요 쯥~

by S2nNAMU | 2008/11/18 16:45 | 바코드 & OCR | 트랙백(1) | 덧글(4)
트랙백 주소 : http://littletrue.egloos.com/tb/3984474
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 쉽고 간편한 바코드 생.. at 2010/09/16 01:29

제목 : 바코드 생성 및 인쇄 프로그램 다운받기
쉽고 간편하게 바코드를 만들고 인쇄할 수 있는 프로그램입니다^^ 위에 다운받기를 클릭하세요^^...more

Commented by 샤프 at 2008/11/18 16:48
헛 일 말 짱 = 노가다
Commented at 2010/03/06 17:00
비공개 덧글입니다.
Commented at 2010/03/31 08:01
비공개 덧글입니다.
Commented by coma at 2010/09/05 14:53
QR Factory는 어플로케일로 설치가 가능합니다.

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >