QR Code 的運作原理

又稱: QR Code 編碼, QR Code 解碼, QR Code 原理

定義

QR Code 的運作方式是把資料轉成碼字,加上里德-所羅門錯誤更正碼,再把位元排進一個帶有固定圖案的格線中,讓相機能夠找到、校正並讀取。

從資料到圖案

製作 QR Code 的第一步,是選擇適合資料的編碼模式:數字、英數字元、位元組或漢字。編碼器把資料轉成位元,切分成 8 位元的碼字,並依所選等級加上里德-所羅門錯誤更正碼字,然後挑選容納得下的最小版本。

碼字會沿著避開固定圖案的鋸齒形路徑填入格線。最後,編碼器會套用八種遮罩圖案之一,以打散大片空白區域或容易混淆的形狀,並把遮罩與錯誤更正等級記錄在格式資訊中。

  • 選擇編碼模式
  • 編碼資料並加入錯誤更正碼字
  • 選擇版本(尺寸)
  • 放置定位、時序與對位圖案
  • 填入資料模組
  • 套用八種遮罩中最好的一種,並寫入格式資訊

從相機影像到資料

解碼是把同樣的步驟反過來執行。掃描器找出三個定位圖案,其深淺 1:1:3:1:1 的比例在大多數影像中相當醒目,再搭配時序圖案與對位圖案,建立格線的對應關係。接著讀取格式資訊、移除遮罩並收集碼字。

然後里德-所羅門解碼會修復被誤讀的碼字,上限就是該錯誤更正等級的能力。如果損壞太嚴重,QR Code 會直接讀取失敗,而不是回傳錯誤的資料,所以 QR Code 很少出現亂碼結果。

為什麼尺寸與對比很重要

每個步驟都仰賴相機能區分深色與淺色模組。模組太小、對比太低、反光、模糊或缺少靜區,都會讓更多模組難以判定,而錯誤更正能吸收的量有限。讓資料短一點、對比強一點、邊界乾淨一點,解碼器的工作就會輕鬆許多。

常見問題

手機怎麼知道 QR Code 在哪裡?

它會尋找位於角落的三個大方形定位圖案。這些圖案獨特的 1:1:3:1:1 比例,讓掃描器從任何角度都能找到它們,並推算出方向。

為什麼 QR Code 要有遮罩圖案?

遮罩依固定規則翻轉模組,讓 QR Code 避免出現大片純色區域,以及看起來像定位圖案的形狀。編碼器會試遍八種遮罩,保留讀取最穩定的一種。

QR Code 倒過來也能讀嗎?

可以。定位圖案會告訴掃描器方向,所以 QR Code 旋轉到任何角度都能讀取。

來源與標準

所有名詞