本技能用于批量处理信贷审批场景中的多份压缩包资料(贷前资料整理),自动完成:
方式一:一键安装(Windows 双击运行)
双击 install_deps.bat
方式二:命令行安装
pip install -r requirements.txt
核心依赖:
| 包名 | 用途 | 必须 |
|------|------|------|
| python-docx | Word 文档读取 | 是 |
| openpyxl | Excel 读写 | 是 |
| pdfplumber | PDF 文本提取 | 是 |
| PyPDF2 | PDF 文本提取(备选) | 是 |
| rarfile | .rar 格式支持 | 可选 |
| py7zr | .7z 格式支持 | 可选 |
> 脚本启动时会自动检测依赖完整性,缺失时给出安装提示。
| 脚本 | 功能 | 状态 |
|------|------|------|
| scripts/run_all.py | 一键全流程(推荐) | 活跃 |
| scripts/batch_extract.py | 批量解压 + 三重主体识别 | 活跃 |
| scripts/archive_classifier.py | 分级智能分类 + 归档 + 统计表 | 活跃 |
| scripts/deprecated/ | V1 废弃代码存档 | 已废弃 |
参考文档:references/credit_approval_spec.md
识别目标:找出所有主体 + 判断每个主体的性质(自然人 / 公司)
性质判断规则:
不是所有文件都需要读内容,按风险分三级处理,兼顾速度与准确率。
文件名特征明确、低歧义,直接按文件名归档:
身份证.jpg、户口本.pdf → 身份资料
营业执照.pdf、公司章程.pdf → 工商资质
文件名高歧义、容易分错,读取内容后与文件名判断对比:
IMG_xxxx、扫描件_xxx
双重验证规则:
文件名判断分类 ←→ 内容读取分类
↓
两者一致 → 直接归档
两者不一致 → 以内容分类为准,记入异常日志
内容无法读取(扫描件/图片型PDF)→ 以文件名分类为准,标记待人工核查
读取成本高但收益低,直接兜底:
Phase 3 结束后额外生成 文件名异常清单.xlsx:
| 文件名 | 文件名判断分类 | 内容判断分类 | 最终归档位置 | 备注 |
|--------|-------------|------------|------------|------|
| 借款合同.pdf | 负债合同 | 银行流水 | 04_银行流水 | 文件名与内容不符,已按内容归档 |
| IMG_0023.pdf | 无法判断 | 无法读取 | 09_其他附件 | 扫描件,待人工核查 |
python scripts/batch_extract.py <压缩包路径...> -o <输出目录>
退出码 2 表示存在待确认文件。
> 核心原则:客户未看过文件内容,只能确认自己已知的信息。 客户知道"有哪几个主体、分别是自然人还是公司",但不知道文件里具体有什么。因此 Phase 2 只问客户能回答的问题,文件内容的识别与归类全部由 AI 自动完成。
已识别到以下主体,请确认:
| # | 名称 | 性质 | 文件数 | 是否保留 |
|---|------------------|----------------|--------|---------|
| 1 | 张三 | 自然人(待确认)| 23 | 是 |
| 2 | 锦程实业有限公司 | 公司(待确认) | 18 | 是 |
请确认:
1. 以上主体名单是否完整?有无遗漏或多余?
2. 每个主体的性质(自然人 / 公司)是否正确?
用户回复"确认"或指出修正项后进入第二步。
精确修正(corrections.json):
[
{"entity_name": "张三", "entity_type": "公司"},
{"entity_name": "锦程实业有限公司", "remove": true}
]
请确认归档文件的存放位置。
建议:
- 非系统盘的专用文件夹(如 D:\信贷归档\)
- 避免使用系统盘根目录、桌面或系统目录
> 请输入目标路径:
路径校验规则:
仅以上两步需要用户确认,之后直接进入 Phase 3。
> 客户未看过文件内容,无法判断合同归属,因此负债合同归组由 AI 通过文件名关键词 + 内容识别自动完成:
> - 文件名含银行名 → 归入对应贷款文件夹
> - 内容中提取到贷款方/银行名 → 归入对应贷款文件夹
> - 多份合同内容指向同一笔贷款(相同金额/日期/银行)→ 自动归组
> - 无法自动归组的 → 放入"待归属合同"子文件夹,在归档清单中标注"待人工确认归属"
python scripts/archive_classifier.py -o <输出目录>
按分级处理策略执行,完成后输出:
| 编号 | 目录 | 典型内容 | 子文件夹 |
|------|------|---------|---------|
| 01 | 身份资料 | 身份证、户口本、更名证明、户籍证明、出生公证、身份证明等身份佐证文件 | — |
| 02 | 婚姻家庭 | 结婚证、离婚证、配偶身份证 | — |
| 03 | 收入资料 | 工资流水、纳税证明、收入证明(不含简历,简历归09_其他附件) | — |
| 04 | 银行流水 | 个人银行对账单 | 按银行名 / 年度 |
| 05 | 资产证明 | 房产证、车辆登记证、不动产证明、股权证明、拟抵押给本次贷款的资产清单 | 不动产 / 车辆 / 其他资产 |
| 06 | 征信报告 | 个人征信 | — |
| 07 | 负债合同 | 借款合同、担保合同、抵押合同、质押合同、已抵押给其他机构的抵押物清单 | 按贷款笔数(贷款01_银行名_年份) |
| 08 | 其他合同 | 房租合同、劳动合同及其他与经营负债无关合同 | — |
| 09 | 其他附件 | 兜底 + 简历,不属于以上分类的文件 | — |
| 10 | 主体身份证明 | 关联人身份证件(配偶、担保人等非本主体的个人证件),按关联人姓名建子文件夹 | — |
自然人银行流水子文件夹结构:
04_银行流水/
├── 工商银行/
│ ├── 2024/
│ └── 2023/
├── 建设银行/
└── 其他银行/
自然人资产证明子文件夹结构:
05_资产证明/
├── 不动产/ ← 房产证、不动产权证
├── 车辆/ ← 行驶证、车辆登记证
└── 其他资产/ ← 股权证明、存款证明等
自然人负债合同子文件夹结构:
07_负债合同/
├── 贷款01_工商银行_2023/
│ ├── 借款合同.pdf
│ ├── 担保合同.pdf
│ └── 抵押合同.pdf
├── 贷款02_建设银行_2024/
│ └── 借款合同.pdf
└── 待归属合同/ ← 用户未能确认归属的合同
| 编号 | 目录 | 典型内容 | 子文件夹 |
|------|------|---------|---------|
| 01 | 工商资质 | 营业执照、章程、股东名册、组织机构代码证、税务登记证、各类资质证书 | 证照文件 / 公司章程 / 股权结构 |
| 02 | 财务资料 | 财务报表、审计报告、纳税申报表、完税证明、纳税证明(不含负债明细) | — |
| 03 | 银行流水 | 企业对公账户流水 | 按银行名 / 年度 |
| 04 | 负债资料 | 征信报告 + 借款合同、担保合同、授信合同、抵押合同、负债明细表、已抵押给其他机构的抵押物清单(不含拟抵押资产) | 征信报告 / 按贷款笔数 |
| 05 | 经营性合同 | 与主营业务直接相关的合同(注意:资质证书归01_工商资质,不在此处) | 上游合同 / 下游合同 |
| 06 | 其他合同 | 房租、物业、车辆租赁等与经营负债无关合同 | — |
| 07 | 影像资料 | 经营场所照片、抵押物现场照片(不含身份证件) | — |
| 08 | 其他附件 | 兜底,不属于以上分类的文件 | — |
| 09 | 资产清单 | 拟抵押给本次贷款的资产(拟抵押物清单、担保物清单、抵押物评估)、不动产清单、资产评估报告、车辆登记清单 | 不动产 / 设备车辆 / 其他资产 |
| 10 | 主体身份证明 | 关联人身份证件(借款人配偶、担保人等非本主体的个人证件),按关联人姓名建子文件夹 | — |
公司银行流水子文件夹结构:
03_银行流水/
├── 工商银行/
│ ├── 2024/
│ └── 2023/
├── 建设银行/
└── 其他银行/
公司工商资质子文件夹结构:
01_工商资质/
├── 证照文件/ ← 营业执照、组织机构代码证、税务登记证、各类资质证书(施工/开发/经营许可等)
├── 公司章程/
└── 股权结构/ ← 股东名册、股权证明、验资报告
公司负债资料子文件夹结构:
04_负债资料/
├── 征信报告/
├── 贷款01_农业银行_2022/
│ ├── 借款合同.pdf
│ ├── 担保合同.pdf
│ └── 授信协议.pdf
├── 贷款02_XX银行_2024/
├── 待归属合同/
└── 负债明细.xls ← 负债汇总表归此处,不归财务资料
公司资产清单子文件夹结构(仅放拟抵押资产,不放已抵押负债):
09_资产清单/
├── 不动产/ ← 拟抵押的不动产清单、抵押物评估报告
├── 设备车辆/ ← 拟抵押的车辆登记清单、设备清单
└── 其他资产/ ← 其他拟抵押资产清单
已抵押物清单归类说明:
已抵押给其他机构的抵押物清单 → 归入04_负债资料(与对应贷款合同放一起)
识别关键词:已抵押、抵押给XX银行、他项权证、存量抵押、现有抵押
拟抵押给本次贷款的资产清单 → 归入09_资产清单
识别关键词:拟抵押、本次抵押、担保物清单、抵押物评估、抵押物清单(无"已抵押"语境)
无法区分时 → 读取内容判断抵押物是否已设定他项权利,仍无法判断则归入09_资产清单并标注"待人工确认抵押状态"
公司主体身份证明子文件夹结构:
10_主体身份证明/
├── 刘XX/ ← 配偶或担保人身份证件
├── 王XX/ ← 配偶或担保人身份证件
└── ... ← 按关联人姓名各建一个子文件夹
公司经营性合同子文件夹结构:
05_经营性合同/
├── 上游合同/ ← 采购、供应、原材料合同
└── 下游合同/ ← 销售、施工、承包合同
负债合同关键词(借款/担保/授信/抵押/质押)← 最高优先级,命中直接进负债合同
负债辅助材料关键词(负债明细)← 归04_负债资料,不归02_财务资料
抵押物清单关键词 ← 按抵押状态区分:已抵押 → 归04_负债资料;拟抵押 → 归09_资产清单
资质证书关键词(资质证书/许可证/营业执照)← 归01_工商资质/证照文件,不归05_经营性合同
纳税申报表关键词(纳税申报/完税证明/纳税证明)← 归02_财务资料,不归08_其他附件
身份证件关键词(身份证/护照/军官证)← 关联人的归10_主体身份证明
简历关键词(简历/个人简历/履历)← 归09_其他附件,不归03_收入资料
身份佐证关键词(更名/户籍/出生公证/身份证明)← 归01_身份资料,不归09_其他附件
↓ 否
【第一级】文件名低歧义 → 直接按文件名归档,不读内容
↓ 高歧义/无法判断
【第二级】读取内容双重验证
文件名分类 vs 内容分类:
- 一致 → 归档
- 不一致 → 以内容为准,记入异常日志
- 内容无法读取 → 以文件名为准,标记待人工核查
↓ 扫描件/完全无法判断
【第三级】直接归入其他附件,标记待人工核查
<输出目录>/
├── 审批资料包/
│ ├── 自然人_张三/
│ │ ├── 01_身份资料/
│ │ ├── 02_婚姻家庭/
│ │ ├── 03_收入资料/
│ │ ├── 04_银行流水/
│ │ │ ├── 工商银行/
│ │ │ │ ├── 2024/
│ │ │ │ └── 2023/
│ │ │ └── ★银行流水统计表.xlsx
│ │ ├── 05_资产证明/
│ │ │ ├── 不动产/
│ │ │ ├── 车辆/
│ │ │ └── 其他资产/
│ │ ├── 06_征信报告/
│ │ ├── 07_负债合同/
│ │ │ ├── 贷款01_工商银行_2023/
│ │ │ ├── 贷款02_建设银行_2024/
│ │ │ └── 待归属合同/
│ │ ├── 08_其他合同/
│ │ ├── 09_其他附件/
│ │ └── 10_主体身份证明/
│ │ └── 配偶XXX/
│ ├── 公司_锦程实业有限公司/
│ │ ├── 01_工商资质/
│ │ │ ├── 证照文件/
│ │ │ ├── 公司章程/
│ │ │ └── 股权结构/
│ │ ├── 02_财务资料/
│ │ ├── 03_银行流水/
│ │ │ ├── 农业银行/
│ │ │ │ └── 2024/
│ │ │ └── ★银行流水统计表.xlsx
│ │ ├── 04_负债资料/
│ │ │ ├── 征信报告/
│ │ │ ├── 贷款01_农业银行_2022/
│ │ │ └── 待归属合同/
│ │ ├── 05_经营性合同/
│ │ │ ├── 上游合同/
│ │ │ └── 下游合同/
│ │ ├── 06_其他合同/
│ │ ├── 07_影像资料/
│ │ ├── 08_其他附件/
│ │ ├── 09_资产清单/
│ │ │ ├── 不动产/
│ │ │ ├── 设备车辆/
│ │ │ └── 其他资产/
│ │ └── 10_主体身份证明/
│ │ ├── 刘XX/
│ │ └── 王XX/
│ └── ★项目资料总归档清单.xlsx
│ (树状结构:主体行深蓝底→分类行浅蓝底→子分类行灰蓝底→文件行白底,
│ 按主体→分类目录→子分类→文件逐层缩进展示)
├── ★合同信息统计表.xlsx
├── ⚠文件名异常清单.xlsx(如有异常)
└── entities_full_meta.json
| 问题 | 原因 | 解决方案 |
|------|------|---------|
| [错误] 未安装 openpyxl | 缺少核心依赖 | pip install -r requirements.txt |
| PDF 内容读取为空 | 未安装 pdfplumber 或 PyPDF2 | pip install pdfplumber PyPDF2 |
| .rar 文件被跳过 | 未安装 rarfile | pip install rarfile |
| .7z 文件被跳过 | 未安装 py7zr | pip install py7zr |
| 解压后文件名乱码 | ZIP 编码问题(cp437 vs gbk) | 脚本已自动处理中文文件名编码 |
| Excel 中文字体显示异常 | 系统缺少中文字体 | 脚本自动检测系统字体并回退 |
| entities_full_meta.json 未找到 | 跳过了 Phase 1 | 必须先运行 batch_extract.py |
| 所有文件归入"其他附件" | 文件名无关键词且内容不可读 | 检查 ⚠文件名异常清单.xlsx,手动归档 |
# Step 1: 解压 + 主体识别
python scripts/batch_extract.py F:\资料\金谋资料.zip -o F:\信贷归档\金谋
# Step 2: 标准化归档
python scripts/archive_classifier.py -o F:\信贷归档\金谋
# 或一键全流程
python scripts/run_all.py F:\资料\金谋资料.zip -o F:\信贷归档\金谋
自然人_姓名,公司用 公司_公司名
贷款序号_贷款银行_年份,序号从01开始
共 4 个版本