QR Code 糾錯等級詳解:L、M、Q 和 H
QR Code 自帶糾錯能力,所以即使碼的一部分弄髒、刮花或被遮住,也仍然能讀出來。糾錯分四個等級:L 最多能恢復約 7% 的資料,M 約 15%,Q 約 25%,H 約 30%。等級越高,越能在中間放 Logo 或印在粗糙的材料上,代價是圖案更密。大多數印刷用的碼,預設選 M 就好;加 Logo 時用 H。
糾錯是怎麼工作的
QR Code 使用裡德-所羅門碼(Reed–Solomon),和保護 CD 光碟資料、太空通訊資料的數學方法同屬一類。生成 QR Code 時,會在內容之外附加額外的「修復」資料。如果有些模組(那些小方塊)讀不出來,掃描器就用修復資料把缺失的部分重建出來。附加多少修復資料,取決於你選的等級。
四個等級
| 等級 | 可恢復 | 適用場景 |
|---|---|---|
| L | 約 7% | 乾淨的數字場景,比如顯示在螢幕上的碼;讓圖案儘可能簡單 |
| M | 約 15% | 印刷碼的理想預設值 |
| Q | 約 25% | 可能被磨損或印在粗糙材料上的碼 |
| H | 約 30% | 中間有 Logo 的碼,或用在惡劣環境裡的碼 |
這些百分比是指碼的資料最多可以缺失多少仍能解碼。它們是理想損壞情況下的上限;實際中,如果損壞的位置不對,比如蓋住了角上的三個大方塊,即使沒到上限,碼也可能失效。
代價:密度
修復資料越多,同樣的內容需要的模組就越多。把等級從 L 提到 H,可能讓碼升高好幾個版本,也就是行列更多、方塊更小。在印刷尺寸固定時,方塊越小越難識別。所以等級高並不自動更好:它是一份要佔用空間的保險。
如果既要 Logo 又要印得小,就縮短內容。動態 QR Code 裡只存一個短連結,能給高糾錯等級留出餘地,又不會讓方塊變得很小。
Logo 與糾錯
中間的 Logo 是故意遮住了一部分模組。高糾錯等級(Q 或 H)能彌補被遮住的區域,但只在它的上限之內。把 Logo 控制在碼寬的五分之一左右或更小,放在正中、遠離角上的三個大方塊,並且一定要掃一下打樣。如果掃不出來,先縮小 Logo,再考慮調其他設定。
怎麼選等級
- 碼顯示在螢幕上,乾淨且夠大? L 或 M。
- 印在紙上,用在室內? M。
- 印在紙板、布料、瓶子或任何會被磨損的東西上? Q。
- 要加 Logo? H,配一個不大的 Logo,並且測試。
- 要印得很小? 用 M,內容儘量短,而不是用 H 配一個很密的圖案。
尺寸和等級同樣重要:印刷尺寸指南按掃描距離給出了最小寬度。
其他值得了解的上限
一個 QR Code 最多能存約 7,089 個數字、4,296 個字母數字字元或 2,953 個位元組,而且只有在最低糾錯等級下才能達到。實際上,超過幾百個字元的碼,在普通印刷尺寸下用手機就很難掃,這也是應該連結到一個頁面、而不是把文字直接放進碼裡的另一個原因。
常見問題
我該用哪個糾錯等級?
大多數印刷碼用 M。加 Logo 或預計會磨損時用 H,只有乾淨、夠大、顯示在螢幕上的碼才用 L。
糾錯等級越高,QR Code 越好掃嗎?
不一定。當碼的一部分會被遮住或損壞時,它有幫助;但它會讓圖案更密,印得小的時候反而更難識別。根據場景選等級,而不是選最高的那個。
為什麼我加了 Logo 的 QR Code 掃不出來?
很可能是 Logo 太大,或者蓋住了關鍵區域。把它縮到碼寬的五分之一左右或更小,挪到正中,使用 H 等級,加大碼的印刷尺寸,再測試一次。如果還是不行,就排查一下其他常見原因。