360 Secure SkillHub
360 安全技能中心

银行对账单处理和转换(Bank statement processing and conversion)

解析 MT940(SWIFT)、国内银行 Excel 与 PDF 格式银行对账单,通过余弦相似度与可配置 JSON 映射完成字段匹配,生成 BIPV5、金蝶云星瀚、保融 ATS、九恒星司库、用友 NCC 五种系统的标准流水导入模板;支持单文件与批量合并转换,PDF 可选用 OCR 处理扫描件,并在本地模板缺失时从预配置地址下载模板。

jreadstone
jreadstone
热度 37.85
最近更新 2026-06-09 23:43:25
分类:效率依赖:代码执行 / 读写文件 / 第三方 API应用场景:文件转换 / 数据处理 / 财务 / 模板

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add imp-trm-accstmt
Metadata
name
BIPPI-imp-trm-accstmt
description
银行对账单转换为各系统标准银行账户流水导入模板的技能。当用户需要将银行对账单文件(MT940格式的SWIFT银行对账单、国内各银行的Excel格式对账单、或PDF格式对账单)转换为BIPV5、金蝶云星瀚(EAS_YXH)、保融ATS(FINGARD)、九恒星司库(NSTC)、用友NCC(YYNCC)等系统的标准导入模板时,**必须使用此技能**。 **核心功能**:解析MT940/Excel/PDF格式银行对账单 → 智能字段映射 → 生成对应系统标准Excel/xls导入模板 **支持的目标系统**: - **BIPV5**(默认):银行流水处理 Excel 模板 - **EAS_YXH**(金蝶云星瀚):离线明细导入 .xlsx 模板 - **FINGARD**(保融ATS):离线信息 .xls 模板 - **NSTC**(九恒星司库):批量导入银行明细格式 .xls 模板 - **YYNCC**(用友NCC):数据页签 .xls 模板 **必须触发场景**: - "银行对账单转换"、"MT940解析"、"银行流水导入模板" - "境外银行对账单"、"SWIFT对账单处理"、"生成BIP导入文件" - "PDF对账单转换"、"PDF银行流水"、"银行PDF导入" - "转换为金蝶云星瀚模板"、"EAS_YXH导入"、"金蝶流水导入" - "转换为保融ATS"、"FINGARD对账单"、"保融流水导入" - "转换为九恒星"、"NSTC导入"、"九恒星司库流水" - "转换为用友NCC"、"Yonyou NCC导入"、"NC流水" - "bank statement import"、"MT940 to BIP"、"PDF to BIP" - 处理MT940格式(TXT/STA文件)的银行对账单 - 国内银行Excel格式对账单转换(如招商银行、中信银行、兴业银行等) - 国内银行PDF格式对账单转换(如农商行、平安银行、恒丰银行、浙商银行、郑州银行等) - 批量转换多银行对账单生成导入模板(合并为单个文件) - 将银行流水数据导入到BIPV5、金蝶云星瀚、保融ATS、九恒星司库、用友NCC等系统 - 处理对账单中账号与交易明细分离的情况 - 当用户提到银行对账单、MT940、SWIFT、银行流水、账户流水、PDF对账单、金蝶/保融/九恒星/用友等关键词时 **输出位置**:默认情况下,输出文件将保存在与输入文件相同的目录中,保持数据同位置管理。 **特性说明**: - 支持MT940格式解析(SWIFT标准银行对账单) - 支持国内各银行Excel格式对账单(招商、中信、兴业、浦发、民生、徽商、广西北部湾、渤海、国开、中原等) - **支持国内各银行PDF格式对账单**(文本型PDF + 可选OCR支持图片型PDF) - 内置余弦相似度算法智能匹配字段(自动处理列名差异) - 支持对方账号/对方名称的多种别名匹配(对方账号、对手账号、收款账号等) - 可配置的JSON映射文件支持灵活扩展新的银行格式和目标系统 - 支持借贷标识自动分离、日期格式转换、币种处理 - 支持从表头区域自动提取本方账号信息 - 自动清理账号中的币种标识(如"账号(人民币)"自动处理) - PDF解析支持多种列头折行格式(如"交易时"+"间" → "交易时间") - PDF解析使用PyMuPDF的X/Y位置信息按列重组表格(不依赖固定列数) - 5 个目标系统的输出严格遵循各自模板格式(EAS_YXH 保留单元格批注和下拉项;FINGARD/NSTC/YYNCC 保留说明 sheet 和对照表) **注意**:本技能通过可配置的映射文件支持灵活扩展新的银行格式和目标系统,无需修改代码即可适应新的对账单格式。 **模板文件加载策略(兼容 clawhub 等不支持上传二进制模板的市场)**: - 5 个目标系统的导入模板位于 `assets/template/` 目录下: - `YYBIPV5_banktransaction.xlsx` — BIPV5 - `eas_yxh_banktransaction.xlsx` — 金蝶云星瀚 - `fingard_banktransaction.xls` — 保融ATS - `nstc_banktransaction.xls` — 九恒星司库 - `yyncc_banktransaction.xls` — 用友NCC - 当用户基于 clawhub 之类的市场安装本 skill,且 `assets/template/` 目录下缺失对应模板文件时,会自动从预配置的互联网地址下载到本地使用。 - 模板加载统一入口:`scripts/core/template_manager.py::resolve_template(target_system)`。
compatibility
{"python":"3.8+","dependencies":["openpyxl","pandas","scikit-learn","pymupdf","pillow","xlrd","xlwt"]}

