预处理与时空证据

本节目标

在格式验证、转码、裁剪、抽帧和转写中保留回到原始资产的路径;理解每一步的损失。

不可变原始资产与派生物

原始资产只读保存(若授权允许),每个派生物记录:

  • parent_asset_id 与原始哈希;
  • 处理器名称和版本;
  • 参数;
  • 生成时间;
  • 坐标/时间映射;
  • 新哈希;
  • 数据分类与保留期。

不要覆盖原文件后只留下“处理过”。无法比较原始证据就难以复现。

图像预处理

典型顺序:

  1. 检测真实格式和解码;
  2. 应用 EXIF 方向但记录变换;
  3. 颜色空间归一;
  4. 按任务缩放或切片;
  5. OCR/对象检测产生区域框;
  6. 将框映射到原图坐标。

推荐归一化框 (x_min, y_min, x_max, y_max),范围 0–1,并同时保留原图像素尺寸。裁剪后证据框必须通过偏移和缩放反变换。

音频预处理

解码后记录原采样率、声道和时长。语音任务可能重采样、声道分离、VAD(语音活动检测)和分段。每段用原始时间轴的 start_ms/end_ms 标识。

VAD 可能把低声或停顿误删;降噪可能去掉关键背景事件;声道合并可能混淆说话人。保留参数和可回放片段引用。

视频预处理

固定每秒一帧对慢场景可行,但会漏掉短暂动作。更稳妥的组合:

  • 均匀抽帧覆盖全局;
  • 场景切换检测;
  • OCR/运动触发加密采样;
  • 提取音轨与字幕;
  • 用统一毫秒时间轴对齐。

关键帧记录 timestamp_ms,而不是只记录“第 42 帧”,因为转码会改变帧编号。若使用片段,记录原视频起止时间。

文档与版面

保存 page、bounding_box、reading_order 和元素类型。表格单元格需行列关系;图注与图片关联。OCR 文字同时保存文本、置信度、语言和区域,不把低置信字符静默当真。

证据账本

{
  "claim_id": "C-3",
  "asset_id": "video-1",
  "source_revision": "sha256:record-at-runtime",
  "evidence": [
    {"kind": "video_interval", "start_ms": 72000, "end_ms": 78000},
    {"kind": "frame_region", "timestamp_ms": 74500,
     "box": [0.10, 0.20, 0.62, 0.55]}
  ],
  "transform_chain": ["extract-audio-v2", "sample-scene-v1"]
}

模型结论必须引用可验证证据,而不是仅返回自由文本。

指针有效与结论成立是两件事

先做绑定验证:asset、revision、坐标系、时间范围和 transform_chain 是否存在且相互一致;再做证据蕴含验证:该区域/片段是否真的支持 claim。前者可以由确定性代码拒绝失效 ID、越界框和旧版本引用;后者需要标注、人工抽查或受控评测。一个可点击的时间戳并不自动证明结论正确。

一致性检查

  • start < end 且不超过资产时长;
  • 坐标在 0–1 或像素边界内;
  • 派生物的 parent_asset_id 存在;
  • 转换链参数完整;
  • 多路字幕/音频时间基一致;
  • 资产哈希与处理记录匹配。

常见错误

  • 为省 token 先做粗摘要:摘要可能删掉后续问题所需细节。
  • 坐标系混乱:旋转/裁剪后仍用旧坐标。固定坐标约定并测试反变换。
  • 时间漂移:音频和视频分别转码后不同步。以原始时间轴和校准点验证。
  • 只保留 OCR 文本:表格、布局与低置信区域丢失。

练习与自测

设计一个视频分段记录,使回答“何时出现价格表”能返回时间与区域。自测:若抽帧间隔为 5 秒,一个持续 1 秒的事件一定能被看到吗?怎样设计触发式补采样?

下一步

继续 多模态提示与结构化输出。

参考资料