QR Code 缺角、沾到污漬或印刷模糊時,確實可能照常被讀取,但並非任何損壞都能修復。它會把原始內容轉成資料碼字,再加入一批可供驗證與重建的錯誤更正碼字。掃描器只要仍取得足夠資訊,就能找出錯誤位置並還原部分遺失資料。這套機制主要採用里德-所羅門碼,而實際成功率還取決於容錯等級、損壞位置、影像清晰度與掃描軟體。

QR Code 不只是黑白方格

肉眼看到的是黑白模組,但一張 QR Code 同時包含多種功能區。三個醒目的定位圖樣協助相機判斷方向與大小;時間圖樣提供格線節奏;格式資訊記錄錯誤更正等級與遮罩;其餘區域才依特定順序存放資料和錯誤更正碼。

掃描時,相機不會把每個黑格直接當成一個字元。系統先校正透視、亮度與旋轉,判斷每個模組是黑是白,再解除遮罩、讀取碼字,最後執行錯誤檢查與更正。只要早期辨識偏差太大,即使理論上的冗餘量足夠,也可能因定位失敗而根本進不了解碼階段。

里德-所羅門碼在做什麼

冗餘不是原文的簡單備份

最直覺的備援方式,是把同一份資料複製好幾次,但效率很差。里德-所羅門碼採取更精巧的方法:把一組資料視為有限體中的數值,透過多項式運算產生額外的檢查碼字。這些檢查碼不是某一小段原文的副本,而是整組資料共同計算出的結果。

解碼器收到資料後,可以重新檢查這些關係。若結果不一致,便產生所謂的症候值,用來推導哪些碼字可能出錯以及應修正成什麼。因為檢查資訊分散反映整組內容,即使連續幾個碼字受損,也不必剛好找到一份未受損的副本。

更正錯誤與補回遺失並不相同

如果掃描器知道某些碼字的位置已無法辨識,這稱為抹除;若它讀到一個看似正常、實際卻錯誤的值,則是未知位置的錯誤。已知遺失位置通常比較容易處理,因為系統少了一項要猜的資訊。一般而言,同樣數量的檢查碼能處理的抹除數會多於未知錯誤數。

實際影像中,污漬可能同時造成兩者。有些格子低於可信度門檻而被標為不可用,有些則被誤判成相反顏色。這也是「損壞面積看起來差不多」的兩張 QR Code,掃描結果可能完全不同的原因。

四種錯誤更正等級

QR Code 標準提供 L、M、Q、H 四個等級。常見的概略恢復比例依序約為 7%、15%、25% 與 30%,但這些數字不能直接理解為「任意遮住同樣面積都能掃」。它們描述的是碼字層級的設計能力,實際版面還包含功能圖樣,資料也會分成多個區塊處理。

較高等級會配置更多錯誤更正碼字,因此通常較能承受污損,但代價是可用資料容量下降。若內容長度不變,產生器可能必須選用更高版本,讓整張碼變得更大、模組更多;若實際印刷尺寸不變,每個小格反而會縮小,對低解析度相機或印刷誤差更敏感。

因此,H 級不是任何情境都必然最好。乾淨、尺寸有限的票券可能適合較低等級,以保留較大的模組;戶外標示、包裝或可能被刮傷的標籤,才較有理由使用高冗餘設定。選擇時應同時考慮環境、資料長度和實體尺寸。

為什麼缺一角有時能掃、有時不行

損壞位置比形狀更重要

若缺角碰到定位圖樣,掃描器可能無法正確判斷邊界與方向。即使資料區仍保留大半,也可能無法建立可靠格線。相反地,若損壞集中在一般資料區,且沒有超過相關區塊的更正能力,成功機會通常較高。

格式資訊和版本資訊也很重要。標準會在特定位置重複部分資訊,提供一定備援,但遮掉關鍵區域仍會增加失敗風險。網路上常見在中央放置標誌的做法,之所以有時可行,是因為設計者預先選了較高更正等級,並把遮擋限制在可承受範圍;它不是 QR Code 天生保證的裝飾空間。

連續破損未必等於平均破損

QR Code 會將資料分區並交錯排列,使局部污損不一定全落在同一資料段。不過,版面結構、版本和區塊配置仍會影響結果。隨機散落的少量錯點、整塊貼紙遮蓋,以及沿著邊緣切掉一條,對解碼器造成的困難並不相同。

此外,反光、失焦與動態模糊未必只破壞表面上看到的區域。反光會使大片黑格變白,失焦則讓相鄰模組混合,造成整張圖的判讀可信度下降。錯誤更正能修資料,卻不能無限彌補不可靠的影像取樣。

製作與使用時如何提高可靠度

首先要保留完整的靜區,也就是 QR Code 四周沒有圖案與文字干擾的留白。靜區讓掃描器辨識符號邊界,裁切過緊往往比少量資料區污點更致命。其次應維持足夠對比,傳統深色前景配淺色背景最穩定;漸層、透明材質與高反光表面都可能降低辨識度。

印刷時應依觀看距離與設備決定尺寸,不要只看螢幕預覽。內容愈長、版本愈高,模組愈密;若標籤很小,縮短網址或文字通常比一味提高容錯更有效。也不要任意拉伸圖片,非等比例變形會破壞方格幾何。

如果要加標誌,應使用支援錯誤更正設定的產生器,控制遮擋大小,避開定位、時間與格式區域,並以多款手機、不同距離、角度和光線實測。測試乾淨的螢幕圖片並不足以代表實際包裝、海報或票券。

錯誤更正的合理界線

里德-所羅門碼能修復的是有限量的碼字錯誤,不是把任意殘片還原成完整內容。若錯誤超出區塊能力,解碼通常會失敗,而不是猜出最相似的訊息。這項特性很重要:可靠的系統寧可回報無法讀取,也不應輕易輸出錯誤內容。

錯誤更正也不等於安全機制。它可以對抗刮痕和讀取雜訊,卻無法判斷 QR Code 指向的內容是否可信。惡意人士若直接替換整張碼,掃描器仍可能正常讀出。因此在付款、登入或提供個資前,仍要確認顯示的收款方、網域與操作內容。

結語

QR Code 的耐損能力來自資料編碼、交錯配置與里德-所羅門錯誤更正共同運作。高容錯等級加入更多冗餘,卻會犧牲容量或提高圖樣密度;缺損能否修復,也不只由面積決定,還要看是否傷及定位區、錯誤如何分布,以及相機能否先取得清楚格線。把它視為有上限的工程備援,而非「遮掉三成必定可掃」的保證,才能做出更可靠的 QR Code。