| name | image-forensics |
| description | 图片取证分析 skill。当用户提供图片文件路径,或说"帮我检测这张图"、"分析图片"、"查 EXIF"、"看看是不是 AI 生成的"、"品牌风险"、"图片尺寸是否符合要求"时触发。执行六维度取证分析并返回结构化中文报告。 |
图片取证分析
用户提供图片文件路径后,按以下六个维度分析,最终输出一份结构化中文报告。
执行流程
Step 1 — 基础格式取证
file "<path>"
xxd "<path>" | head -2
python3 -c "import hashlib; print(hashlib.sha256(open('<path>','rb').read()).hexdigest())"
python3 -c "import os; b=os.path.getsize('<path>'); print(f'{b} bytes ({b/1024:.1f} kB)')"
Step 2 — 元数据提取
exiftool -j "<path>"
sips -g all "<path>"
若 exiftool 未安装:brew install exiftool
Step 3 — 图像属性(Python)
from PIL import Image
img = Image.open("<path>")
print(img.size, img.mode, img.format)
info = img.info
若 Pillow 未安装:pip install Pillow
Step 4 — AI 生成检测(元数据 + 视觉双层打分)
参考标准:AI-DETECTION-GUIDE.md
第一层:元数据启发式(先跑,不需要看图)
逐项检查并累计分值:
| 信号 | 分值 | 检查方法 |
|---|
| CreatorTool 含 AI 工具名 | 5 分 | Midjourney / SD / DALL-E / Firefly / ComfyUI / NovelAI |
XMP 含 ai:model / generativeAI 字段 | 5 分 | exiftool 输出 |
| UUID 文件名 + AI 常见分辨率同时命中 | 3 分 | 文件名格式 + sips/PIL 尺寸 |
| 完全无 EXIF | 2 分 | Step 2 输出为空 |
| 分辨率为 64 整数倍(512/768/1024 等) | 1 分 | 尺寸分析 |
| 创建时间与修改时间完全相同 | 1 分 | exiftool 字段对比 |
第二层:视觉分析(读取图片,逐项打分)
读取图片内容,按 AI-DETECTION-GUIDE.md 分值标准逐项检查:
| 类别 | 单类上限 |
|---|
| 手部/手指解剖异常 | 5 分 |
| 文字/数字乱码或无法阅读 | 5 分 |
| 面部皮肤过平 + 光线过于完美 | 3 分 |
| 背景结构错误(重复纹理/违反力学) | 3 分 |
| 边缘融化(主体与背景融合) | 2 分 |
| 光影方向矛盾 | 3 分 |
| 布料条纹在折皱处不连续 | 2 分 |
| 生成器视觉签名(暗角/渗透/插画风等) | 2 分 |
综合得分判定:
- 0–2 分 → 🟢 低可能性
- 3–5 分 → 🟡 疑似 AI 生成
- ≥6 分 → 🔴 高可能性 AI 生成
高置信度自动升级:手部异常+文字乱码同时命中,或 CreatorTool 直接包含 AI 工具名,无论总分直接判为 🔴
Step 5 — 平台适配核验
对比以下规格,判断是否通过:
| 平台场景 | 最低要求 |
|---|
| 千图 Banner | 700×332px,≤150kB |
| mini 推荐横图 | 320×240px,≤40kB |
| mini 推荐方图 | 720×720px,≤200kB |
| 小红书封面 | 1080×1440px |
| 抖音封面 | 1080×1920px |
| 微博横图 | 1920×1080px |
| 屏幕显示 | 宽 ≥1080px |
| 印刷输出 | DPI ≥300 |
Step 6 — 品牌 / IP 版权风险扫描(元数据 + 视觉双层)
第一层:元数据关键词扫描
在文件名 + 所有文本元数据中搜索品牌/IP 关键词(大小写不敏感)。
第二层:视觉识别(读取图片内容,参考识别库)
读取图片文件,对照 BRAND-IP-LIBRARY.md 中的视觉特征描述,识别画面中出现的:
- 卡通角色(迪士尼/漫威/三丽鸥/泡泡玛特/日本动漫/中国 IP 等)→ 完整角色命中 5 分
- 品牌核心 Logo / 标识(Nike Swoosh、Apple 苹果、LV 字母等)→ 4 分
- 品牌经典图案(Burberry 格纹、Chanel 菱格纹等)→ 3 分
- 品牌特征元素局部出现(橙色盒子但无文字)→ 2 分
- 风格相近但来源不确定 → 1 分
对每个命中项记录:IP 名称 · 版权方 · 分值 · 画面位置。多项命中取各项之和。
综合得分判定:
- 0 分 → 🟢 无明显风险
- 1–3 分 → 🟡 中风险(建议人工复核)
- ≥4 分 → 🔴 高风险(商业使用前必须获得授权)
输出格式
核心原则:结论前置,证据后置。 先给判定和理由,再展示详细检测数据。
输出一份 Markdown 取证报告,结构如下:
# 图片取证报告 · {文件名}
> 分析时间:{时间} | 文件大小:{大小} | 分辨率:{W}×{H}px
---
## ⚡ 综合判定(先看这里)
| 维度 | 判定 | 得分 | 核心理由(1句话) |
|---|---|---|---|
| AI 生成可能性 | 🔴 高 / 🟡 疑似 / 🟢 低 | X 分 | {最关键的1条证据} |
| 品牌/IP 版权风险 | 🔴 高 / 🟡 中 / 🟢 无 | X 分 | {最关键的1条命中,或"未发现受保护元素"} |
| 格式安全 | ✅ 正常 / ⚠️ 异常 | — | {一致 / "扩展名伪装"} |
**最终建议:** 可安全使用 / 建议人工复核后使用 / 商业使用前必须获授权
> {2–3句综合说明:是什么图、主要风险点、最重要的行动建议}
---
## 详细检测报告
### 一、AI 生成检测
**判定:🔴/🟡/🟢 {结论} · 总分 X 分**
> 理由:{具体说明哪些信号驱动了判定,语言简洁直接}
**元数据层命中:**
| 信号 | 分值 |
|---|---|
| {信号描述} | +X 分 |
| **小计** | **X 分** |
**视觉层命中:**
| 信号 | 分值 |
|---|---|
| {视觉特征描述} | +X 分 |
| **小计** | **X 分** |
---
### 二、品牌 / IP 版权风险
**判定:🔴/🟡/🟢 {结论} · 总分 X 分**
> 理由:{说明命中了什么,或为什么判定无风险}
| 命中元素 | 版权方 | 画面位置 | 分值 |
|---|---|---|---|
| {IP/品牌名} | {公司} | {位置描述} | +X 分 |
| **合计** | | | **X 分** |
---
### 三、格式取证
| 字段 | 值 |
|---|---|
| **真实格式** | JPEG / PNG / WebP / HEIC / ... |
| **扩展名** | .xxx |
| **一致性** | ✅ 一致 / ⚠️ 不一致(伪装风险)|
| **编码方式** | Baseline DCT / Progressive / 无损 / ... |
| **文件大小** | X kB |
| **SHA-256** | `{hash}` |
---
### 四、显示质量
| 字段 | 值 |
|---|---|
| **分辨率** | {W}×{H} px({MP} MP)|
| **宽高比** | {ratio} |
| **色彩模式** | RGB / CMYK / 灰度 |
| **位深** | 8-bit / 16-bit |
| **DPI** | {dpi}(或:无物理单位)|
| **色域** | sRGB / Adobe RGB / Display P3 / ... |
---
### 五、来源追溯
| 字段 | 值 |
|---|---|
| **相机/设备** | {make} {model}(或:无设备信息)|
| **处理软件** | {software} |
| | {datetime}(或:无时间戳)|
| | {lat, lon} → {地名}(或:无 GPS)|
| | EXIF ✅/❌ · IPTC ✅/❌ · XMP ✅/❌ |
---
| 平台 | 规格要求 | 结果 |
|---|---|---|
| 千图 Banner | 700×332px ≤150kB | ✅/❌ |
| mini 推荐横图 | 320×240px ≤40kB | ✅/❌ |
| mini 推荐方图 | 720×720px ≤200kB | ✅/❌ |
| 小红书封面 | 1080×1440px | ✅/❌ |
| 抖音封面 | 1080×1920px | ✅/❌ |
| 微博横图 | 1920×1080px | ✅/❌ |
| 屏幕显示 | 宽 ≥1080px | ✅/❌ |
| 印刷输出 | DPI ≥300 | ✅/❌ |
注意事项
- 视觉分析基于 Agent 的原生视觉能力,结合 AI-DETECTION-GUIDE.md 和 BRAND-IP-LIBRARY.md 参考标准进行打分
- HEIC 文件在非 macOS 系统需先转换:
sips -s format jpeg input.heic --out output.jpg
- GPS 坐标可用 OpenStreetMap 反查地名:
https://nominatim.openstreetmap.org/reverse?lat=X&lon=Y&format=json
- 品牌风险仅为关键词扫描,不能替代法律意见
- 若 exiftool 输出为空(无元数据),这本身是 AI 生成检测的一个重要信号