QR Code是什麼?髒污也能讀取的原理

約 11 分鐘 · 更新:2026年10月23日

QR Code是把黑白小方塊排成縱橫的格子,用0和1表示文字與數字的條碼。它在1994年為了管理汽車零件,誕生於DENSO的開發部門(現在的DENSO WAVE)。資料中加了「修復損壞處用的備用資訊」,所以就算一部分髒了,也能還原讀取。不過,讀得到和安全是兩回事,打開之前先確認連結的去處很重要。

這篇文章可以了解

  • QR Code誕生的原因,以及規格的概要
  • 3個大方塊等固定圖案的作用
  • 髒了也能讀的「錯誤更正」原理
  • 手機相機讀取QR Code的流程
  • 如何保護自己,避開利用QR Code的詐騙

先備知識:二進位(只用0和1表示數字的方法)。在「電腦怎麼用0和1計算?」中有說明。

生活中的例子

在商店用手機付款、火車或飛機的電子票、餐廳點餐、Wi-Fi的設定。這些都只要把手機相機對準,就能讀入很長的號碼或網頁的網址。

QR Code的內容,只是一串文字或數字。如果內容是網頁的網址,手機就會試著打開那個網頁。如果是付款用的號碼,就會進入付款畫面。決定要做什麼的不是QR Code,而是讀取它的App。

QR Code從哪裡來

QR Code在1994年,誕生於汽車零件製造商DENSO的開發部門。這個部門在2001年獨立出來,成為現在的DENSO WAVE。帶領開發的是原昌宏先生,團隊從2個人開始。

當時的工廠,在附於零件箱上的標籤(看板)使用條碼。但條碼能放的資訊少,1件物品必須貼上好幾條來讀取。因此,大家需要一種能快速讀取大量資訊、又不怕髒污的條碼。

QR是Quick Response(快速回應)的縮寫,名稱代表以快速讀取為目標。另外,「QR Code」是DENSO WAVE的註冊商標。另一方面,該公司宣布,對於符合規格的QR Code,不行使所持有的專利權。因此,任何人都不必取得許可,就能製作和使用QR Code。

QR Code的規則在1997年成為自動辨識產業團體AIM的規格。1999年成為日本的JIS X 0510,2000年成為國際標準ISO/IEC 18004。ISO/IEC 18004之後也持續修訂,截至2026年10月的最新版是2024年版。

原理1:黑白方塊代表0和1

把QR Code放大,會看到同樣大小的小方塊,像方格紙一樣排列。這1格稱為模組。基本上,黑色模組代表1,白色模組代表0。

縱橫排列的模組數量,決定QR Code的大小。這種大小的級別稱為版本。最小的版本1是縱橫各21個。版本每升1級,縱橫各增加4個,最大的版本40是177×177個。

能放的量,會隨放入的文字種類而改變。數字只有0〜9共10種,所以3位(1000種)可以合起來用10位元(1024種)表示。英文字母或漢字種類多,1個字就要用較多位元。最大的版本40能放的量如下(錯誤更正最弱的等級L時。等級稍後說明)。

放入的文字最多的字數
只有數字7,089位
英數字(數字、大寫英文字母、部分符號)4,296字
位元組(8位元的值)2,953個
漢字1,817字

以日文為例,可以用漢字專用的寫法(漢字模式)放入,也可以當作位元組的排列放入。漢字模式使用的是Shift JIS這種日文字元表的編號。讀取端如果弄錯是用哪一種字元表寫的,就會出現亂碼。

原理2:固定的圖案是「讀取用的記號」

QR Code的圖案並不全是資料。在固定的位置,放有給讀取機器用的記號。下圖中只有⑤是承載資料的部分,其他都是記號。

