UrsaKit 教學封面:如何做出每次都能掃到的 QR Code

這篇 QR Code 教學要解的,是那些在真實世界裡掃不到、或掃得慢的碼:對比不足、留白區被裁掉、Logo 蓋掉太多模組,或印刷尺寸相對掃描距離太小。下面說明 QR Code 的結構、容錯怎麼運作,以及讓它在屏幕與紙本上都能穩定掃到的設定。

所有內容都在你的瀏覽器裡產生,所以你編進去的網址、Wi-Fi 密碼或聯絡資料都不會被上傳。

01QR Code 裡面有什麼

QR Code 是方形畫布上一格一格的深色與淺色模組。三個大型定位圖案位於角落,讓相機能找到並判斷方向;較小的校正圖案則在表面彎曲或影像歪斜時維持網格可讀。

payload 會連同版本(尺寸,從 21×21 模組起跳)、容錯等級與遮罩樣式一起儲存。掃描器解出模組、還原遮罩,再檢查 Reed-Solomon 容錯碼字。只要損傷在所選容許範圍內,資料就能被完整還原——這就是中間放了 Logo、或一角有磨損仍能掃到的原因。

網格周圍的空白邊界就是留白區。Denso Wave 規定四周要留四個模組寬的邊界;相機靠它把 QR Code 與背景分開,所以把標籤裁到貼邊的 QR Code,即使每個模組都正確也常常掃不到。

