二維碼解析
線上識別和解碼二維碼圖片,支援拖曳上傳、貼上圖片,純瀏覽器端處理保護隱私
拖曳二維碼圖片到此處
支援 PNG、JPG、GIF、BMP、WebP 等常見圖片格式
也可以使用 Ctrl+V 貼上剪貼簿中的圖片
什麼是二維碼解析?
QR Code 解碼工具用來讀取圖片中的 QR Code,並提取其中儲存的資料。結果可能是網址、純文字、Wi-Fi 設定、聯絡人資訊、付款參照或其他編碼字串。它適合在開啟 QR Code 前先查看內容,也適合從截圖、文件、海報或客服回報圖片中提取資訊,排查手機掃描失敗的原因。需要注意的是,能被解碼不代表內容安全;尤其是連結,應先確認網域和跳轉目標,避免誤入釣魚頁、過期資源或異常重新導向。圖片辨識會在瀏覽器本地完成。
使用說明
使用方式
- 點選上傳區選擇 QR Code 圖片,或拖曳圖片
- 也可以使用 Ctrl+V(Mac 為 Cmd+V)從剪貼簿貼上圖片
- 工具會自動偵測並解碼 QR Code 內容
- 解碼結果會顯示在下方,並自動判斷內容類型(網址或文字)
- 點選「複製結果」按鈕將解碼內容複製到剪貼簿
解碼提示
- 使用清晰的圖片,確保 QR Code 完整可見,且周圍保留足夠的留白邊距,以利偵測。
- 解碼後的連結請謹慎處理:先預覽內容並確認網域,再決定是否開啟不熟悉的 QR Code 網址。
使用場景
技術原理
QR Code 解碼是一個多階段的影像處理流程,涵蓋定位圖中的碼、校正透視變形、二值化為黑白、讀取模組格線、套用糾錯以及按編碼模式解碼資料。本工具使用 jsQR 函式庫,整條流程以 JavaScript 在瀏覽器主執行緒上完成。 第一階段是定位三個定位圖案——QR Code 左上、右上、左下角的 7x7 三層方中方式標記。jsQR 掃描影像中符合 1:1:3:1:1 比例的黑白像素交替序列(此為定位圖案截面特徵),不受旋轉影響。三個定位圖案確認後,它們的質心就確定了碼的邊界四邊形。 透視校正透過四個角點計算出的單應性矩陣,將四邊形映射到正方形格線。這一步至關重要,因為 QR Code 很少被正面拍攝——校正能還原扭曲,讓每個模組(代表一個位元的黑色或白色小方格)落在規則的格線上。模組大小由定位圖案尺寸和版本號決定,版本號從定位圖案旁的格式資訊條帶讀取。 影像二值化將灰階像素值轉換為純黑白。jsQR 採用局部閾值法:不是用單一全域閾值(在不均勻光照或陰影下會失效),而是對影像小區域分別計算閾值,使其能抵抗智慧型手機照片中常見的漸變和暗角。 糾錯使用 ISO/IEC 18004:2015 規定的 Reed-Solomon 碼。QR Code 支援四個糾錯等級:L(約 7% 恢復)、M(約 15%)、Q(約 25%)和 H(約 30%)。資料碼字與糾錯碼字以區塊交錯排列;jsQR 進行症候計算並套用 Berlekamp-Massey 演算法,在碼的額定容量內定位並修正錯誤。若損壞超過糾錯等級,解碼會失敗而不會傳回損壞資料。 最後,解碼後的位元串流根據前四個位元中的編碼模式指示進行解讀:數字模式(0001,每 3 位數 10 位元)、字母數字模式(0010,每 2 字元 11 位元)、位元組模式(0100,每字元 8 位元,通常為 UTF-8 或 Latin-1)、漢字模式(1000,每字元 13 位元,使用 Shift JIS)或 ECI 模式(0111,擴展通道解讀,用於指定字元集)。工具會顯示解碼字串,並自動判斷其為 URL(嘗試 new URL() 解析)或純文字。
- 定位圖案偵測:jsQR 掃描行列中符合 1:1:3:1:1 比例的黑白像素交替序列——三個大致呈直角排列的此類圖案可確認 QR Code 的存在與方向,不受旋轉影響。
- 透視校正:從偵測到的四個角點計算單應性矩陣,將傾斜的四邊形映射到正方形格線——這一步至關重要,因為實際拍攝的照片很少是正面的。
- 自適應二值化:局部閾值法將影像分成小區域並分別計算閾值,使解碼器能抵抗不均勻光照、陰影和漸變——這些情況下全域閾值會失效。
- Reed-Solomon 糾錯(ISO/IEC 18004):四個等級(L/M/Q/H)提供 7%–30% 的資料恢復能力——Berlekamp-Massey 演算法定位錯誤位置,Forney 演算法計算修正量;若損壞超過等級容量,解碼會乾淨地失敗。
- 編碼模式偵測:前四個資料位元指示模式——數字模式(0001,適用於數字高效編碼)、字母數字模式(0010,適用於 A-Z 0-9 及符號)、位元組模式(0100,適用於任意 UTF-8/Latin-1 資料)、漢字模式(1000,適用於 Shift JIS)和 ECI 模式(0111,用於指定字元集)。
- 版本與模組格線:QR Code 版本從 1(21x21 模組)到 40(177x177),每增加一個版本每邊增加 4 個模組——版本號從定位圖案附近的格式資訊條帶讀取,模組數量決定取樣格線密度。
- 瀏覽器端執行:影像被繪製到隱藏的 Canvas 元素上,getImageData() 提取原始 RGBA 像素緩衝區,jsQR 完全在瀏覽器主執行緒上處理——影像資料不會上傳到任何伺服器,Canvas 在解碼完成後由垃圾回收機制清除。
範例
URL QR code
掃描內容: https://example.com
類型: URL
動作: 掃描器確認後在系統瀏覽器中開啟連結純文字 QR code
掃描內容: This is text content
類型: 文字
動作: 掃描器將文字複製到剪貼簿,或顯示在結果頁面中WiFi 認證 QR code
掃描內容: WIFI:T:WPA;S:NetworkName;P:Password;;
類型: WiFi (WPA2)
動作: 支援此格式的手機會跳出「連線到 NetworkName?」提示,並使用該密碼加入網路vCard 聯絡人名片
掃描內容: BEGIN:VCARD\nVERSION:3.0\nFN:Jane Doe\nTEL:+1-555-0142\nEMAIL:jane@example.com\nEND:VCARD
類型: 聯絡人名片
動作: 手機會根據解析出的欄位提示建立新的通訊錄項目常見問題
圖片會被上傳以便解碼嗎?
不會。解碼是在你的瀏覽器中透過 WebAssembly 或純 JS 進行。圖片位元組是在本機讀取的,不會傳送到任何伺服器。
支援哪些輸入方式?
可以上傳檔案、從剪貼簿貼上圖片,或直接拖放圖片檔。圖片會在你的瀏覽器中處理,絕不會上傳到任何伺服器。
解碼後會傳回什麼?
原始的解碼文字。本頁會偵測結果是 URL 或純文字,並顯示對應的標籤。若是 URL,會提供「開啟 URL」按鈕。
為什麼我的 QR 碼解不開?
常見原因:模糊、對比度不足、反光、透視傾斜,或是條碼被部分遮擋。請靠近裁切、增加亮度、把手機與表面保持垂直且穩定。錯誤等級 L 的 QR 碼幾乎無法忍受任何損傷;H 級則可承受相當程度的遮擋。
可以解螢幕截圖與 PDF 中的 QR 碼嗎?
螢幕截圖通常都能順利解碼,因為對比完美又沒有透視變形。對於 PDF,請先把 QR 區域擷取成圖片再上傳。
我應該打開 QR 碼裡的每個 URL 嗎?
不應該。QR 碼是已知的釣魚途徑(俗稱「quishing」),因為 URL 被藏在圖像中。打開前請先檢查解碼出的 URL——本頁會顯示完整 URL,方便你看清網域。要小心拼字相近的網域、IP 位址,以及隱藏真實目的地的縮網址。
可以一次解一張圖裡的多個 QR 碼嗎?
本頁每張圖只偵測一個 QR 碼。若一張圖裡有多個碼,請各自裁切後分別上傳,可獲得最穩定的結果。