二维码解析
在线识别和解码二维码图片,支持拖拽上传、粘贴图片,纯浏览器端处理保护隐私
拖拽二维码图片到此处
支持 PNG、JPG、GIF、BMP、WebP 等常见图片格式 也可以使用 Ctrl+V 粘贴剪贴板中的图片
什么是二维码解析?
二维码解码工具用于读取图片中的二维码,并提取其中保存的数据。结果可能是网址、普通文本、Wi-Fi 配置、联系人信息、支付标识或其他编码字符串。它适合在打开二维码前先查看内容,也适合从截图、文档、海报或客服反馈图片中提取信息,排查手机扫码失败的原因。需要注意的是,能被解码不代表内容安全;尤其是链接,应先确认域名和跳转目标,避免误入钓鱼页面、过期资源或异常重定向。图片识别过程在浏览器本地完成。
使用方法
使用步骤
- 点击上传区域选择二维码图片,或拖放图片
- 你也可以使用Ctrl+V(Mac上为Cmd+V)从剪贴板粘贴图片
- 工具将自动检测并解码二维码内容
- 解码结果出现在下方,并自动检测内容类型(URL或文本)
- 点击'复制结果'按钮将解码内容复制到剪贴板
解码技巧
- 使用清晰的图片,确保二维码完整可见且周围有足够的静区,以便可靠检测。
- 谨慎对待解码的链接。在打开不熟悉的二维码URL之前,预览文本并验证域名。
使用场景
技术原理
第一阶段是定位三个定位图案——每个二维码左上角、右上角和左下角的标志性 7×7 方中套方中套方标记。jsQR 扫描图像中匹配定位图案横截面特征(1:1:3:1:1 比例)的黑白像素交替序列,不依赖旋转角度。定位三个定位图案后,其质心定义了二维码的边界四边形。
透视校正使用从四个角点计算的单应性矩阵将四边形变换为正方形网格。这一步至关重要,因为二维码很少被正面拍摄——校正可以将二维码“展平”,使每个模块(代表一个比特的黑色或白色方块)落在规则网格上。模块尺寸由定位图案尺寸和版本号确定,版本号从定位图案旁的格式信息条带中读取。
图像二值化将灰度像素值转换为纯黑白。jsQR 使用局部阈值方法:不是单一全局阈值(在不均匀光照或阴影下会失败),而是对图像的小区域计算阈值,使其对智能手机照片中常见的渐变和暗角具有鲁棒性。
纠错使用 ISO/IEC 18004:2015 规定的 Reed-Solomon 码。二维码支持四个纠错等级: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 比例的黑白像素交替序列——三个近似直角排列的定位图案确认二维码的存在和方向,不受旋转影响
- 透视校正:从检测到的四个角点计算单应性矩阵,将倾斜的四边形映射到正方形网格——这一步至关重要,因为实际拍摄的照片很少正面捕获二维码
- 自适应二值化:局部阈值将图像分成小区域并计算每个区域的阈值,使解码器对不均匀光照、阴影和渐变具有鲁棒性,而全局阈值无法处理这些情况
- 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,用于字符集指定)
- 版本和模块网格:二维码版本从 1(21×21 模块)到 40(177×177),每个版本每边增加 4 个模块——版本从定位图案旁的格式信息条带读取,模块数决定采样网格密度
- 浏览器本地执行:图像绘制到隐藏的 Canvas 元素,getImageData() 提取原始 RGBA 像素缓冲区,jsQR 在浏览器主线程中完成全部处理——不上传任何图像数据到服务器,解码完成后 canvas 被垃圾回收
示例
URL 二维码
扫描内容:https://example.com
类型: URL
动作: 扫描器在用户确认后用系统浏览器打开链接纯文本二维码
扫描内容:This is text content
类型: 文本
动作: 扫描器把文本复制到剪贴板,或在结果页中显示WiFi 凭证二维码
扫描内容: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」按钮。
为什么我的二维码无法解码?
常见原因有:模糊、对比度低、反光、透视倾斜,或二维码被部分遮挡。请裁剪得更近、提高亮度,并保持手机与平面成 90° 平稳拍摄。纠错等级 L 的二维码几乎无法承受任何破损;H 级可容忍较大遮挡。
可以解码截图和 PDF 中的二维码吗?
截图通常解码良好,因为对比度完美且没有透视畸变。对于 PDF,请先截取二维码区域的图像,再上传图片。
应该打开二维码包含的每一个 URL 吗?
不应该。二维码是已知的钓鱼载体(quishing),因为 URL 隐藏在视觉图像中。打开前请检查解码出的 URL——页面会展示完整 URL 让你看清域名。警惕错拼域名、IP 地址,以及隐藏真实目的地的短链。
可以解码一张图中的多个二维码吗?
页面每张图只检测一个二维码。如果图片中有多个二维码,请分别裁剪每个并单独上传,结果最可靠。
相关工具
HTML 实体编码工具
在线HTML实体编码解码工具,转换特殊字符为HTML实体。防止XSS攻击,确保HTML代码安全显示。
条形码解析
在线条形码识别与解码工具,支持上传图片、拖拽、粘贴等方式解析条形码内容。支持CODE128、EAN13、EAN8、UPC、CODE39等格式,纯浏览器端处理。
文件批量重命名
在线批量重命名文件工具,支持前后缀、序号、查找替换、大小写转换、扩展名修改。实时预览、检测重名,一键打包 ZIP 下载,全部本地处理。
Unicode 编码转换工具
在线Unicode编码解码工具,支持多种格式转换:\uXXXX、&#xXXXX;等。快速处理国际化文本,解决编码问题。
ZIP 解压缩
在线ZIP解压缩工具,上传ZIP压缩包即可预览和提取文件。支持单独下载或批量解压,浏览器本地处理,保护隐私安全。
XML 转 JSON 工具
在线XML转JSON工具,支持自定义缩进格式。一键将XML数据转换为格式化的JSON,浏览器本地处理保护隐私。
