You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不借助外部库将文件(如Excel)嵌入二维码实现离线提取?

直接将文件内容嵌入二维码的实现方案

完全可以实现把压缩后的文件内容直接嵌入二维码,无需依赖链接、网络或U盘。核心思路是把文件压缩后转成Base64编码的文本,再将该文本存入二维码——二维码本质就是存储文本/二进制数据的载体,之前你生成链接是因为没走“文件转码嵌入”的流程。

关键步骤及Python代码实现

1. 压缩文件并转为Base64编码

先把目标文件(比如Excel)压缩成ZIP包(大幅减小体积,适配二维码容量),再将压缩包的二进制数据转成Base64字符串(方便二维码存储文本格式内容):

import zipfile
import base64
import os

def compress_and_encode(file_path):
    # 生成临时压缩包
    zip_path = f"{os.path.splitext(file_path)[0]}.zip"
    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        zipf.write(file_path, os.path.basename(file_path))
    
    # 读取压缩包并转Base64
    with open(zip_path, 'rb') as f:
        base64_str = base64.b64encode(f.read()).decode('utf-8')
    
    # 删除临时压缩包(可选)
    os.remove(zip_path)
    return base64_str

2. 生成包含文件内容的二维码

用qrcode库将Base64字符串生成二维码,注意根据内容大小调整二维码版本(Version越高容量越大)和纠错级别:

import qrcode

def generate_qr_from_content(content, output_path="file_qr.png"):
    # 初始化二维码对象,设置版本和纠错级别
    qr = qrcode.QRCode(
        version=40,  # 最大版本,对应最大容量
        error_correction=qrcode.constants.ERROR_CORRECT_L,  # 低纠错,能存更多内容
        box_size=10,
        border=4,
    )
    qr.add_data(content)
    qr.make(fit=True)
    
    # 保存二维码图片
    img = qr.make_image(fill_color="black", back_color="white")
    img.save(output_path)

3. 扫描二维码还原原文件

扫描二维码得到Base64字符串后,解码回二进制数据,写入ZIP包再解压即可还原原文件:

def decode_and_extract(base64_str, output_dir="."):
    # 解码Base64为二进制数据
    zip_data = base64.b64decode(base64_str)
    
    # 写入临时压缩包
    temp_zip = "temp_file.zip"
    with open(temp_zip, 'wb') as f:
        f.write(zip_data)
    
    # 解压压缩包到目标目录
    with zipfile.ZipFile(temp_zip, 'r') as zipf:
        zipf.extractall(output_dir)
    
    # 删除临时压缩包(可选)
    os.remove(temp_zip)

注意事项

  • 容量限制:QR码最大版本(Version40)在低纠错模式下最多能存约2953字节的二进制数据,转成Base64后会膨胀约33%,所以压缩后的文件大小最好控制在2200字节以内。如果文件太大,这种方法不适用。
  • 工具兼容性:部分普通扫码工具可能无法识别过长的内容,建议用支持长文本解析的扫码工具(比如Python的pyzbar库)。

内容的提问来源于stack exchange,提问作者ROCI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:28:08