PDF 417 2D 바코드 생성/인식 소스

Posted by 빵빵빵
2009/06/04 10:35 전산(컴퓨터)/PC-Windows



This program takes an ascii input text file and converts it to the pdf417 barcode. It supports text compression, numeric compression and byte compression. It currently produces postscript and pbm output for the barcode image. produces post
이 프로그램은 아스키로 된 파일을 인풋으로 하여 pdf417바코드를 만들어 낸다. 문자, 숫자, 바이트(바이너리??) 압축을 지원한다. 바코드 이미지는 포스트스크립과 pbm파일로 생성된다.
출처 : http://sourceforge.net/projects/pdf417encode


Pdf417decode.c can decode PDF417 barcodes from a pbm file. The program is capable of decoding all three compaction modes (binary, text and numeric), and performs Reed-Solomon error correction.
Pdf417decode.c 는 pbm파일에서 PDF417 바코드를 인식할 수 있다. 이 프로그램은 바이너리, 텍스트, 숫자의 3가지 압축 모드에서 모두 사용될 수 있고 Reed-Solomon 에러 보정을 수행한다. ㅡㅡ;;; 맞나?
출처 : http://sourceforge.net/projects/pdf417decode



추가~~~

바코드를 쉽게 제작해 주는 툴로는 Barcode Rendering Framework라는 프로그램이 있습니다.


지원되는 바코드 목록

    * Code 11 with or without checksum
    * Code 25 standard/interleaved with or without checksum
    * Code 39 with or without checksum
    * Code 93 with checksum only
    * Code 128 with checksum only
    * Code EAN 13 with checksum only
    * Code EAN 8 with checksum only
    * Code PDF417 2D with checksum (alpha version)


라이센스 : http://barcoderender.codeplex.com/license

다운로드 방법 : 아래 링크에서 ZenBarcode2030Release.zip를 클릭하세요.

http://www.codeplex.com/BarcodeRender/Release/ProjectReleases.aspx?ReleaseId=19893#ReleaseFiles



압축을 플고 프로그램을 실행해서 Symbology에서 사용하려는 바코드 코드셋을 선택하고 Barcode Text에 입력하고자 하는 문자를 입력하고 Enter키를 치면 아래 그림과 같이 바코드가 생성이 됩니다.

큰 이미지 보기





여기서부터는 다른분이 작성한 글을 퍼온겁니다.
출처 : http://littletrue.egloos.com/3984474

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


퍼온건 여기까지입니다.

2009/06/04 10:35 2009/06/04 10:35

http://heart4u.co.kr/tblog/trackback/139