QR Code發展與歷史介紹:運作原理、特色、編碼結構分析

2019.12.13 03:00PM
照片中跟那不勒斯藝術學院有關,包含了圖案、商標、牌、字形、模式M

隨著智慧型手機興起,QR Code(QR碼)的應用越來越廣泛,只要拿出手機開啟App,無論是電子海報、個人名片、還是電子支付,「掃」一下就能獲得圖像裡蘊含的訊息。QR Code是種二維條碼的類型,在一維條碼能夠承載的資訊量不足以應付需求之後,二維條碼順勢而生,本篇介紹QR Code的運作原理、特色、編碼結構分析,讓讀者更瞭解這項隨處可見的科技小工具。

QR Code:Quick Response Code,快速響應矩陣圖碼

QR Code是Quick Response Code的縮寫,因為發明者希望QR Code可以快速解碼內容,故以「Quick Response(快速反應)」命名。QR Code的發明可追溯至1994年的日本,由汽車零件業者Denso Wave公司發明,用來追蹤生產線上的貨物,並且讓條碼能容納日文漢字、假名訊息。

與一維條碼最大的差異在於,二維條碼能夠承載更多資料,而QR Code能儲存的資訊種類囊括了數字、字母、二進制(位元組)、以及日文、漢字。可以這麼說,一維條碼代表的資訊以「數字編號」為多,號碼用來識別商品,但QR Code可以讓日文、漢字資料直接記錄在條碼裡,也就是讓條碼代表一句話、或是一串網址。

照片中提到了.....esee.、... ..... ....、... ....,包含了二維碼、平面設計、模式M、二維碼、牌

▲4種不同的二維條碼。因為一維條碼,也就是由線條組成的條碼能承載的資訊量太少,因此最初將2個一維條碼疊加在一起,最後讓X軸、Y軸都帶有訊息,進化成二維條碼。二維條碼又稱為矩陣條碼,種類有很多,其中屬QR Code最為常見。(圖片來源:Wiki)

▲一維條碼的運作原理介紹。

QR Code標準在1999年發佈 應用包含物流、驗票、網站登錄

日本的QR Code標準在1999年公佈,而其對應的ISO國際標準(ISO/IEC 18004)則在2000年獲得。ISO(國際標準化組織)認定QR Code為國際規格,其規格公開,雖由Denso Wave公司持有專利,但不會被執行。

而除了能記錄日文與漢字之外,QR Code的辨識速度快、360度全方位都能被識別、容錯能力高、佔位面積更小,讓它被廣泛運用在產品跟蹤、物品識別、文件管理等方面。除此之外個人名片、網站登錄等地方也常常見到QR Code的蹤跡。

照片中提到了產銷履歷驗證農產品、番茄-、牛奶小番茄,跟格林利有關,包含了產銷履歷驗證農產品標章、追踪、食品安全、產品、農業

