Skip to content

weiwill88/bank-statement-analysis

Repository files navigation

银行流水尽职调查报告生成系统

Python 3.7+ License: MIT Version: 1.0.0 Bank: Agricultural Bank

项目简介

这是一个基于Python的银行流水尽职调查报告自动生成系统。该系统能够自动处理银行流水数据,进行深入分析,并生成标准化的尽职调查报告,大大提高了尽调工作的效率和准确性。

⚠️ 注意:当前版本(V1.0.0)仅支持中国农业银行格式的对公银行流水处理。其他银行格式将在后续版本中支持。

主要功能

  1. 数据处理与标准化

    • 支持农业银行对公账户流水格式的数据读取
    • 自动识别和标准化列名
    • 数据清洗和格式化
  2. 数据真实性验证

    • 余额连续性检查
    • 活期利息核对
    • Benford定律检验
    • 未提交账户识别
  3. 经营实质分析

    • 账户余额分析
    • 借贷分析
    • 现金流趋势分析
    • 流入/流出构成分析
    • 指标性支出分析
    • 交易对手方分析
  4. 报告生成

    • 自动生成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
Loading

系统架构

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
Loading

系统要求

  • Python 3.7+
  • 依赖包:
    • pandas
    • numpy
    • python-docx
    • openpyxl

安装说明

  1. 克隆仓库
git clone https://github.com/weiwill88/bank-statement-analysis
cd bank-statement-analysis
  1. 安装依赖
pip install -r requirements.txt

使用说明

  1. 启动程序
python main.py
  1. 通过GUI界面:

    • 选择农业银行格式的对公银行流水文件(.xls/.xlsx)
    • 输入企业名称
    • 点击"生成报告"按钮
  2. 程序将自动:

    • 处理数据
    • 进行分析
    • 在output目录下生成报告

银行格式支持

银行名称 对公账户 对私账户 支持状态
中国农业银行 已支持
中国工商银行 计划支持
中国建设银行 计划支持
中国银行 计划支持
其他银行 计划支持

项目结构

bank-statement-analysis/ ├── main.py # 主程序入口 ├── data_processor.py # 数据处理模块 ├── metrics_calculator.py # 指标计算模块 ├── report_generator.py # 报告生成模块 ├── logger_config.py # 日志配置 ├── requirements.txt # 依赖包列表 ├── logs/ # 日志文件目录 └── output/ # 输出报告目录

配置说明

  1. 日志配置:

    • 日志文件保存在logs目录
    • 可在logger_config.py中修改日志级别和格式
  2. 报告输出:

    • 报告默认保存在output目录
    • 同时生成Word和Markdown格式

注意事项

  1. 支持的银行流水格式:

    • 当前版本仅支持中国农业银行对公账户Excel格式(.xls, .xlsx)
    • 需包含基本的交易信息(日期、金额、交易对手等)
  2. 数据要求:

    • 确保数据完整性
    • 建议提供完整的对账单数据

LLM动态识别银行流水实现思路

mindmap
  root((银行流水识别))
    基于模板匹配
      预定义特征模板
      表头特征匹配
      列名模式识别
      数据格式特征
    基于LLM分类
      零样本分类
      少样本学习
      微调专用模型
      多模态识别
    混合方法
      规则+LLM联合决策
      置信度阈值切换
      人机协作审核
      持续学习改进
    自适应流程
      动态特征提取
      增量式适应
      反馈优化机制
      新银行格式探测
Loading

基于模板匹配的方法

这是一种传统但可靠的方法,主要思路包括:

  1. 预定义特征模板:为每种银行流水格式创建特征模板,包含列名、表头位置、数据样式等特征。

  2. 表头特征识别:通过分析Excel文件中可能的表头位置,提取潜在表头特征,与预定义模板进行匹配。

  3. 列结构分析:对数据列的数量、顺序和数据类型进行分析,不同银行的流水表格通常有特定的列结构模式。

  4. 关键词匹配:查找银行特有的关键词或术语(如账户名称格式、交易描述等)。

优点:处理速度快,逻辑清晰;缺点:难以应对格式变更,需要手动维护模板库。

基于LLM的动态识别方法

利用大型语言模型的强大语义理解能力:

  1. 零样本分类:直接让LLM分析流水数据的特征并判断银行类型,无需预先训练特定银行格式。

  2. 少样本学习:提供少量各银行流水样例,LLM可推断出模式并应用于新数据。

  3. 专用模型微调:基于大量标注数据微调LLM,使其专注于银行流水识别任务。

  4. 多模态识别:结合文本和表格结构分析,利用LLM理解银行流水的视觉和语义特征。

优点:适应性强,可处理未见过的格式变体;缺点:计算资源需求高,可能需要API调用成本。

混合方法

结合传统方法和LLM的优势:

  1. 规则+LLM联合决策:首先应用传统规则匹配,对于无法确定的情况调用LLM进行判断。

  2. 置信度切换机制:根据识别置信度动态决定是否调用更复杂的识别方法。

  3. 人机协作审核:在系统无法确定的情况下,引入人工确认环节并记录反馈。

  4. 模板自动生成:使用LLM分析新类型银行流水后,自动生成和更新匹配模板。

优点:平衡效率和准确性,成本控制更合理;缺点:系统设计复杂度增加。

自适应学习机制

使系统能够不断进化:

  1. 动态特征提取:通过分析用户提交的流水数据,持续提取新特征并更新识别库。

  2. 增量式适应:系统在处理新银行格式时不需完全重建,而是增量更新识别能力。

  3. 反馈优化机制:记录每次识别结果及用户反馈,持续优化识别准确率。

  4. 新格式探测:自动检测与现有模板显著不同的流水格式,并标记为潜在新银行类型。

优点:系统随使用不断进化,长期维护成本降低;缺点:需要精心设计学习机制和数据存储。

实施路径建议

最优实施路径是从简单到复杂逐步构建:

  1. 首先实现基本的模板匹配系统,覆盖主要银行格式
  2. 引入简单LLM辅助功能,处理边缘情况
  3. 发展完整的混合系统,优化决策流程
  4. 最终实现自适应学习系统,降低长期维护成本

通过这种渐进式方法,可以在保证系统可用性的同时,逐步提高其智能化水平和适应能力。

贡献指南

欢迎提交Pull Request或Issue来帮助改进项目。贡献时请:

  1. Fork本仓库
  2. 创建您的特性分支
  3. 提交您的更改
  4. 确保代码规范和测试通过
  5. 提交Pull Request

许可证

本项目采用MIT许可证。详见 LICENSE 文件。

联系方式

如有问题或建议,请通过以下方式联系:

致谢

感谢所有为本项目提供建议和帮助的贡献者。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages