这是一个基于Python的银行流水尽职调查报告自动生成系统。该系统能够自动处理银行流水数据,进行深入分析,并生成标准化的尽职调查报告,大大提高了尽调工作的效率和准确性。
⚠️ 注意:当前版本(V1.0.0)仅支持中国农业银行格式的对公银行流水处理。其他银行格式将在后续版本中支持。
-
数据处理与标准化
- 支持农业银行对公账户流水格式的数据读取
- 自动识别和标准化列名
- 数据清洗和格式化
-
数据真实性验证
- 余额连续性检查
- 活期利息核对
- Benford定律检验
- 未提交账户识别
-
经营实质分析
- 账户余额分析
- 借贷分析
- 现金流趋势分析
- 流入/流出构成分析
- 指标性支出分析
- 交易对手方分析
-
报告生成
- 自动生成Word格式报告
- 同步生成Markdown格式报告
- 标准化的报告结构和格式
flowchart TD
A[导入银行流水] --> B[数据处理与标准化]
B --> C[数据质量验证]
C --> D[指标计算与分析]
D --> E[生成尽调报告]
subgraph 数据处理阶段
B --> B1[列名标准化]
B1 --> B2[数据清洗]
B2 --> B3[数据转换]
end
subgraph 数据验证阶段
C --> C1[余额连续性检查]
C --> C2[活期利息核对]
C --> C3[Benford定律检验]
C --> C4[未提交账户识别]
end
subgraph 分析阶段
D --> D1[账户余额分析]
D --> D2[借贷分析]
D --> D3[现金流趋势]
D --> D4[流入流出构成]
D --> D5[指标性支出]
D --> D6[交易对手方分析]
end
classDiagram
class DataProcessor {
+read_excel()
+standardize_columns()
+clean_data()
+check_data_quality()
+identify_missing_accounts()
}
class MetricsCalculator {
+calculate_all_metrics()
+calculate_balance_metrics()
+analyze_loans()
+analyze_cash_flow()
+analyze_flow_composition()
+analyze_indicators()
+analyze_counterparties()
}
class ReportGenerator {
+generate_report()
}
class Main {
+run()
}
Main --> DataProcessor
Main --> MetricsCalculator
Main --> ReportGenerator
DataProcessor <-- MetricsCalculator
MetricsCalculator <-- ReportGenerator
- Python 3.7+
- 依赖包:
- pandas
- numpy
- python-docx
- openpyxl
- 克隆仓库
git clone https://github.com/weiwill88/bank-statement-analysis
cd bank-statement-analysis- 安装依赖
pip install -r requirements.txt- 启动程序
python main.py-
通过GUI界面:
- 选择农业银行格式的对公银行流水文件(.xls/.xlsx)
- 输入企业名称
- 点击"生成报告"按钮
-
程序将自动:
- 处理数据
- 进行分析
- 在output目录下生成报告
| 银行名称 | 对公账户 | 对私账户 | 支持状态 |
|---|---|---|---|
| 中国农业银行 | ✅ | ❌ | 已支持 |
| 中国工商银行 | ❌ | ❌ | 计划支持 |
| 中国建设银行 | ❌ | ❌ | 计划支持 |
| 中国银行 | ❌ | ❌ | 计划支持 |
| 其他银行 | ❌ | ❌ | 计划支持 |
bank-statement-analysis/ ├── main.py # 主程序入口 ├── data_processor.py # 数据处理模块 ├── metrics_calculator.py # 指标计算模块 ├── report_generator.py # 报告生成模块 ├── logger_config.py # 日志配置 ├── requirements.txt # 依赖包列表 ├── logs/ # 日志文件目录 └── output/ # 输出报告目录
-
日志配置:
- 日志文件保存在
logs目录 - 可在
logger_config.py中修改日志级别和格式
- 日志文件保存在
-
报告输出:
- 报告默认保存在
output目录 - 同时生成Word和Markdown格式
- 报告默认保存在
-
支持的银行流水格式:
- 当前版本仅支持中国农业银行对公账户Excel格式(.xls, .xlsx)
- 需包含基本的交易信息(日期、金额、交易对手等)
-
数据要求:
- 确保数据完整性
- 建议提供完整的对账单数据
mindmap
root((银行流水识别))
基于模板匹配
预定义特征模板
表头特征匹配
列名模式识别
数据格式特征
基于LLM分类
零样本分类
少样本学习
微调专用模型
多模态识别
混合方法
规则+LLM联合决策
置信度阈值切换
人机协作审核
持续学习改进
自适应流程
动态特征提取
增量式适应
反馈优化机制
新银行格式探测
这是一种传统但可靠的方法,主要思路包括:
-
预定义特征模板:为每种银行流水格式创建特征模板,包含列名、表头位置、数据样式等特征。
-
表头特征识别:通过分析Excel文件中可能的表头位置,提取潜在表头特征,与预定义模板进行匹配。
-
列结构分析:对数据列的数量、顺序和数据类型进行分析,不同银行的流水表格通常有特定的列结构模式。
-
关键词匹配:查找银行特有的关键词或术语(如账户名称格式、交易描述等)。
优点:处理速度快,逻辑清晰;缺点:难以应对格式变更,需要手动维护模板库。
利用大型语言模型的强大语义理解能力:
-
零样本分类:直接让LLM分析流水数据的特征并判断银行类型,无需预先训练特定银行格式。
-
少样本学习:提供少量各银行流水样例,LLM可推断出模式并应用于新数据。
-
专用模型微调:基于大量标注数据微调LLM,使其专注于银行流水识别任务。
-
多模态识别:结合文本和表格结构分析,利用LLM理解银行流水的视觉和语义特征。
优点:适应性强,可处理未见过的格式变体;缺点:计算资源需求高,可能需要API调用成本。
结合传统方法和LLM的优势:
-
规则+LLM联合决策:首先应用传统规则匹配,对于无法确定的情况调用LLM进行判断。
-
置信度切换机制:根据识别置信度动态决定是否调用更复杂的识别方法。
-
人机协作审核:在系统无法确定的情况下,引入人工确认环节并记录反馈。
-
模板自动生成:使用LLM分析新类型银行流水后,自动生成和更新匹配模板。
优点:平衡效率和准确性,成本控制更合理;缺点:系统设计复杂度增加。
使系统能够不断进化:
-
动态特征提取:通过分析用户提交的流水数据,持续提取新特征并更新识别库。
-
增量式适应:系统在处理新银行格式时不需完全重建,而是增量更新识别能力。
-
反馈优化机制:记录每次识别结果及用户反馈,持续优化识别准确率。
-
新格式探测:自动检测与现有模板显著不同的流水格式,并标记为潜在新银行类型。
优点:系统随使用不断进化,长期维护成本降低;缺点:需要精心设计学习机制和数据存储。
最优实施路径是从简单到复杂逐步构建:
- 首先实现基本的模板匹配系统,覆盖主要银行格式
- 引入简单LLM辅助功能,处理边缘情况
- 发展完整的混合系统,优化决策流程
- 最终实现自适应学习系统,降低长期维护成本
通过这种渐进式方法,可以在保证系统可用性的同时,逐步提高其智能化水平和适应能力。
欢迎提交Pull Request或Issue来帮助改进项目。贡献时请:
- Fork本仓库
- 创建您的特性分支
- 提交您的更改
- 确保代码规范和测试通过
- 提交Pull Request
本项目采用MIT许可证。详见 LICENSE 文件。
如有问题或建议,请通过以下方式联系:
- 提交Issue
- 发送邮件至:weiwill666@gmail.com
感谢所有为本项目提供建议和帮助的贡献者。