▲行政院農委會的產銷履歷也應用了QR Code,右下則是傳統一維條碼。(圖片來源:產銷履歷資訊網

照片中提到了臺灣鐵路管理局、車次 Train 432、2018. 09. 25,跟歌劇北有關,包含了紙、台灣鐵道局、癮科技、培養、紙

▲台鐵的車票也應用了QR Code,乘客只要將車票上的QR Code對準驗票閘門的掃描區,即能掃描通過。現在台鐵也有QR Code電子化車票,詳情可見2019台鐵網路購票App教學懶人包

不過,QR Code並非任何情況下都能夠辨識,比如說QR Code過度擠壓變形、印刷不夠清晰、或是外框沒有足夠的白邊的話,就會造成識讀困難。雖然如此,和傳統一維條碼相較,QR Code可以360度掃描辨識,容錯能力更是讓它在視覺造型上有了更多的變化。

有40種尺寸與4種容錯級別 最多能容納7089字元

先不論微型QR Code等特殊變形,一般常見的QR Code共有40種不同的尺寸版本,版本依據儲存密度與結構區分,每一種QR Code的組成結構、能夠儲存的資訊量多寡都不完全相同。QR Code的尺寸版本以「 Version」標示,如版本1,也就是 Version 1,QR Code尺寸為21x21位元, Version 2的尺寸為25x25位元,Version 40則為177x177位元,Version越高,QR Code的尺寸越大,能夠承載的資訊量也就越多。

是否有看過融入標誌的QR Code呢?「容錯」又稱「糾錯」,是指當某部分資訊缺失的時候,其它部分會自動填補,讓整體資訊依然可以完整辨識,容忍錯誤發生。簡單來說,就是當QR Code條碼缺了一角,或是沒有辨識完全,資訊依然可以被掃瞄出來,這就是QR Code容錯能力的表現,是一維條碼辦不到的。

QR Code的4個容錯等級:

  • L(低):可修正7%的字碼。
  • M(中):可修正15%的字碼。
  • Q(中高):可修正25%的字碼。
  • H(高):可修正30%的字碼。

▲傳統一維條碼只要組成有損傷,就難以辨識,不過QR Code可以容許一定程度範圍內的資訊流失,因此就算缺角(圖左)、或是在條碼中放入Logo(圖右),都不會影響資訊讀取。這也讓QR Code在設計上有非常多的變化。(圖片來源:Wiki)

▲QR Code共有40種不同的尺寸版本,前後版本尺寸之間都相差4個單位。(圖片來源:萬能的Wiki)

容錯能力越高,同等級的QR Code能夠容量的資訊量就越少,這是因為將原本能夠儲存資料的地方,拿去做容錯備份,於是一般儲存資料的空間被壓縮,能夠儲存的資料也就變少。由以上訊息可以得知,資訊容量最大的QR Code版本為Version 40、容錯能力為L等級,此版本最多可以容納7089個數字,或是4296個字母,或1800個漢字。一般的一維條碼最多只能輸入20個資訊量。

▲QR Code由無數個黑白小格子組成,每一個格子就是一個位元(bits)。由上圖可知,組成一個純數字(Numeric only)需要3又1/3個位元,也就是3又1/3個小格子,至於要組成一個ISO 8859-1編碼的二進制字元,則需要8 bits,也就是8個小格子。以資訊容量最大的Version 40、容錯能力為L等級的QR Code來說,純數字最多能夠容納7089個,也就是能夠表示7089個0至9的數字。

QR Code原理與結構:定位標記、定時資訊、版本與格式資訊

因為電腦只能接收0與1,因此無論是數字、字母、還是漢字,所有訊息都要回到0與1的編排來轉換。QR Code裡有無數個黑色與白色的方格,每一格黑白格子都是一個位元(bits),黑色方格代表1,白色方格代表0,掃碼時機器只要判斷反光與否,就能將黑白圖像轉換為1與0的組合。

在QR Code的結構之中,最重要的就是位於上方兩側與左下的3個「回」狀定位標記。定位標記讓掃描端能夠360度辨識QR Code的方向,因此就算反著掃,也能判斷出哪邊是開始、哪邊是結束,避免讀取錯誤。正因如此,QR Code裡面的定位點一定會保留,無論其它資訊如何變化,定位點都不可以被取代。

▲QR Code結構。根據QR Code版本不同,結構會有細微的差異。QR Code版本越高,內涵的資訊量越大,也就會有越多校正圖塊,避免機器因為資訊量太多產生錯誤。

如上圖所示,QR Code裡真正紀錄資料的地方僅有灰色的「資料與糾錯碼訊息」,而在該區塊裡,又會分為真正紀錄資訊的區域,以及容錯區域。QR Code的定位標準與格式資訊位置都是固定的,至於定時資訊(Timing Patterns,又稱時序圖案)是用來讓機器辨識QR Code的單位格子大小、以及提供座標位置,像是基準點一樣,避免QR Code尺寸過大,或是掃描時變形,導至格子判讀錯誤。

照片中提到了Fixed patterns、Format info、Enc: Encoding mode,包含了二維碼解碼、二維碼、條碼、碼、條碼讀取器

▲QR Code的訊息編排順序。最右下Enc告知編碼格式,也就是接下來會使用哪種編碼,內容是數字、字母、還是漢字。Len告知長度,最後會有End告知訊息結束。和之前提到的一樣,組成一個字元(英數漢字)所需要的位元(小格子)數量不同,上圖一格就是一個字元,該字元需要由8個位元組成。左半邊E1至E7都是容錯區域。

照片中提到了Fixed Patterns、Format Info、E35,包含了二維碼數據、二維碼、碼、數據、條碼

▲QR Code的另外一種排列方式。 右半邊的D為交叉排列的資訊區,左半邊的E為容錯區域。

QR Code的編碼順序有些複雜,字元會依照某種順序排列,而位元根據運行方向,也會有不同的讀取順序(見上圖右)。需要注意的是,每個版本的QR Code訊息編排順序都不同,容錯等級也牽涉到QR Code的訊息編排方式,因此就算是同樣的訊息,也會產生不同的QR Code。

編碼結束後再加上掩碼(Masking)步驟

在複雜的編碼結束之後,為了避免資料區域出現連續的空白、連續的黑色區域、或是和定位點相似的圖形,還會再進行掩碼程序,透過演算法,選擇合適的掩模圖案(又稱遮罩),再經過操作後融進資訊裡。掩碼是為了讓QR Code的黑白色散開,更容易被機器識別,二維碼的掩模圖案共有8種,會在資料區內不停地重複計算,功能區域則不會有更動。

掩碼步驟完成後,QR Code才是真正完成。因此一個完整的QR Code裡包含了定位點、功能區域、資訊區域、容錯區域、掩模圖案,每一塊都不可缺少。

照片中提到了Mask Patterns、EC Levels、( + j)%3 = 0,包含了讀取二維碼、二維碼、條碼、條碼讀取器、碼

▲二維條碼共有8種掩模圖案,每一種都有對應的規則與計算方式,並不是隨意挑選。

照片中跟哈珀學院有關,包含了莫德茲酒店、莫德茲酒店、旅館、設計、折扣和津貼

▲使用QR Code設計的房間,每一個都連結至色情訊息,象徵現在生活裡雖然雙眼看不見,但隱藏的色情無所不在。(圖片來源:Dezeen)

以圍棋作為發想 讓訊息接收更加方便快速

不知不覺間,QR Code已佔領了各個角落,當初發明者以「圍棋」作為發想,讓QR Code容納更多元的資訊,直接改變了現代人的生活習慣。QR Code看似簡單,不過其實有一定的複雜度,如果像筆者一樣對程式編碼毫無概念,要理解它背後的運作規則實在是需要不少精神。無論如何,QR Code讓人能更快速地獲取資訊,未來或許會有更多應用延伸出現,再度掀起一波浪潮。

延伸閱讀:

資料來源

6 則回應

  • 運用的好就很方便。但看到廣告(公車、路邊、看板等)上面有QR code真有人停下來在那癡癡望著對焦掃瞄嗎?
    2019-12-21
  • 長知識了! 謝謝!
    2019-12-19
  • 印象幾個qr code可儲存幾k的資料喔 以前日本常常在雜誌上印刷上去 使用當時的日本手機掃描就可以新增手機鈴聲或是圖檔
    2019-12-17
  • 賴姿諭
    2019-12-17
  • 長知識了 大推專業介紹文
    2019-12-16
  • 推知識文!
    2019-12-16