跳至主要內容
指南基礎知識

QR Code 如何運作:結構、容錯機制與資料容量完整解析

手機讀取 QR Code 時到底發生了什麼事?一篇看懂定位圖案、模組、版本、容錯等級,以及一個 QR Code 能容納多少資料。

發布於 閱讀時間 6 分鐘

QR Code 無所不在——餐廳桌上、包裹、火車票、名片和付款終端機上都看得到。然而,很少人知道這些黑白方格裡藏了什麼,也不明白為什麼 QR Code 被 Logo 遮住一部分後依然能用。本文將以淺顯易懂的方式,說明 QR Code 的運作原理。

簡史

QR Code(Quick Response code,意即「快速回應碼」)由日本豐田集團旗下 Denso Wave 公司的原昌宏(Masahiro Hara)於 1994 年發明。當時汽車工廠需要比一維條碼更快速地追蹤零件。傳統條碼只能在單一方向儲存資料,大約只能容納 20 個字元;QR Code 則能同時在水平與垂直方向儲存資料,可容納數千個字元。

Denso Wave 雖然為這項技術申請了專利,卻選擇不行使專利權,這個格式後來也成為國際標準(ISO/IEC 18004)。正是這份開放性,讓任何人都能在任何裝置上免費產生及讀取 QR Code。

QR Code 的結構

每個 QR Code 都是由稱為模組(module)的小方格所組成的正方形網格。每個模組非深即淺,代表一個位元。網格中有些區域負責固定的任務:

  • 定位圖案(finder pattern)——位於三個角落的大方塊。它們讓掃描器能立刻找到 QR Code 並判斷方向,即使 QR Code 上下顛倒或是斜著拍攝也沒問題。
  • 校正圖案(alignment pattern)——較小的方塊(版本 2 以上才有),當 QR Code 印在曲面上或以透視角度觀看時,有助於修正變形。
  • 時序圖案(timing pattern)——位於定位圖案之間、深淺交錯的線條,用來告訴掃描器每個模組有多大。
  • 格式資訊(format information)——定位圖案旁的細長區域,記錄所使用的容錯等級與遮罩圖樣。
  • 留白區(quiet zone,又稱靜區)——QR Code 周圍的空白邊界。它是規格的一部分:少了它,掃描器就無法分辨 QR Code 在哪裡結束、背景從哪裡開始。

其餘部分都是資料碼字與錯誤修正碼字,交錯分布於整個網格中。

版本:為什麼有些 QR Code 比較密

QR Code 共有 40 種尺寸,稱為版本(version)。版本 1 為 21 × 21 個模組,每升一個版本,每邊就增加 4 個模組,直到版本 40 的 177 × 177 個模組。編碼的資料越多,版本就越高;在相同的列印尺寸下,每個模組也就越小。

這就是為什麼短網址會產生乾淨、疏朗的圖案,而一長串文字則會產生密密麻麻的圖案,必須印得更大。當你在我們的 QR Code 產生器建立 QR Code 時,預覽會顯示版本與模組數,方便你隨時掌握密度。

編碼模式與容量

QR Code 會為你的內容選擇最有效率的編碼模式:

模式 字元 最大容量(版本 40、L 等級)
數字 0–9 7,089 個數字
英數字 0–9、A–Z、空格及 $%*+-./: 4,296 個字元
位元組 任何資料,通常為 UTF-8 文字 2,953 位元組
漢字 日文字元 1,817 個字元

這些都是理論上的最大值。實務上,內容在數百個字元以內,QR Code 都還能穩定掃描。如果需要分享更多內容,不如改為編碼一個指向網頁的短連結。

容錯機制:Logo 背後的祕密

QR Code 採用 Reed–Solomon 錯誤修正碼,這正是讓刮傷的 CD 和 DVD 依然能播放的數學原理。編碼時會額外加入碼字,因此即使 QR Code 有部分損毀、髒污或被遮住,仍能重建原始資料。容錯等級共有四種:

  • L(低)——可修復約 7% 的受損碼字
  • M(中)——約 15%
  • Q(中高)——約 25%
  • H(高)——約 30%

