最令一般人困惑的是,到底二維條碼與一維條碼有甚麼不同?以及為什麼要用二維條碼?一維條碼事實上相當廣泛的被使用,如最常見的 EAN 或是 ISBN


以 ASUS P305 拍攝每天要喝兩瓶以上的統一純喫茶上的 EAN 13 碼。

以 ASUS P305 拍攝最近讀的一本書《大崩壞》

一維條碼是使用黑白線條粗細來定義資訊內容,利用最左右兩邊的黑線來定義條碼總長度與寬度參考,在利用寬度定義出字碼內容。由於長度的侷限,定義的資訊內容自然不會太豐富,EAN 與 ISBN 都只有數字編碼,但是如 Code39 有 A-Z,0-9,-.$/+%, space 等 43 種字碼,相對的,每個字碼佔用的長度自然較大。EAN 用於全球產品標示,可容納十三個數字,頭三碼是國碼,而後是九碼製造商與產品碼,最後一碼是檢查碼,這個檢查碼提供一個簡易的偵錯機制,避免讀碼錯誤。ISBN 條碼也是大同小異,包含了語系、出版社、商品碼與一個檢查碼。這些條碼都只能容納十幾個數字或字母。


Source: ISO/IEC 18004 Information technology — Automatic identification and data capture techniques — Bar code symbology — QR Code

矩陣式二維條碼則是利用圖形或條狀圖案作為定位點,並定義出上下左右範圍,並利用範圍內的黑點定義資訊。其實可以將這些黑點想像是位元,這些位元可以是任何資料,也可以利用容錯演算法進行錯誤更正。同樣的空間,二維條碼可以容納更多的資訊。

Version: 4 ECC Level: H 之條碼,內容是本站網址。雖有污染,但仍可被讀取。

QRCode 一共有四種字碼種類,分別是 Numeric、Alphanumeric、8-bit bytes (binary)、Kanji,每一種字碼或資料所佔的位元數都不同,它可以以混合的模式使用這四種字碼,以便達到最高的使用效益。QRCode 一共有四十個版本,版本越大內含點數越大,資料含量也更大。此外,它也支援四種容錯等級,分別是 L (7%)、M (15%)、Q (25%)、H (30%),不同的等級,可以接受的污損率也更高。選用的容錯率會造成同一版本的 QRCode 內容含量數跟著縮減或變大。規格可參考以下表格。