QR Code(版本2)的各部分:定位圖案、時序圖案、校正圖案、格式資訊、資料、空白區 ① ① ① ④ ② ② ③ ⑤ ⑥ ① 定位圖案(3個) ② 時序圖案 ③ 校正圖案 ④ 格式資訊(色帶) ⑤ 資料與錯誤更正的資訊 ⑥ 空白區(4個模組寬)
版本2(25×25模組)QR Code的各部分。印刷時為黑色的記號(①〜③)以塗滿表示。⑤的點是隨機的範例,為了和記號區分而用淺色表示。④只用色帶標出位置。省略的部分:格式資訊中的0和1、遮罩、資料排列的順序。
  • ① 定位圖案:位於3個角落的大方塊。它告訴讀取端,條碼在哪裡、朝哪個方向、有多大。英文稱為finder pattern。
  • ② 時序圖案:連接大方塊、黑白交替的一列。它像尺一樣,用來量出1格的間隔。
  • ③ 校正圖案:小方塊,出現在版本2以上。它是修正斜拍時變形的線索。版本越大數量越多,版本40有46個。
  • ④ 格式資訊:記錄錯誤更正的強度,以及稍後說明的「遮罩」編號。因為是讀取不可缺少的部分,同樣的內容放在2個地方。
  • ⑥ 空白區(靜區,quiet zone):四周需要4個模組寬、什麼都沒有的帶狀區域。這是為了把條碼和周圍的文字或圖畫區分開來。

版本7以上,還會加上記錄版本編號的欄位。圖中省略。

3個大方塊是「1:1:3:1:1」的理由

定位圖案是黑框、白框、黑芯疊在一起的形狀。沿著通過中心的線看,黑、白、黑、白、黑的寬度是1:1:3:1:1。不論橫向、縱向或斜向,只要通過中心,這個比例都不變。

在通過定位圖案中心的線上,黑、白、黑、白、黑的寬度是1:1:3:1:1 橫 斜向 1 1 3 1 1 寬 只要線通過中心,不論哪個方向 寬度比都是 1:1:3:1:1
定位圖案由7×7的黑框、5×5的白框、3×3的黑芯組成(圖中以塗滿表示黑色)。只要線通過中心,即使是斜向,寬度比仍是1:1:3:1:1(每段長度都以相同比例拉長)。省略的部分:圍繞圖案、1個模組寬的白色帶。

因此,即使條碼轉了方向,讀取端只要尋找「這種寬度比的排列」,就能找到記號。根據DENSO WAVE的說明,開發團隊調查了傳單、雜誌和紙箱上的印刷。然後選出在印刷品中最不容易出現的比例1:1:3:1:1。這是為了即使周圍有照片或文字,也不容易認錯記號。

大方塊有3個,是因為有3個就能確定唯一的方向。從沒有方塊的角落在哪裡,就知道條碼的右下角。就算拍到上下顛倒,也能轉回正確的方向讀取。

原理3:髒了也能讀的「錯誤更正」

QR Code除了資料以外,還加上了修復損壞部分用的備用資訊。即使因髒污或刮傷而讀錯模組,也能從備用資訊重新算出原本的資料。這種機制稱為錯誤更正。

「CRC是什麼?」中說明的CRC,是發現「有」錯誤的機制。如果是通訊,發現後請對方重送就好。但是,印刷出來的QR Code,沒有可以請求重送的對象。所以要使用只靠接收端就能修正的方法。這種方法稱為前向錯誤更正(FEC)。

QR Code把資料分成每8位元一塊來處理。這種塊稱為碼字。備用的碼字,是從資料的碼字用固定的計算產生的。

這種計算方法,就是里德和所羅門在1960年發表的里德-所羅門碼。除了QR Code,CD和DVD也用它來修正刮傷造成的錯誤。能修正錯誤的編碼統稱為錯誤更正碼(ECC),里德-所羅門碼是其中的代表之一。

4種強度(錯誤更正等級)

製作QR Code的人,可以從4個等級中,選擇要加多少備用資訊。DENSO WAVE列出各等級能修正的量如下。

等級可還原的量(以碼字數計)
L約7%
M約15%
Q約25%
H約30%

這個比例是以碼字的數量計算,而不是紙面的面積。1處髒污也可能跨到2個碼字,該公司也提醒「依髒污的狀況,有時無法還原」。另外,①〜④的記號如果髒了,即使資料完好,也可能讀不出來。