BIPPI-imp-trm-accstmt - 银行对账单转换技能

将银行对账单文件(MT940格式、国内银行Excel格式或PDF格式)转换为目标系统的标准银行账户流水导入模板。

核心特性

  1. 多格式解析支持:通过插件化的解析器系统支持扩展(MT940/Excel/PDF)
  2. 多系统输出支持:通过插件化的映射器系统支持扩展:
    • BIPV5:银行流水处理 Excel 模板
    • EAS_YXH(金蝶云星瀚):离线明细导入 .xlsx 模板
    • FINGARD(保融ATS):离线信息 .xls 模板
    • NSTC(九恒星司库):批量导入银行明细格式 .xls 模板
    • YYNCC(用友NCC):数据页签 .xls 模板
  3. 智能字段匹配:使用余弦相似度算法匹配可能存在细微差异的列名
  4. 可配置映射:通过JSON配置文件管理字段映射关系
  5. 批量合并:支持将多个银行对账单合并为单个文件
  6. PDF支持:基于PyMuPDF的X/Y位置信息按列重组表格,兼容多种列头折行格式

支持的银行格式

国际格式

  • MT940 (SWIFT标准银行对账单)

国内银行Excel格式

国内银行PDF格式

使用方法

基本转换

单文件转换:

请将 平安银行.pdf 银行对账单转换为 目标 系统的导入模板

批量合并转换(将目录下所有对账单合并为单个文件):

将当前目录下所有银行对账单(MT940、Excel和PDF格式)合并转换为一个目标系统的导入模板

完整参数指定

将以下银行对账单转换为 BIPV5 系统导入模板:
- 输入文件:/path/to/平安银行.pdf
- 输出文件:/path/to/output/BIPV5_平安银行.xlsx
- 目标系统:BIPV5
- 账户组织编码:ORG001
- 银行名称:平安银行

输出位置说明

转换模式 默认输出位置
单文件转换 与输入文件相同目录
批量合并转换 与输入目录相同位置
指定输出路径 用户指定路径

输出文件名格式:

  • 单文件:{原文件名}_BIPV5.xlsx
  • 合并文件:merged_BIPV5.xlsx

工作流程

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│  输入文件       │───▶│  格式解析器     │───▶│  数据映射器     │───▶│  输出生成器     │
│  (MT940/Excel/  │    │  (Parser)       │    │  (Mapper)       │    │  (Excel)        │
│   PDF)          │    │                 │    │                 │    │                 │
└─────────────────┘    └─────────────────┘    └─────────────────┘    └─────────────────┘
                              │                      │                      │
                              ▼                      ▼                      ▼
                       parsers/              mappings/               输出文件
                       mt940_parser.py       mt940_to_bipv5.json     BIPV5_银行流水.xlsx
                       excel_parser.py
                       pdf_parser.py

BIPV5目标字段