等級越高,QR Code 越耐用,但也會越大,因為有更多空間要用來存放冗餘資料。這正是 Logo QR Code 得以實現的原因:放在中央的 Logo 會刻意「破壞」部分 QR Code,再由容錯機制補上缺口。若要加入 Logo,請選擇 Q 或 H 等級,並讓 Logo 面積維持在 QR Code 的四分之一左右以下。

提示:容錯機制無法取代良好的對比度。顏色太淺、尺寸太小或缺少留白區的 QR Code,即使使用 H 等級也可能掃不出來。

遮罩:讓圖案保持可讀

原始資料可能會意外形成大片同色區塊,或出現看起來像定位圖案的形狀,讓掃描器混淆。為了避免這種情況,編碼器會套用八種遮罩圖樣之一——也就是翻轉特定模組的數學公式——並保留「懲罰分數」最低的那一種。掃描器會從格式資訊讀取遮罩編號,再將其還原。你完全不必操心遮罩的事,但正因為有它,兩個內容幾乎相同的 QR Code 看起來可能截然不同。

掃描時發生了什麼事

當你將相機對準 QR Code 時,掃描器會:

  1. 尋找三個定位圖案,計算 QR Code 的位置、大小與旋轉角度。
  2. 校正透視:利用校正圖案,將傾斜的 QR Code 還原成平面網格。
  3. 取樣:以時序圖案為尺規,判斷每個模組是深色還是淺色。
  4. 讀取格式資訊、移除遮罩並蒐集碼字。
  5. 修復:以 Reed–Solomon 解碼修正錯誤。
  6. 解讀資料——連結、Wi-Fi 登入資訊或聯絡人名片——並提供對應的操作。

整個過程只需要幾毫秒。你可以用我們的線上 QR Code 掃描器親自試試看,它會直接在你的瀏覽器中,針對上傳的圖片、連結或相機畫面執行上述步驟。

靜態與動態 QR Code

靜態 QR Code 直接包含最終內容:網址、Wi-Fi 密碼或文字本身。它可以永久使用、不需要伺服器,也無法被追蹤。動態 QR Code 則包含由服務供應商所擁有的短轉址連結,讓你日後可以更改目的地並統計掃描次數——但一旦訂閱結束,它就會失效。

在 QR.tools 製作的每個 QR Code 都是靜態的:免費、私密且永久有效。如果日後需要更改目的地,請讓 QR Code 指向一個你能掌控的網頁,之後只要更新該網頁即可。

QR Code 可以包含什麼?

由於 QR Code 單純只是儲存文字,文字的格式就決定了手機會如何處理它。標準化的格式包括:

  • 網址——開啟網站(https://…)
  • Wi-Fi——連上網路(WIFI:T:WPA;S:…;P:…;;)——請參考 Wi-Fi QR Code 產生器
  • vCard——儲存聯絡人——請參考 vCard QR Code 產生器
  • 電子郵件、簡訊與電話——透過 mailto:、SMSTO: 和 tel: 開始撰寫訊息或撥打電話
  • 行事曆活動——透過 iCalendar 的 VEVENT 新增活動
  • 地理位置——透過 geo: 座標開啟地圖

重點整理

  • QR Code 是由模組組成的網格,資料周圍有固定的定位、時序與校正圖案。
  • 內容越多,版本越高、圖案越密,最小列印尺寸也越大。
  • 容錯等級(L、M、Q、H)讓 QR Code 即使受損也能讀取——也讓加入 Logo 成為可能。
  • 靜態 QR Code 永久有效且保護隱私;動態 QR Code 可以修改,但必須仰賴服務供應商。

準備好動手做一個了嗎?開啟 QR Code 產生器,幾秒內就能做出帶有專屬配色與 Logo 的 QR Code。

準備好建立你自己的 QR Code 了嗎?

幾秒內就能設計出帶有你的 Logo 與配色的自訂 QR Code——免費且免註冊。

開啟產生器

延伸閱讀