别急着把私人文件交给本地 AI:真正该测的是隐私、速度和漏提取
本文最后更新于 2026-07-29,文章内容可能已经过时。
别急着把私人文件交给本地 AI:真正该测的是隐私、速度和漏提取
一份合同,模型总结得头头是道:合作方、付款金额、交付内容都没错,甚至还贴心整理出了待办事项。
但它漏掉了退款截止日期。
更危险的情况是,邮件原文写着“无需付款”,模型却把它归类成了“待付款”。
真正让我犹豫的,不是它要等几十秒,而是它整理得太像对的了。
这正是端侧多模态模型最容易制造的错觉:文件没有上传云端,摘要也读起来通顺,于是我们自然认为它既安全又可靠。
可对于合同、账单、邮件和聊天截图来说,真正需要回答的是三个更具体的问题:
1. 文件和中间结果是否真的没有离开设备?
2. 整理一份资料到底要等多久?
3. 模型有没有悄悄漏掉金额、日期和行动项?
结论先说:端侧模型已经适合承担基础整理、初步分类和内容索引,但“本地运行”不等于绝对隐私,“摘要不错”也不等于字段可靠。
一、本地运行,不代表资料绝对不会外流
测试私人资料,第一步不是选模型,而是先划定隐私边界。
我们可以准备一批脱敏或合成文件,包括:
- 带姓名、手机号和订单编号的邮件
- 包含付款条款的合同 PDF
- 银行付款页面的合成截图
- 带日期、地址和行动项的聊天记录
- 含表格、印章和多栏排版的扫描件
真实私人文件不应出现在测试截图、附件和公开测试集中。即便正文打了码,也要继续检查文件名、系统通知栏、用户目录、PDF 元数据和图片缩略图。
因为“本地运行”只是在描述模型部署位置,并没有回答以下问题:
- OCR 是否调用了在线服务?
- 应用是否自动检查版本更新?
- 是否启用了遥测和崩溃报告?
- 对话历史是否以明文保存?
- 临时目录中是否残留页面图片?
- 联网搜索或云端回退是否默认开启?
- 模型下载器是否记录了文件路径?
一个完整流程通常包含:
导入文件 → PDF 转图片 → OCR → 模型推理 → JSON 输出 → 历史记录与日志
其中任何一环都可能联网或留下本地明文。真正值得关注的,不是产品页面上的“Local”标签,而是能否验证每一个环节。
二、不要挑三张成功截图,要建立固定测试集
端侧模型评测最常见的问题,是只展示成功案例。
清晰的订单页面、排版规整的 PDF、没有转发链的短邮件,本来就是最容易处理的样本。真实资料却往往是低清截图、扫描合同、复杂表格和中英混排。
更合理的做法,是建立一套固定测试集。例如准备 45 份脱敏或合成文件:
| 类型 | 数量 | 样本构成 | |---|---:|---| | 邮件 | 15 封 | 纯文本、HTML、转发链、附件提示、中英混排 | | PDF | 15 份 | 文字版、扫描版、表格、多栏、印章遮挡 | | 截图 | 15 张 | 长截图、低分辨率、深色模式、聊天记录、订单页面 |每份文件都要人工制作“标准答案”,至少标注:
- 姓名
- 联系方式
- 日期
- 金额
- 订单号、合同号等编号
- 行动项
- 截止时间
- 资料类别
如果测试集涉及隐私,不能公开原文件,至少应公开字段定义、评分脚本和等价合成样本,否则读者无法判断评测是否只挑了简单题。
三个必须保留的失败样本
第一类是否定句:
请确认,无需再次付款,原订单已完成结算。
标准答案中的行动项应是“确认结算状态”,而不是“安排付款”。
第二类是日期缺失:
如需退款,请于 2026 年 3 月 31 日前提交申请。
如果模型只提取出“3 月 31 日”,年份遗漏就可能导致错误归档。
第三类是表格错列:
| 项目 | 金额 | 状态 | |---|---:|---| | 服务费 | 1,280.50 元 | 已支付 | | 保证金 | 5,000 元 | 待退回 |模型不仅要读对数字,还要把金额与正确项目、状态关联起来。单独识别出“5,000 元”,并不等于真正理解了表格。
漏掉一个普通标签,最多影响搜索;漏掉退款日期、合同金额或“无需付款”,可能直接导致现实损失。
三、把测试环境写清楚,否则速度没有比较意义
“本地模型几秒处理一份 PDF”这类说法通常缺少前提。
同一个模型,在独立显卡、Apple 芯片和纯 CPU 设备上的表现可能完全不同;扫描版 PDF 还多出页面渲染与 OCR 时间。
正式发布结果时,至少应公开以下环境信息:
| 项目 | 必须记录的内容 | | 设备 | 型号、CPU、GPU/NPU、内存 | | 系统 | 操作系统及版本 | | 模型 | 完整名称、版本、参数规模、量化方式 | | 框架 | 本地运行框架及版本 | | OCR | 是否独立于多模态模型、是否联网 | | 输入 | 图片分辨率、PDF 页面切分规则 | | 推理 | 上下文长度、温度等参数 | | 状态 | 冷启动、热启动分别统计 | | 权限 | 是否联网、是否开启遥测和历史记录 | | 统计 | 每项运行次数、P50 与 P95 计算方式 |如果这些条件没有完整记录,速度数字看似精确,实际很难复现。
冷启动和热启动也必须分开。第一次运行可能包含模型加载、显存分配和 OCR 初始化,连续处理时则可能利用缓存。只展示热启动成绩,相当于只拍汽车下坡时的油耗。四、隐私实测:不只抓包,还要检查本地残留
隐私测试建议拆成四个阶段:
1. 安装
2. 首次启动
3. 模型下载
4. 正式推理
网络监控中应区分:
- 模型文件下载
- 版本更新检查
- 遥测与崩溃报告
- 联网搜索请求
- 资料内容或 OCR 文本上传
模型下载产生网络请求是正常现象,关键在于正式推理阶段是否仍向外部域名发送请求,以及请求中是否包含文件内容、路径或生成结果。
抓包之后,还要继续检查:
- 系统临时目录
- 应用缓存目录
- 对话历史数据库
- OCR 中间文件
- 运行日志
- 崩溃报告
- 最近打开文件列表
尤其要关注原文、OCR 结果和模型输出是否以明文长期保留。对高敏感资料而言,“没有上传云端”和“明文躺在缓存里”是两种不同风险。
默认安全和配置后安全,要分开评价
一款工具可能在关闭联网、遥测、自动更新和历史记录之后表现良好,但默认设置仍然保留完整对话。
因此,隐私结论不应该只是“安全”或“不安全”,而应该拆成两项:
- 默认安全程度:普通用户安装后直接使用,会产生哪些联网行为和本地残留?
- 正确配置后的安全程度:关闭遥测、历史记录和云端回退后,能否断网完成全部流程?
如果断网后仍能完成文件导入、OCR、推理和结构化输出,至少能证明核心链路具备离线运行能力。但这依然不能替代对缓存和日志的检查。
五、速度要拆开算,别把 OCR 的锅全甩给模型
处理一份扫描 PDF,通常至少包含三段耗时:
PDF 页面渲染 + OCR 识别 + 模型提取与整理
因此,速度测试不能只记录“点击开始到看到结果”,还应分别统计:
- 首次启动时间
- 首字延迟
- 单份文件总耗时
- 单页平均耗时
- P50 与 P95 耗时
- 连续处理吞吐量
- 峰值内存或显存
- 连续运行时的温度变化
邮件、文字版 PDF、扫描版 PDF 和截图也必须分组统计。文字版 PDF 可以直接提取文本,而扫描件需要先做 OCR,两者混在一起算平均值,结果没有多少参考意义。
如果对比云端 API,同样要计入:
文件上传 + 服务排队 + 模型推理 + 结果返回
不能拿本地端到端耗时,去比较云端模型单独的返回阶段。
六、最关键的不是摘要质量,而是漏提取率
摘要读起来是否流畅,只能说明模型具备语言组织能力。
对于私人资料整理,更重要的是字段级指标:
- 字段级准确率:模型已经输出的字段中,有多少是正确的
- 字段级召回率:标准答案中的字段,有多少被模型找到了
- 严重遗漏率:金额、日期、行动项等关键字段的漏提取比例
- 幻觉率:模型输出中有多少字段并不存在于原资料
对应的基础评分逻辑如下:
precision = correct_fields / max(extracted_fields, 1)
recall = correct_fields / max(gold_fields, 1)
miss_rate = missed_critical_fields / max(gold_critical_fields, 1)
hallucination_rate = unsupported_fields / max(extracted_fields, 1)
不要急着把这些指标压缩成一个综合分。
假设一份合同的摘要、联系人和分类标签都正确,模型却漏掉了付款截止时间,综合分可能依然“很好看”,但这份结果不能直接进入业务系统。
一个最小可复现提取流程
可以要求不同模型统一输出 JSON,减少格式差异带来的干扰:
schema = {
"document_type": "",
"people": [],
"dates": [],
"amounts": [],
"identifiers": [],
"action_items": [],
"deadline": None,
"uncertain_fields": []
}
prompt = f"""
请根据输入资料提取信息,并严格输出 JSON。
不要补充资料中不存在的内容。
看不清或无法确定的字段写入 uncertain_fields。
目标结构:{schema}
"""
这里最重要的一句不是“严格输出 JSON”,而是:
看不清时,允许模型承认不确定。
很多严重错误并非来自完全无法识别,而是模型在模糊输入上仍然给出了一个看似合理的答案。相比漏填,错误填写通常更难被发现。
七、谁适合纯端侧,谁更适合混合方案
端侧整理不是“能不能用”的二选一问题,而是要根据资料风险划边界。
适合完全端侧处理
- 普通邮件的初步分类
- 会议截图的关键词整理
- 个人资料的本地全文索引
- 非关键文件的摘要草稿
- 不直接触发业务操作的待办建议
这类任务即使漏掉少量次要字段,通常也不会造成严重后果。
需要规则校验或人工复核
- 合同金额与截止日期
- 发票、订单和付款凭证
- 扫描版表格
- 被印章、手写字遮挡的字段
- 包含否定、条件和例外条款的资料
可以增加日期格式校验、金额合计校验、编号正则匹配,并把 OCR 清晰度不足的字段自动标记出来。
不建议直接自动入库或执行
- 医疗诊断与用药信息
- 财务转账指令
- 合同违约与解除条款
- 身份证件及认证材料
- 会自动触发付款、审批或通知的字段
这些场景不能仅凭模型输出完成后续操作,无论模型运行在本地还是云端。
八、更实用的方案:本地预处理,再按需回退
对多数普通用户来说,最现实的路线不是追求“所有事情都在本地完成”,而是搭建一条可控的混合链路:
1. 在本机完成文件解析和 OCR
2. 删除姓名、手机号、地址等敏感信息
3. 使用端侧模型做初步分类和字段提取
4. 对金额、日期、编号执行格式校验
5. 将低置信度字段交给人工复核
6. 经用户明确授权后,再把脱敏片段交给云端模型
判断逻辑可以写成:
if contains_sensitive_data and local_confidence >= 0.85:
save_local_result()
elif contains_sensitive_data:
request_human_review()
else:
optional_cloud_fallback()
但要注意,模型自行给出的“置信度”通常没有经过校准,不能直接把 0.85 当成真实可靠概率。
更稳妥的判断依据应该包括:
- OCR 清晰度
- 日期、金额和编号的格式校验
- 多次提取结果是否一致
- 原文中能否找到对应证据
- 人工复核结果
九、一张表决定你该选哪种方案
| 主要需求 | 推荐方案 | 需要接受的代价 | | 隐私优先 | 纯端侧 | 速度较慢,复杂资料需要人工复核 | | 效率优先 | 云端模型 | 必须核查数据保存、日志和删除机制 | | 隐私与效果兼顾 | 端侧预处理+按需 API | 工作流更复杂,需要设置回退边界 | | 合同、医疗、财务 | 本地处理+规则校验+人工确认 | 不能完全自动化 |如果设备跑不动多模态模型,或者本地模型在扫描 PDF、复杂表格上频繁漏字段,可以采用“本地脱敏+按需调用云端”的方式:先在本机删除姓名、手机号、地址等敏感信息,再把低置信度片段交给云端模型复核。
需要用同一套提示词和评分表横向测试不同模型时,可以前往 api.884819.xyz 查看可用 API。平台内置 AI 对话功能,使用用户名和密码即可注册,不需要邮箱验证;没有月租和订阅,按量付费,Deepseek、千问等国产模型完全免费。
新用户注册即送体验token。无论使用哪种服务,上传前都应检查数据保存、日志、训练使用和删除机制。涉及合同、医疗和财务资料时,不要默认任何第三方接口都适合接收原文。
十、发布评测前,至少准备好这些截图
为了让结论可验证,一篇完整评测至少应包含:
1. 测试设备、模型版本、量化规格和运行参数
2. 邮件、PDF、截图的“原始资料—标准答案—模型输出”对照
3. 网络监控或抓包结果,并标注测试阶段与请求域名
4. 断网运行成功或失败的界面
5. 缓存、日志和历史记录设置页面
6. 各类文件的速度分组柱状图或箱线图
7. 以资料类型和字段类型为坐标的漏提取热力图
8. 至少三个失败案例的局部放大图
截图完成后还要再次脱敏,特别检查通知栏、文件路径、文件名、缩略图和 PDF 元数据。
端侧多模态模型的隐私价值是真实的,但它不是安装完成后自动获得的能力。用户仍然需要关闭不必要的遥测、管理缓存、检查历史记录,并控制云端回退路径。
它已经可以成为私人资料的初筛员、索引员和草稿助手,但还不适合在无人复核的情况下成为合同审核员、财务操作员或医疗信息管理员。
这次解决的是“模型能不能读懂单份私人资料”。但当邮件、PDF 和截图不断积累,另一个更棘手的问题就会出现:本地知识库会不会把同名联系人混在一起,把旧合同当成新合同,甚至在删除文件后仍然检索出残留内容?
下一篇,我们会把同一套文件导入本地 RAG,专门测试检索命中、跨文档串档,以及资料删除后是否真的“忘干净”。
下一篇:《本地知识库真的不会串资料吗?我用同名联系人、旧合同和重复截图测试了一遍》 本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。#端侧AI #多模态模型 #隐私安全 #PDF处理 #本地大模型 #AI教程 #8848AI #人工智能