字段代码 中文名称 必填 说明
accentity_code 账户使用组织编码 否 组织编码
bankaccount_account *银行账号 是 银行账号
bankNumber_name 银行名称 否 开户行名称
bank_seq_no *本方交易流水号 是 银行流水序号
tran_date *交易日期 是 交易日期YYYY-MM-DD
tran_time 交易时间 否 交易时间HH:MM:SS
dc_flag 借贷标识 否 C=贷,D=借
debitamount 支出金额 否 借方发生额
creditamount 收入金额 否 贷方发生额
currency_name *币种 是 ISO币种代码
tran_amt 金额 否 交易金额
to_acct_no 对方账号 否 交易对方账号
to_acct_name 对方户名 否 交易对方名称
to_acct_bank_name 对方银行名称 否 对方银行
use_name 用途 否 资金用途
remark 摘要 否 交易摘要
remark01 附言 否 附加说明
acct_bal 余额 否 账户余额

解析器系统

MT940解析器

MT940格式关键字段映射:

MT940 Tag 说明 示例
:20: 交易参考号 STMT24010001
:25: 账号识别 1234567890
:28C: 语句编号 1/1
:60F: 期初余额 D240101USD1000,00
:61: 交易记录 日期+借贷+金额
:86: 交易详情 对方名称等
:62F: 期末余额 C240131USD1500,00

Excel解析器特性

  1. 智能表头识别:自动查找包含"交易日期"或"交易时间"的行作为表头
  2. 账号自动提取:从表头区域提取本方账号、户名、币种信息
  3. 币种清理:自动清理账号中的币种标识
  4. 字段智能匹配:使用余弦相似度匹配各种列名格式

PDF解析器特性

  1. 双模式支持:

    • 文本型PDF(默认):使用 PyMuPDF 的 page.get_text() 直接提取文字
    • 图片型PDF(可选):通过可插拔 OCR 接口(默认 Tesseract)识别
  2. 位置信息驱动:使用 PyMuPDF 的 X/Y 坐标信息按列重组表格,不依赖固定列数

  3. 列头归一化:智能处理多种列头折行格式:

    • 中文两行折行(如 交易时 + 间 → 交易时间)
    • 中英文对照(如 贷方发 + 生额(收 + 入) → 贷方发生额(收入))
    • 含括号元(如 发生金额(元) → 发生金额)
  4. 可插拔OCR接口:

    from scripts.parsers.pdf_parser import PDFParser, TesseractOCR
    
    parser = PDFParser()
    parser.set_ocr_backend(TesseractOCR())  # 注入 Tesseract OCR
    data = parser.parse('image_based.pdf')
    
  5. 多页PDF自动合并:跨页交易表自动识别(按 Y 坐标分组、按 X 坐标排序列)

添加新解析器

  1. 在 scripts/parsers/ 目录创建新的解析器文件
  2. 继承 BaseParser 类
  3. 实现 parse() 和 detect_format() 方法
  4. 在 scripts/core/parser_factory.py 中注册

输出文件格式

BIPV5 Excel模板结构

模板文件: assets/template/YYBIPV5_banktransaction.xlsx
Sheet: 银行流水处理
├── Row 1-3: 模板说明
├── Row 4: 英文字段名 (id, accentity_code, bankaccount_account, ...)
├── Row 5: 空行
├── Row 6: 中文字段名 (*银行账号, *本方交易流水号, ...)
├── Row 7-9: 空行
└── Row 10+: 数据行

目录结构