02產生 QR Code

  1. 選擇內容類型 — 網址、純文字、Wi-Fi、vCard 聯絡人、Email 或電話。類型決定 payload 怎麼編碼,以及手機掃到之後會提供什麼動作。
  2. 輸入 payload — 網址要包含 scheme(https://)。Wi-Fi 請填 SSID、密碼與加密方式。預覽會跟著每次按鍵重繪,字元計數器則顯示你用掉多少版本容量。
  3. 調整幾何與顏色 — 選擇點形與角落定位圖案的樣式,再設定前景與背景色。請維持深色模組配淺色底、對比要強;不要把顏色反過來,因為多數掃描器預期的是深底淺。
  4. 設定容錯並加上 Logo — 容錯越高越能承受損傷,但容量會變少,可能把 QR Code 推向更大、更密的版本。如果要疊置中 Logo,請控制在大約 20–25% 面積內,並調高容錯等級來補償。
  5. 依媒介決定尺寸並匯出 — 依最終媒介設定匯出尺寸、保留留白區,屏幕用 PNG、印刷與無損縮放用 SVG。如果 PNG 對網頁來說太重,先交給 圖片壓縮工具 處理。

03容錯等級

四個等級與可還原的損傷比例來自 QR Code 標準,Denso Wave 也指出 M(約 15%)是最常被選用的等級。

等級可還原的損傷相對容量適用
L(低)約 7%最高乾淨的數碼屏幕、極小的碼
M(中)約 15%高一般網頁與印刷
Q(四分位)約 25%中有小 Logo 的印刷品、工業標籤
H(高)約 30%最低大面積 Logo,或容易受損的表面

04穩定可用的 payload 格式

QR Code 就只是一段文字;手機作業系統會依 payload 格式決定要做什麼。下面的 Wi-Fi 與 vCard 寫法採用 ZXing 專案整理的 payload 格式。一段你讀不懂的內容,例如權杖或編碼過的字串,可以用 Base64 編碼 / 解碼還原。以下是值得記住的幾種:

  • 網址 — https://example.com/:務必帶 scheme,少了它有些掃描器會把內容當成純文字。
  • Wi-Fi — WIFI:T:WPA;S:NetworkName;P:password;H:false;;,其中 T 是 WPA、WEP 或 nopass。值裡的 ;、,、: 與 \ 要用反斜線跳脫。
  • 電話 — tel:+886912345678。用國際格式,從任何國家都能撥。
  • Email — mailto:name@example.com?subject=Hello&body=Message,值要 URL 編碼。
  • 簡訊 — smsto:+886912345678:訊息內容。
  • vCard — 標準的 BEGIN:VCARD … END:VCARD 區塊。3.0 版支援度最廣。
  • 純文字 — 其它內容;手機會顯示文字並提供複製或搜尋。

payload 越長,QR Code 就會被推向更大、更密的版本,所以很長的網址請縮短,或先把 JSON 壓縮 再編碼。

05印刷與屏幕的尺寸

沒有單一的正確尺寸:它取決於版本、印刷解像度,以及實際掃描距離。Denso Wave 的計算範例示範了做法。50 個字元的 payload 用等級 M,需要 29 模組見方的版本 3;以 400 dpi、每個模組 4 點印刷,單一模組為 0.254 mm,符號就是 29 × 0.254 mm = 7.366 mm;兩側各留四個模組的留白區後,整體約 9.398 mm 見方。

媒介要留意的事
名片縮短 payload,讓版本維持低、模組維持大
傳單或海報依觀看距離決定尺寸,並保留完整留白區
桌牌或菜單用啞面、高對比的紙材,避免反光表面
戶外指標隨距離放大符號,並保留四模組邊界
網站或 Email以實際顯示尺寸輸出圖片;不要讓 CSS 模糊或拉伸

如果空間放不下,Denso Wave 給了三個方向:降低版本、把模組印小一點,或把符號拆成幾個碼。

不要反轉顏色

掃描器預期的是淺底深色模組。深底淺色的 QR Code 在你屏幕上看起來沒問題,但很多裝置會掃不到。

06為什麼你的 QR Code 掃不到

如果一個碼在自己屏幕上沒問題,別人卻掃不到,請依序檢查(Denso Wave 的讀取失敗案例涵蓋模組變形、缺少邊界與疊圖):

  1. 對比 — 深底淺模組會把訊號反過來。改回淺底深模組。
  2. 留白區 — 空白邊界被裁掉了。重新產生並保留至少四個模組的空間。
  3. 尺寸 — 相對掃描距離太小,或是由低解像度 PNG 放大而變模糊。
  4. Logo — 疊圖蓋掉超過約四分之一,或容錯等級太低。
  5. 損傷 — 摺痕、反光或貼紙蓋住定位圖案;等級 H 能承受更多,但三個角必須完整。
  6. payload — 過長的網址會把碼推向很密的版本。縮短連結或減少資料。
  7. 格式 — Wi-Fi payload 少了分號或漏了跳脫字元,就會被當成純文字解讀。

07靜態還是動態 QR Code

靜態碼——也就是這個工具產生的——把資料存在圖裡。它離線可用、永不過期、也無法修改:目的地換了就得重印。

動態碼編的是一段很短的轉址網址,目的地留在伺服器上。這讓碼可以事後修改、也能做掃描分析,代價是多了一個依賴。如果轉址服務終止或訂閱到期,碼就失效了。需要長期保存的印刷品,靜態是比較安全的選擇。

08資料來源

常見問題

QR Code 會過期嗎?

靜態 QR Code 永遠不會過期——資料就在圖裡。動態碼依賴轉址服務,服務終止就失效。

容錯等級該選哪一個?

一般用途選 M;中間要放 Logo、或會印在容易磨損的地方,選 Q 或 H。等級越高,可用容量越少。

為什麼我的 QR Code 掃不到?

常見原因是對比不足、少了留白區、圖太小不符掃描距離,以及 Logo 或破損蓋住定位圖案。

可以印在深色底上嗎?

只有淺色模組配深色底、而且掃描器支援反相時才可行,但多數掃描器不支援。請維持深色模組配淺色底。

我的 Wi-Fi 密碼會被存到哪裡嗎?

不會。payload 是在你的瀏覽器裡編碼進圖片的,沒有任何內容被上傳。

該匯出 PNG 還是 SVG?

印刷、以及任何不能被模糊放大的情境用 SVG;輸出端期待點陣圖、或你需要固定像素尺寸時用 PNG。

印刷的 QR Code 最小可以多小?

沒有固定下限。從印刷解像度回推可讀的模組尺寸,保留四個模組的留白區,再用實際距離測試印出來的碼。

返回文章列表

相關文章

相關工具