Symbol size 21 × 21 – 177 × 177 modules (size grows by 4 modules/side)
Type & Amount of Data
(Mixed use is possible.)
Numeric Max. 7,089 characters
Alphanumeric Max. 4,296 characters
8-bit bytes (binary) Max. 2,953 characters
Kanji Max. 1,817 characters
Error
correction
(data restoration)
Level L Approx. 7% of codewords can be
restored.
Level M Approx. 15% of codewords can be restored.
Level Q Approx. 25% of codewords can be restored.
Level H Approx. 30% of codewords can be restored.
Structured append Max. 16 symbols (printing in a narrow area etc.)
  • samuel

    samuel_yu#21cn#com

  • Hi, Samuel
    容您廣告。但我想您說的是商業授權轉讓吧?:-)

  • samuel

    呵呵,谢谢CHIHCHUN;
    几年前学习 2D BARCODE 的时候自己写的,通过了验证;
    看看如果有人能用得上,也好;
    商業授權;

  • 我們對QR-Code的應用非常的看好,只是在短時間有些夢想可能沒法立即實現,但還是盡可能的為未來提供更多的小像,還希望大大們多多指教,未來的世界手機一定是重要的工具,他可以當成最前端的Code Reader,再搭配豐富的後端加值系統,可以讓未來的生活更簡便….^_^

  • zyuanlee

    英文的好像比较容易encode,但是对于中文和日文,总是存在乱码问题,有解决整个字体编码方面的朋友吗?

  • zyuanlee, 亂碼一向不是問題,只要你了解如何編解碼。;-)

  • 我是大陸的。
    非常欣賞,也非常崇拜,希望有機會能交流學習,msn:[email protected]

  • stranger

    It’s quite an intersting article although the idea has been around for quite sometimes. But the primary condition for this to be “popular”, the mobile devices must have some kind of internet connection, which is quite popular in Japan. Also the “redirected” website mostly need to have a wap edition of the website for the ease of use for mobile devices. Also, it would be nice for you mention about “security issues” related to this new product. In any case, this is quite an informative site. Thanks.

  • stranger,

    Most of new handset are supporting CHTML or HTML. 🙂

    Some vendoers like Nokia is developing rich web interface on handsets. The new browser are even supporting AJAX. 😉

  • asme

    老闆提到2d bar code的產品應用,找了許多,這篇真的很有料

    省去很多事前資料的準備,真是感謝!!

    thanks.

  • gemini

    板大您好,
    小弟最近再做有關二維條碼的報告
    拜讀這篇文章後
    覺得您寫的實在很棒!!
    因此想借用您的一些資料與圖片放在報告裡頭
    希望您不介意
    萬分感謝 : )

  • 嗨, Gemini
    請依照 Attribution-NonCommercial-ShareAlike 2.5 License 條款使用內文,如引用請註明作者為 Rex Tsai 並標示網址。:-)

  • SARS

    hi Rex,

    最近QR code的應用似乎安靜下來了…觀察QR code這一年多來在台灣的發展,我看指望國內電信業者放開胸懷,共同去發展這方面的應用大概就不必了,臺灣人使用手機的經驗和習慣跟日韓的發展有很大不同,我本來是十分看好這方面的發展的,甚至一度以為QR code將發動另一次的Mobile internet revolution…看來是過度樂觀了…

    讀你的blog已經有很長的時間的SARS

  • SARS,
    其實最近 QRCode 的應用更廣泛了,以前從來都不會在報紙雜誌或看板上看到 QRCode。現在我每天搭捷運都會看到。

    只是最近特別忙,完全沒有時間更新報告目前的發展進度。有空會多貼些資料的。:D

  • BlueWhisper

    本來在向古狗大神討教embedded linux相關技術的

    爬到jollen.org 爬到OpenMoKo…

    最後結果跑到這邊不但把文章爬完還encode了自己blog的QRCode…

    只是怎麼找也找不到for Sharp WX-T81的decoder…
    (新出的WX-T82就有 哇哩咧XXX)

    如果國內只是一直推應用而沒想到user端的困擾

    終究也只是雷聲大雨點小

    回過頭來 發現embedded的未來真是光明啊!!

    套一句OpenMoKo的口號!

    Free your phone…

  • @BlueWhisper: 「如果國內只是一直推應用而沒想到user端的困擾」 這句話真是矛盾啊。你要如何推應用又不被這些用戶端的抗議干擾呢?

    套一句手機商的口號,就是「嘿,你該換新手機來使用新服務了。」

    (話說你的推論真是一點邏輯都沒呢。)

  • yuc3697

    QuickMark的二維條碼軟體已經出到第3.5版啦,多加了可轉寄地理條碼的功能喔,所謂地理條碼就是可秀出有經緯度的條碼啦,有興趣的大大們,可以到金揚資訊的網站看看喔. http://www.quickmark.com.tw

  • viviann

    在你這裡收獲許多,謝謝你~^^
    最近開始接觸QR code,才深知這個領域的浩瀚
    對於不是資訊人的我還真的有點吃力~
    不過沒關係,我會努力滴~

  • @viviann 不客氣,很高興認識妳。

  • 二维码的诞生解决了一维条码不能解决的问题,它能够在横向和纵向两个方位同时表达信息,不仅能在很小的面积内表达大量的信息,而且能够表达汉字和存储图像二维码的出现拓展了条码的应用领域,因此被许多不同的行业所采用。

  • 大陆一个重量级的二维码解决方案提供商 银河传媒 中国移动二维码
    http://www.gmedia.cn

  • 心有灵犀鬼才心

    我们正在开发中国汉信码和QRCode.有合作机会加我,msn:[email protected]
    北京。

  • Scharlar

    Dear Rex,

    This is Scharlar,also the first time to surf your blog.
    I am a layman about 2D barcode stuff.
    You are quite knowledgeable about 2D barcode.So would you please help me to answer the following question:

    1.Does 2D barcode decoder need to do very “accurate” image skew angle correction/ “keystone effect” correction in order to get decoding job well done? What is the minimum image quality requirement?

    Appreciate your reply in advance.

    Best regards,
    Scharlar Hsu

  • @Scharlar, on mobile phone, Yes. You can have good feature extraction algorithms at least. Angle correction would be nice to have functions, since most of these algorithms are trial and error methods.

    Also, the minimum image resolution depends on which bar code you want to read, and what size is. Large bar code required high resolution to recognized the `modules’. One module required at least one or two pixels to read.

  • Scharlar

    Dear Rex,

    Thank you very much for your reply.

    Currently I am developing proprietary 2D barcode encoder/decoder. My barcode pattern is 280×280 pixels,and using RS(232,116) as ECC. I do not apply so called “module” to construct barcode image. I use 8-bit/symbol to represent the message,each bit consists of 8×4 pixels,and serializing the bit-pattern over the image area to convey the codeword.
    During simulation, my algorithm can resolve the image re-sizing / skew angle correction issue,and perfectly decode the messages without any “bit-alignment” mechanism.

    But in real case, the barcode image always got some “2D- keystone” effect problem, and the above algorithms do not work under such condition. If I try to resolve the “2D-keystone” effect issue, it will consume too much computation power, I do not think current working 2D barcode decoders have spend too much effort on image correction(???)

    Personally, I think my problem is on “bit-alignment” issue.

    I think current working 2D barcode decoders also need to deal with the “module-alignment” issue. How have they overcome such issue(smartly) without too much image correction effort??

    Would you please advise me one way to settle my problem?

    Looking forward to getting your help(advice).

    I apologize if I have bothered you so much.

    Thanks again!

    Best regards,
    Scharlar Hsu

  • @Scharlar, You know that you are asking the key element for implementing a barcode reader ? 😉

    I understand your question, and I also know some barcode reader do solving the problem by having image correction in the problem. The key is how to optimize the computing cost of the algorithms. Traditional solutions for PC might not work, since it takes too much computering power. You may try to `guess’ the right angle by projecting the module/bit without changing the bit ordering.

    It’s a matter of time for finding the best solution, I wish you good luck. 🙂

  • Scharlar

    Dear Rex,

    Thanks for your advice.

    Best regards,
    Scharlar Hsu

  • SARS

    hi Rex,

    依你看QR code在台灣最有可能Boomimg的時間點會是什麼時候?什麼樣的應用會最容易普及?這個問題很難吧….^^

    我的msn:[email protected] 請加我

  • Jerry

    Dear Rex,

    請問用C語言實做qrcode decode 的問題…

    問題一:
    假設Version1 DataModule 208個點已經解出來( unsigned char DataModlue[208]; ),這208個點其中有48個點是用來存Data,(208-48=160)個點用來做Error correction,程式要怎麼寫,才能運用這160點,把正確的Data 回覆?

    我依稀記的國外有人寫出C-code的解Reed Solomon的程式,如果您知道,或手邊有sample code,可否不吝告知,小弟感激不盡 jerry.eic93g#nctu#edu#tw

    問題二:
    DataMaskPattern(for QRCode symbol) 111 的condition spec寫((i+j)mode2+(ij)mode3)mode2 ? 但Figure21卻寫((ij)mode2+(ij)mode3)mode2 ,哪一個才正確?

  • Hi, Jerry
    1. 文章裡面有提到 open source library, 歡迎參考。
    2. 不確定你講是哪一份規格? ISO 18004 ?

  • Dan

    日本有所謂新一代的ColorCode出現 號稱將取代 QR Code.(參考 http://www.colorzip.co.jp/en/
    您的看法如何?

  • Jason

    你好:最近在看QR那方面的资料,准备把它当成毕设来做,但是查了好久都没找到ISO 18004。
    不知道你能否传一份给我,谢谢。
    email:[email protected] 或者 [email protected]

  • @Jason ISO 18004 是 ISO 文件,必須購買後才能使用,電子文件上都有浮水印,也不好直接給你。

    若不想購買定價 CHF 200 的 ISO/IEC18004 – Information technology — Automatic identification and data capture techniques — Bar code symbology — QR Code,可以改為購買 中華人民共和國國家標準 GB/T18284-2000《快速響應矩陣碼》,定價只要人民幣 33 元。

  • @Dan ColorZip 不是新技術。ColorZip 其實是 2000 年時,由韓國延慶大學的團隊所開發,並於當年四月商品化成立 ColorZip Media 公司。並於 2004 年技術授權到日本的 ColorZip Japan Inc.

    ColorZip 的優點是以彩色矩陣組成,相較於傳統二維條碼於行銷上較容易引起人注意。缺點是印刷較為困難、且該條碼格式資料含量相當小,無法提供足夠的資訊,且於日本、韓國,皆無出廠即可譯碼的裝置。ColorZip 推展其實非常不順利。

  • Dan

    謝謝您關於ColorCode的高見!
    我最近和日本ColorZip有所接觸。請問可以用email和您聯係嗎?您的email是?

  • http://www.qrdoor.com.tw 這個網站也有很多QR code的介紹及應用.已經可以線上做出彩色套圖的QR CODE,還滿不錯的.也有免費的QR CODE API供其他網站直接呼叫使用. 也可以分享QR code及製作專屬部落格貼紙.好像都免費的.

  • well

    請問一般門市店面(例如便利超商)常用的掃描機能讀 QR code嗎?

  • 牽涉到讀碼機的規格,一般的條碼掃描機都只支援 1D Barcode.

  • 想請問一下QRCODE中的錯誤控制是如果實做的呢??我大概知道有bch與rs但不太了解如何控制的~想請大大知道的話指點一下~謝謝

  • 不太確定您想問的問題是甚麽?是想問 Reed Solomon 的算法?還是 codewords 的編譯?

    http://en.wikipedia.org/wiki/Reed–Solomon_error_correction

  • 因為最近有看他的產生方式但有一部份錯誤控制那邊有點不懂~不知道可不可以跟你私下討論一下呢~謝謝

  • Jason, 我發了一封信給你,你可以透過該電子郵件跟我聯絡。謝謝

  • Alio

    您好,小弟最近調查mobile ticketing的資料時有幸拜讀您的Blog
    想請教您 對QR code作為實際商業交易的媒介有什麼看法(作為認證用的票卷ex:車票,機票)?
    因為小弟在Google 上有找到國外很多相關的應用
    但是卻鮮少提到如何驗證的機制
    不知您可否提供一些意見 謝謝您