什麼是 QR Code?原理、版本容量與安全性完整介紹
QR Code 是 Quick Response Code 的縮寫,中文常叫「行動條碼」或「二維條碼」。它在 1994 年由日本 DENSO 的開發部門(也就是今天的 DENSO WAVE)發表,開發時最重視的就是「讀得快」,Quick Response 指的正是這件事;另一個目標是存下比一維條碼多得多的資料,連日文漢字與假名都要能放。和商品包裝上只在橫向記錄資料的一維條碼不同,QR Code 在橫向與直向都存資料,所以同樣大小能放進多得多的內容:一整串網址、WiFi 帳密、一張電子名片都裝得下。
如果你要做的是結帳時嗶一下的那種直條條碼(EAN-13、Code 128),那是另一種東西,請改用條碼產生器。
一張 QR Code 由哪些部分組成
把 QR Code 放大看,它是由一格一格的黑白小方塊組成,每一個小方塊叫做一個「模組」。這些小方塊分成兩類:一類是固定的圖形,負責讓相機找到並對齊這張碼;另一類才是真正的資料。下面這張圖是本站網址 https://www.pocketool.app/qrcode-studio/ 以容錯等級 M 做出來的 QR Code,我們把固定圖形分色標出來:
- 三個角落的大方框(定位圖形):「回」字形的方塊。它的黑白寬度比例固定是 1:1:3:1:1,開發者當年挑這個形狀,是因為它最不容易出現在一般的文件與印刷品上。相機看到這三個就知道 QR Code 在哪裡、朝哪個方向,所以不管斜著、倒著拍,360 度都讀得出來;第四個角刻意空著,用來判斷方向。
- 一排黑白交錯的點(時序圖形):連接三個大方框,幫相機數格子,算出每個小方塊的位置。
- 校正變形的小方框(校正圖形):版本 2 以上才有,讓相機在紙張彎曲、拍攝角度歪斜時還能校正變形。版本越大,這種小方框越多。
- 記錄設定的區塊(格式資訊):記錄這張碼用的是哪一個容錯等級,以及套了哪一種把黑白打散的花紋(遮罩)。產生器會從 8 種花紋裡挑一種套上去,避免出現大片全黑或全白、讓相機難以判讀的區域。
- 資料與錯誤更正碼:剩下的小方塊。錯誤更正碼是一段額外的備份資料,讓 QR Code 在部分髒污、破損時仍能還原,這也是中間能放 LOGO 的原因,細節見容錯等級怎麼選。
另外,QR Code 四周要留白(靜區),至少 4 格小方塊寬。這圈空白不是為了好看,而是讓相機分辨碼的邊界。印刷時被裁掉或貼著圖案,就常常掃不到,印刷教學裡有示意圖。
版本與容量:一張 QR Code 能放多少字
QR Code 有 40 種尺寸,官方稱為「版本」。版本 1 是每邊 21 格(21×21 模組),每升一個版本每邊多 4 格,到版本 40 是每邊 177 格。內容越多,就需要越大的版本;本站的產生器會自動挑選裝得下內容的最小版本,你不需要自己選。
能裝多少,還要看內容是哪一種字元。純數字最省位子;只有大寫英文、數字與少數符號(空白、$、%、*、+、-、.、/、:)時次之(英數模式);只要出現小寫英文或中文,就最佔位子(技術上叫位元組模式)。一般網址帶有小寫字母,所以都是最後這一種。一個中文字佔的空間大約是英文字母的 3 倍(UTF-8 編碼),所以同樣的空間,能放的中文字大約是英文字母的三分之一。
下表是容錯等級 M(本站預設)時,幾個版本的最大容量:
| 版本 | 模組數 | 純數字 | 大寫英數 | 一般網址與文字 | 中文約 |
|---|---|---|---|---|---|
| 1 | 21×21 | 34 | 20 | 14 | 4 字 |
| 2 | 25×25 | 63 | 38 | 26 | 8 字 |
| 3 | 29×29 | 101 | 61 | 42 | 14 字 |
| 5 | 37×37 | 202 | 122 | 84 | 28 字 |
| 10 | 57×57 | 513 | 311 | 213 | 71 字 |
| 20 | 97×97 | 1,600 | 970 | 666 | 222 字 |
| 40 | 177×177 | 5,596 | 3,391 | 2,331 | 777 字 |
最大的版本 40 搭配最低的容錯等級 L,可以放 7,089 個數字或 2,953 個英文字母與符號(位元組),這就是常見「QR Code 最多能放多少」的答案。不過實務上很少需要這麼多:版本越大、小方塊越密,印小了就難掃。超過容量時,本站的產生器會直接提示,而不是做出一張掃不出來的圖。內容很長時,比較好的做法是把內容放在網頁上,QR Code 只放網址。
靜態 QR Code 與動態 QR Code
- 靜態 QR Code:內容直接存在圖裡,掃描時不需要經過任何伺服器。永久有效、不會被收回,也沒有人能統計誰掃了它。本站產生的都是靜態 QR Code。
- 動態 QR Code:圖裡其實是服務商的一個短網址,掃描後再轉到你設定的目的地。好處是可以事後改目的地、看掃描次數;代價是完全依賴那家服務,一旦方案到期或服務關閉,印出去的 QR Code 就全部失效。
名片、WiFi、固定的官網連結這類長期不變的內容,用靜態 QR Code 最安心。如果目的地可能會變,可以讓 QR Code 指向你自己網站上的固定網址,要改時改網站就好,不必重印。
常見用途
最常見的是把網址變成 QR Code(網址 QR Code),其他像是讓客人掃碼連上WiFi、把聯絡方式存成電子名片、掃碼直接寄信或撥號、活動報名、產品說明書、餐廳的線上菜單等,在台灣幾乎隨處可見。
掃描 QR Code 安全嗎
QR Code 本身只是資料,不會自己執行任何程式;風險在於它把你帶去哪裡。常見的詐騙手法是在停車繳費機、海報上貼一張假的 QR Code 貼紙,把人導到仿冒的付款或登入頁面。掃描前先看清楚網址裡的網站名稱是不是你預期的,不要在來路不明的頁面輸入帳號密碼或信用卡,就能避開大部分風險。手機怎麼掃、電腦裡的圖片怎麼讀,請看如何掃描 QR Code;本站的QR Code 掃描器讀取後只顯示文字與會開到的網站,不會自動開啟連結。
參考資料
- DENSO WAVE:History of QR Code(發表年份、開發目的與定位圖形的由來)
- DENSO WAVE:Information capacity and versions of QR Code(版本與模組數)