# Vlm Verifier

> 企业信贷跨模态材料核验与分析技能。基于贷款申请材料(图片、文档、流水)与基准数据源,以视觉语言模型(VLM)解析图像证据,结合LLM对文本/结构化数据的分析,实现跨模态数据交叉比对,构建结构化检测点,通过迭代推理验证材料真实性,输出可解释的跨模态核验报告。触发词包括:"材料核验"、"反欺诈审查"、"交叉验证"、"材料真实性核验"、"VLM识别"、"多模态分析"、"欺诈检测"、"跨模态证据核查"。不适用于:个人信贷材料核验、非反欺诈场景(如行业分析/估值建模)、要求输出审批意见或违约概率预测。

- Skill: `aliyun/vlm-verifier` (Agent Skill, multi-file: 15 files)
- Install (CLI): `npx skillmds@latest add aliyun/vlm-verifier`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aliyun/vlm-verifier/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: aliyun (https://skillmd.com/u/aliyun)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/aliyun/vlm-verifier

---


# 企业信贷反欺诈多模态交叉验证

## Target Role

- **角色**：信贷审批官 / 反欺诈分析专家 / 风险审查人员
- **使用场景**：贷前申请材料真实性核验、反欺诈交叉验证、多模态证据链构建
- **输出用途**：生成结构化反欺诈评估报告，为信审决策提供客观证据链
- **决策层级**：风险提示信号，需经信贷人员人工复核后使用，不构成审批意见
- **执行频率**：按需执行，每笔企业贷款申请可调用一次

## Data Sources

### 必需数据
| 数据项 | 来源 | 获取方式 | 敏感级别 |
|--------|------|---------|----------|
| 用户上传材料 | 客户提交 | 文件上传(图片/文档/流水) | 内部 |
| 工商登记信息 | 国家企业信用信息公示系统 | API/人工查询 | 公开 |
| 征信报告 | 人民银行征信系统 | 需人工授权后API获取 | 机密 |
| 司法执行信息 | 中国执行信息公开网 | API/人工查询 | 公开 |
| 行业基准数据 | references/cross-validation-matrix.md | 文件读取 | 内部 |

### 数据脱敏规则
- 个人身份证号：显示前3后4，中间用*替代（如：110***********1234）
- 银行账号：仅显示后4位（如：**** **** **** 5678）
- 联系方式：不在输出中出现
- 企业敏感财务数据：仅展示比对结果，不展示原始数值

### 降级策略
- 如果征信数据不可用：标注"未纳入征信维度"，其余分析继续
- 如果现场照片缺失：标注"视觉验证维度未覆盖"，依赖文本数据源交叉验证
- 如果行业基准数据缺失：使用references/中的通用参考值，并明确标注"使用行业估计值"
- 如果VLM工具不可用：降级为LLM基于文本描述判断，并在报告中标注"视觉分析置信度降低"
- 如果多个数据源均缺失：标注"证据不足，待核实"，不得用猜测替代真实数据

## Workflow

> 📋 严格遵循"先读后写"原则，步骤0验证通过后才执行后续步骤。

### 步骤0:数据确认与验证(数据来源:`user_upload`, 执行主体:`ai`, 确认机制:`none`)
- 读取并列出所有输入材料(图片/文档/流水)
- 确认材料时间范围(近6个月流水、近1个月照片、最近一期财务报表)
- 对照`references/data-sources-priority.md`检查数据源优先级与时效性
- 如果关键材料缺失(如无流水、无现场照片):标注"降级模式运行"，继续但降低相关维度置信度
- 仅在验证通过后开始分析，不得跳过此步骤

### 步骤1:材料分类与信息提取(数据来源:`context`, 执行主体:`ai`, 确认机制:`none`)
- 按类型分类输入材料(图片类/文档类/数据类)，查阅`references/fraud-patterns.md`识别适用欺诈模式
- 从图片中提取:场所规模、设备数量、装修档次、证件文字信息
- 从文档中提取:财务核心指标、申报经营数据、合同交易方
- 从流水中提取:月均流水、对手方分布、资金沉淀规律、大额往来
- 所有提取字段必须标注来源文件名，不得笼统表述"根据材料显示"

### 步骤2:行业规则匹配(数据来源:`reference`, 执行主体:`ai`, 确认机制:`none`)
- 基于申请企业所属行业，从`references/cross-validation-matrix.md`加载对应反欺诈规则集与行业基准
- 结合用户自定义规则(如有)进行融合
- 输出本次评估适用的完整规则集
- 不得套用与行业无关的通用规则

### 步骤3:检测点构建(数据来源:`context`, 执行主体:`ai`, 确认机制:`none`)
- 将规则转化为独立可执行的验证任务，每个检测点必须至少涉及2个独立数据源
- 每个检测点包含:验证目标、所需数据源、判断标准
- 相互独立，可并行执行
- 优先构建高置信度的检测点(数据充分的维度)

### 步骤4:迭代推理验证(数据来源:`context`, 执行主体:`ai`, 确认机制:`none`)
- 对每个检测点执行Think→Check→Research循环(查阅`references/confidence-rules.md`):
  - **Think**:规划当前检测点的验证路径，确定需要哪些数据
  - **Check**:执行数据比对；图片分析优先用LLM基于描述判断，置信度<70%时再调用VLM分析原图
  - **Research**:分析差异是否构成欺诈信号；对照`references/cross-validation-matrix.md`常见误判场景表排除合理例外情形
  - 循环直到置信度≥0.6或达到最大迭代次数3次
- 不得跳过任何检测点，即使中间结果"看起来正常"
- 所有数字必须展示计算过程，不得直接给出结论
- 如果某检测点结果与预期不符，必须停下来分析原因，不得忽略继续

### 步骤5:报告聚合(数据来源:`context`, 执行主体:`ai`, 确认机制:`none`)
- 汇总所有检测点结论，使用`assets/verification-report-template.md`模板输出结构化反欺诈评估报告
- 每条结论必须标注数据来源文件名及提取字段
- 异常信号须给出具体差异量(如"申报营收1200万元，流水汇总仅280万元，差异率77%")
- 证据不足的检测点须以"待核实"状态输出，不得因材料不足而跳过不写
- 待核实清单中的核实方式须具体(如"建议调取近12个月增值税申报记录")，禁止"联系客户确认"此类空泛建议

### 步骤6:先读后写验证(数据来源:`context`, 执行主体:`ai`, 确认机制:`none`)
- 运行`scripts/validate_fraud_report.py`验证输出报告结构完整性
- 验证必填章节(报告基本信息/材料分类汇总/反欺诈检测结果/异常信号汇总/建议核实清单/覆盖度说明/数据来源与免责说明)
- 验证免责声明包含"不构成"、"仅供参考"关键词
- 如果验证失败:定位具体问题并修正，不得输出未通过验证的报告

## Output Format

使用`assets/verification-report-template.md`模板。

报告必须包含以下章节:
1. 报告基本信息(企业名称/评估时间/适用行业/输入材料清单)
2. 材料分类汇总(表格:材料名称/类型/提取关键信息摘要/质量评估)
3. 反欺诈检测结果(每个检测点:验证目标/数据来源/比对结果/推理过程/检测结论/置信度)
4. 异常信号汇总(已确认异常/疑似异常，按置信度分级)
5. 建议核实清单(表格:优先级/待核实事项/建议核实方式/所需材料)
6. 覆盖度说明(表格:欺诈类别/是否覆盖/检测点数量/未覆盖原因)
7. 数据来源与免责说明(引用`assets/verification-report-template.md`中的免责声明模板)

所有数据标注:数据来源 + 数据日期 + 是否审计后数据。
禁止在输出中使用"高风险/低风险"等主观分级术语，仅描述欺诈事实与异常信号。

> ⚠️ **免责声明**:每次输出必须包含免责声明，引用`assets/verification-report-template.md`模板，确保"不构成信贷审批意见"、"检测结论仅供参考"等必要声明。

## Constraints

1. **禁止收益承诺与投资建议**：任何情况下不得给出"这笔贷款可以批准"或"违约风险低"等确定性结论或承诺性表述。
2. **证据链完整**：每条欺诈判断必须对应具体数据来源和比对结果，禁止无依据的主观判断，不得笼统表述"根据材料显示"。
3. **禁止数据猜测**：缺失数据 = 标注"待核实"，严禁用行业平均值或猜测替代真实数据（行业平均值仅用于对标比较）。
4. **数据时效性**：如果数据超过3个月，必须在报告开头醒目标注"⚠️ 数据可能已过时"；超过6个月拒绝使用，要求更新。
5. **禁止风险分级混淆**：仅描述欺诈事实与异常信号，不输出"高风险/低风险"等主观分级，不预测违约概率。
6. **禁止越权建议**：本报告不构成任何形式的信贷审批意见、风险定论或决策建议，最终风险判断由专业人员做出。
7. **交叉验证优先**：单一来源的信息不得直接得出结论，必须与至少一个独立数据源交叉印证，单源结论须标注"待交叉核实"。
8. **禁止跳过步骤**：不得跳过Workflow中任何步骤，即使中间步骤的结果"看起来正常"；所有数字必须展示计算过程。

## Audit Trail

每次评估结束后，生成审计日志 `audit/{企业简称}_{日期}_fraud_audit.json`：

```json
{
  "skill_name": "vlm-verifier",
  "skill_version": "1.0.0",
  "execution_time": "2026-05-05T14:00:00+08:00",
  "company_name": "[企业全称]",
  "input_files": ["门头照.jpg", "银行流水.xlsx", "贷款申请书.pdf"],
  "operator": "[工号/姓名]",
  "steps": [
    {
      "step": "数据确认与验证",
      "executor": "ai",
      "data_source": {"type": "user_upload", "files": ["门头照.jpg", "银行流水.xlsx"]},
      "result": "pass"
    },
    {
      "step": "迭代推理验证",
      "executor": "ai",
      "data_source": {"type": "context"},
      "detection_points_count": 5,
      "high_confidence_count": 3,
      "low_confidence_count": 2,
      "result": "pass"
    }
  ],
  "detection_summary": {
    "total_points": 5,
    "confirmed_anomalies": 1,
    "suspected_anomalies": 2,
    "pending_verification": 2
  },
  "warnings": ["现场照片超过1个月，可能影响视觉评估置信度"],
  "references_used": ["references/fraud-patterns.md", "references/cross-validation-matrix.md", "references/confidence-rules.md"]
}
```

**审计日志保留期限**：至少3年。

## Gotchas

### #1：误判装修投入造假
- **症状**：现场照片显示高档装修，但银行流水无装修支出记录，系统判定为"疑似虚报装修"
- **原因**：装修可能由房东承担，租赁合同中有装修责任条款
- **解决**：每次检测到装修支出异常时，必须检查租赁合同，查看装修责任条款（参照`references/cross-validation-matrix.md`常见误判场景表）

### #2：流水远低于申报营收误判
- **症状**：银行流水金额远低于申报营收，判定为"收入虚报"
- **原因**：客户主要收款账户可能不在本行，或使用微信/支付宝等第三方支付
- **解决**：要求客户提供其他银行流水或第三方支付记录，核实总收款规模后再做结论

### #3：非营业时段拍摄误判停业
- **症状**：现场照片显示人少、货架稀疏，判定为"疑似停业/空壳经营"
- **原因**：拍摄时间可能为非营业时段（如清晨、深夜、休息日）
- **解决**：要求客户提供不同时段照片，或核实近期交易记录是否活跃

### #4：单一数据源无法交叉验证
- **症状**：仅提供单一类型材料（如仅有贷款申请书，无流水/照片），系统输出"待核实"
- **原因**：交叉验证原则要求每个检测点至少涉及2个独立数据源
- **解决**：在报告中明确标注"未覆盖XX维度"，列出缺失材料清单，建议补充后再评估

## Examples

### 示例1：标准餐饮企业反欺诈核验

**用户输入**：
```
请对"XX火锅餐饮有限公司"的贷款申请材料进行反欺诈核验。
行业：H62 餐饮业
上传材料：门头照.jpg、经营场所内部照.jpg、银行流水_近6月.xlsx、贷款申请书.pdf、工商营业执照.pdf
申报信息：月营业额30万，装修投入50万，经营面积200平米
```

**Skill执行流程**：
1. 步骤0：确认5份材料均在有效期内（近6个月流水、近1个月照片）
2. 步骤1：分类材料并提取关键字段（照片→面积200平米/装修中档/80座位；流水→月均流入35万）
3. 步骤2：加载餐饮行业反欺诈规则集与行业基准（每平米日均收入20-40元）
4. 步骤3：构建3个检测点（装修投入真实性、经营规模与流水匹配度、申报信息一致性）
5. 步骤4：迭代推理验证每个检测点（如装修估值16-40万 vs 申报50万，差异率25%-212%，但查阅租赁合同发现装修由房东承担，排除误判）
6. 步骤5：聚合报告，输出2个检测点"未发现异常"，1个"待核实"（建议补充他行流水）
7. 步骤6：运行验证脚本，确认7个必填章节完整，免责声明合规

**输出要点**：
- 核心结论：装修投入与经营规模未发现异常，流水与申报基本匹配
- 异常信号：无已确认异常，1个待核实事项（确认主要收款账户）
- 覆盖度：财务造假类✅、经营虚假类✅、身份与资质类⚠️（缺征信）、抵押物类⚠️（信用贷无抵押）

### 示例2：材料不完整降级模式

**用户输入**：
```
请对"XX零售商店"进行反欺诈核验。
上传材料：门头照.jpg、贷款申请书.pdf
```

**Skill执行流程**：
1. 步骤0：发现缺少银行流水、现场内部照片、财务报表等关键材料，标注"降级模式运行"
2. 步骤1-3：仅能构建1个检测点（申报信息一致性：门头照字号 vs 申请书字号）
3. 步骤4：由于仅单一数据源，置信度极低（<0.4），输出"待核实"
4. 步骤5：报告明确标注"未覆盖财务造假类/经营虚假类/身份与资质类/抵押物类"
5. 步骤6：验证通过，但报告包含大量"待核实"标注

**输出要点**：
- 核心结论：证据不足，无法完成有效反欺诈核验
- 待核实清单：建议补充近6个月银行流水、经营场所内部照片、财务报表、征信报告
- 覆盖度：全部4类欺诈均为⚠️未覆盖

## Out of Scope

- 本 Skill 不处理个人信贷/零售业务的材料核验（仅适用于企业信贷）
- 本 Skill 不生成信贷审批意见、风险定论或决策建议（仅提供风险提示信号）
- 本 Skill 不输出"高风险/低风险"等主观分级或违约概率预测（仅描述欺诈事实与异常信号）
- 本 Skill 不直接执行交易系统操作或对接审批系统（仅生成评估报告）
- 本 Skill 不进行非反欺诈场景的分析（如行业分析/估值建模/财务健康检查，请使用对应 Skill）
- 如果用户请求以上内容，明确告知并建议使用合适的 Skill 或联系信贷审批部门