用文字說明里德-所羅門碼

里德-所羅門碼會從資料產生「符合固定規則的備用值」。接收端讓剩下的值符合規則,反推出損壞的值。下面不用數學式,用一個比喻來想想看。

在比喻中,知道消失的位置時,1個備用值就能修正1個。不知道哪裡變了時,還得找出「哪個是錯的」,所以需要2個備用值。QR Code各等級的比例,是以不知道位置的錯誤來計算的。因此,能修正約30%的等級H,全體有一半以上是備用資訊。

備用資訊越多,越不怕髒污,但同樣大小能放的資料就越少。例如版本1能放的數字,等級L是41位,等級H是17位。根據DENSO WAVE的說明,在工廠等容易髒污的地方,有時會選擇Q或H。

原理4:用遮罩讓圖案平均

資料直接排列,有時會出現整片全白或全黑的大區塊。區塊太大,就不容易數出格子的邊界。也可能碰巧出現類似定位圖案的圖案。

因此,要在資料部分疊上固定的圖案,把黑白互換。這個圖案稱為遮罩。疊的方法是XOR這種計算:2個相同就是0(白),不同就是1(黑)。

遮罩:用XOR把棋盤格疊到資料上,白色的大區塊就會消失 資料 成片的0 遮罩 棋盤格 結果 區塊消失 ⊕ = = 1 = 0 ⊕:相同為0,不同為1 對結果再疊一次遮罩,就會還原
6×6格的範例。左上一大片的0(框起來的地方),疊上棋盤格的遮罩後就消失了。塗色的格(印刷時為黑)當作1,空白的格(印刷時為白)當作0,逐格做XOR。實際的遮罩有8種,不會套用在記號的部分(①〜④)。省略的部分:套用在格式資訊上的另一種遮罩。

只有遮罩的黑色處,資料的黑白會反轉。讀取端再疊一次同樣的遮罩,反轉就會抵消,回到原本的樣子。XOR的計算,也可以用位元運算計算工具試試看。

遮罩的圖案有8種。製作端會8種全部試過,用分數挑出大區塊和容易混淆的圖案較少的那一種。用了哪一種,會寫在④的格式資訊裡。

手機讀取的流程

從把相機對準到出現文字為止,手機內部會依序進行以下的事。這裡省略細節,只說明流程。

  1. 拍照:相機的零件(影像感測器)把光的亮度,變成每個點的數字(「影像感測器是什麼?」)
  2. 分成黑白:決定亮度的分界,把每個點分成白或黑
  3. 尋找3個方塊:尋找1:1:3:1:1的排列,得知條碼的位置、方向和大小
  4. 修正變形:從斜角拍攝,正方形會拍成梯形。從方塊和校正圖案的位置,用計算修正成從正面看的形狀
  5. 讀取格子:用時序圖案量出格子的間隔,逐格讀成0或1
  6. 讀取格式資訊:得知錯誤更正的等級和遮罩的編號
  7. 移除遮罩:疊上同樣的遮罩,還原成原本的資料
  8. 修正錯誤:用里德-所羅門碼,修正因髒污而變掉的碼字
  9. 還原成文字:讀取寫法種類(數字、英數字、位元組、漢字)的標記和字數,還原成文字

在手機上,這些步驟一瞬間就完成。iPhone的相機等,會先在畫面上顯示讀到的連結,點一下才會打開。這個「打開前的一瞬間」,就是防範接下來要說明的詐騙的重要時刻。

小心利用QR Code的詐騙

QR Code的內容,人的眼睛讀不出來。有些詐騙就利用這個性質,把人引到假網站。假冒真實公司、盜取密碼等資料的手法,稱為網路釣魚。利用QR Code的手法,英文也稱為「quishing」。

以日本為例,日本的防範網路釣魚協議會在2024年8月發出提醒。內容是用假冒信用卡公司的電子郵件中的QR Code,引導到假網站的手法。日本的IPA(資訊處理推進機構)也說明,曾在看板、傳單和郵寄物上發現有害的QR Code。美國FBI在2022年1月,警告了真的QR Code被換成假QR Code的手法。