BIPPI-imp-trm-accstmt/
├── SKILL.md                    # 技能说明文件
├── scripts/
│   ├── main.py                 # 主入口
│   ├── core/
│   │   ├── data_structures.py  # 数据结构定义
│   │   ├── parser_factory.py   # 解析器工厂
│   │   ├── mapper_factory.py   # 映射器工厂
│   │   ├── cosine_similarity.py # 余弦相似度工具
│   │   ├── currency_map.py     # 币种代码映射
│   │   └── template_manager.py # 模板文件管理器(本地查找+自动下载)
│   ├── parsers/
│   │   ├── base_parser.py      # 解析器基类
│   │   ├── mt940_parser.py     # MT940解析器
│   │   ├── excel_parser.py     # 国内银行Excel解析器
│   │   └── pdf_parser.py       # 国内银行PDF解析器(文本+可插拔OCR)
│   ├── mappers/
│   │   ├── base_mapper.py      # 映射器基类
│   │   ├── _xls_template_helpers.py # xls模板写入辅助
│   │   ├── bipv5_mapper.py     # BIPV5映射器
│   │   ├── eas_yxh_mapper.py   # 金蝶云星瀚映射器
│   │   ├── fingard_mapper.py   # 保融ATS映射器
│   │   ├── nstc_mapper.py      # 九恒星司库映射器
│   │   └── yyncc_mapper.py     # 用友NCC映射器
│   └── mappings/
│       └── mt940_to_bipv5.json # MT940到BIPV5映射配置
├── assets/
│   └── template/               # 5 个目标系统的导入模板
│       ├── YYBIPV5_banktransaction.xlsx
│       ├── eas_yxh_banktransaction.xlsx
│       ├── fingard_banktransaction.xls
│       ├── nstc_banktransaction.xls
│       └── yyncc_banktransaction.xls
├── references/
│   ├── currency.md             # 币种代码参考
│   └── User Guide - Exporting Data in SWIFT MT940 Format[1].pdf
└── evals/
    └── evals.json              # 测试用例

常用命令

# 单文件转换(输出到输入文件同目录)
python scripts/main.py input.xlsx
python scripts/main.py input.pdf

# 单文件转换(指定输出路径)
python scripts/main.py input.xlsx -o output/BIPV5_output.xlsx
python scripts/main.py input.pdf -o output/BIPV5_output.xlsx

# 批量转换(每个文件单独输出到输入目录)
python scripts/main.py --batch -i ./input_dir

# 批量合并(输出到输入目录)
python scripts/main.py --merge -i ./input_dir

# 批量合并(指定输出文件)
python scripts/main.py --merge -i ./input_dir -o ./output/merged.xlsx

依赖要求

  • Python 3.8+
  • openpyxl
  • pandas
  • scikit-learn (用于余弦相似度匹配)
  • pymupdf (PyMuPDF,用于PDF文本提取)
  • pillow (PIL,用于OCR图片处理)

安装依赖:

pip install openpyxl pandas scikit-learn pymupdf pillow

如需OCR支持图片型PDF(可选):

pip install pytesseract
# 还需要安装系统级 Tesseract:Windows 从 https://github.com/UB-Mannheim/tesseract/wiki 下载并安装
# 安装中文语言包(chi_sim),然后在 PDFParser 中注入:
#   parser.set_ocr_backend(TesseractOCR())

PDF处理已知限制

  1. 浦发银行对账单(英文+中文混合版式):当前通用启发式无法准确解析,列头散布在多 Y 位置。建议先用 Adobe/PDF转Excel工具预处理。
  2. 强加密PDF:受密码保护的PDF需先解密。
  3. 扫描型PDF:默认未启用OCR,需安装Tesseract并注入OCR后端。
  4. 跨页表格:当前已支持基础的多页合并,但极端情况下表头只出现在第一页。

错误处理

错误代码 说明 处理建议
E001 无法识别文件格式 检查文件是否为有效的MT940/Excel/PDF格式
E002 解析失败 检查文件内容是否符合规范
E003 必填字段缺失 检查映射配置是否完整
E004 日期格式错误 检查日期字段格式配置
E005 金额格式错误 检查金额字段格式配置
E006 映射配置错误 检查JSON配置文件语法
E007 输出目录不存在 创建输出目录
E008 PDF无可提取文字且未配置OCR 安装Tesseract OCR并注入后端,或预转换PDF为文本型
E009 PDF页面无文字层且无图片 检查PDF是否有效

扩展指南

添加新的银行对账单格式

  1. 创建新的解析器类继承 BaseParser
  2. 实现 parse() 和 detect_format() 方法
  3. 创建对应的映射配置文件
  4. 在 parser_factory.py 中注册

添加新的目标系统

  1. 创建新的映射器类继承 BaseMapper
  2. 实现到新系统的字段映射
  3. 在 mapper_factory.py 中注册
  4. 创建对应的目标模板文件

接入新的OCR后端

  1. 实现 OCRBackend 接口的 image_to_text 方法
  2. 通过 PDFParser.set_ocr_backend(your_backend) 注入
  3. 适用于:百度OCR、阿里云OCR、腾讯云OCR、PaddleOCR等