预处理与时空证据
本节目标
在格式验证、转码、裁剪、抽帧和转写中保留回到原始资产的路径;理解每一步的损失。
不可变原始资产与派生物
原始资产只读保存(若授权允许),每个派生物记录:
- parent_asset_id 与原始哈希;
- 处理器名称和版本;
- 参数;
- 生成时间;
- 坐标/时间映射;
- 新哈希;
- 数据分类与保留期。
不要覆盖原文件后只留下“处理过”。无法比较原始证据就难以复现。
图像预处理
典型顺序:
- 检测真实格式和解码;
- 应用 EXIF 方向但记录变换;
- 颜色空间归一;
- 按任务缩放或切片;
- OCR/对象检测产生区域框;
- 将框映射到原图坐标。
推荐归一化框 (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 秒的事件一定能被看到吗?怎样设计触发式补采样?
下一步
继续 多模态提示与结构化输出。
参考资料
- Google Gemini API:Video understanding(访问于 2026-07-22)
- W3C WebVTT(访问于 2026-07-22)