整理各機構的呼籲,重點如下。

  • 打開之前,先確認畫面上顯示的URL(網址)。小心只差1個字的假名稱
  • 不要從電子郵件或簡訊(SMS)收到的QR Code登入。從官方App,或事先存好的書籤打開
  • 街上張貼的QR Code,要看看上面有沒有被貼上另一張貼紙
  • 讀取後的頁面如果要求輸入密碼或卡號,先停下來

不過,只看URL,有時也無法斷定是真的。日本的防範網路釣魚協議會也表示,只靠確認URL,無法完全防止受害。養成從官方App打開的習慣,再搭配多因素驗證(密碼之外再多一種確認的方法),才比較可靠。假網站和鎖頭圖示的關係,在「HTTPS是什麼?」中說明。

QR Code的同類

Micro QR Code是只有1個定位圖案的小型版本。空白區只要2個模組寬,所以可以印在小零件等狹窄的地方。最大的M4也只有17×17模組,最多只能放35位數字。

rMQR Code是長方形的QR Code。它由DENSO WAVE開發,2022年5月以ISO/IEC 23941成為國際標準。它也能印在細長的地方,最大尺寸(17×139模組)最多可放361位數字。

常見的誤解

誤解:大家一直製作下去,QR Code總有一天會不夠用

實際上,QR Code不是像電話號碼那樣分配出去的號碼。它是把內容的文字,按照固定規則變成圖案。即使是最小的版本1、等級L,也能放17個位元組。1個位元組有256種,所以組合超過10的40次方種。同樣內容的QR Code不管有幾張,都沒有關係。

誤解:中間的標誌(logo),是放在QR Code預留的「logo專用位置」

實際上,QR Code沒有logo專用的位置。被logo遮住的模組,每次讀取時都靠錯誤更正來修復。不過,能修正的量有限。如果遮住3個大方塊或格式資訊,即使資料完好也讀不出來。DENSO WAVE也提醒,在條碼上疊加文字或圖畫,可能會讀不出來。要放logo,基本做法是提高錯誤更正等級,並實際用幾台裝置確認能否讀取。

誤解:能順利讀取的QR Code,內容也很安全

實際上,「讀得到」只代表從圖案正確取出了文字。錯誤更正保護的,是髒污和刮傷造成的錯誤,而不是製作者的惡意。放入假網站URL的QR Code,也能清楚讀出來。安全與否,要在讀取之後,從要打開的去處來判斷。

從數字來看

數字代表什麼
1994年QR Code開發的年份
2024年現行國際標準 ISO/IEC 18004 的版本(截至2026年10月)
21×21 〜 177×177從版本1到版本40的縱橫模組數
7,089位版本40、等級L能放的數字最多位數
約7〜30%錯誤更正等級L到H可還原的碼字,占全體的比例

進一步學習

接著閱讀

系列「資安與生活中的 IT」的文章

  1. 密碼為什麼會被破解?長度和不重複使用為何重要
  2. 雲端運算是什麼?資料和應用程式在「哪裡」運作
  3. 加密是什麼?對稱式加密與公開金鑰加密的原理
  4. 生成式AI怎麼運作?大型語言模型(LLM)的原理
  5. VPN是什麼?保護通訊的通道原理與做不到的事
  6. 機器學習是什麼?電腦從資料中找出規則的原理
  7. 資料中心是什麼?支撐雲端與AI的建築物內部
  8. 防火牆是什麼?讓通訊通過或擋下的機制
  9. QR Code是什麼?髒污也能讀取的原理
  10. 網路釣魚是什麼?假郵件、假網站的分辨方法與對策
  11. 指紋辨識、臉部辨識的原理是什麼?手機如何認出本人?
  12. 惡意程式是什麼?病毒、勒索軟體的差異與防範對策

這個領域的題目: 資訊理論與編碼基礎

參考資料

入門解說一覽