点蓝字关注 ↑↑↑ 设为星标☆优先赏阅数据化审计:问题导向、应用至上、解决痛点
内容摘要在记账凭证电子化存储的时代,如何快速地翻凭证、核对账实信息?技术贴时间,代码很业余,专业人士请忽略!
问题背景
原始情况比较复杂,可以简化描述成如下的场景:
一次风险排查中偶然发现,系统导出的账户交易明细中经办人和原始记账凭证签字经办人员不一致。对这个疑点首先需要判断的就是这种情况是否普遍,然后再核查原因。
这就需要先对交易明细进行抽样,然后比对电子明细中的经办人和对原始记账凭证上的签名是否一致,根据比对结果评估总体情况。
这项工作面临的环境如下:
交易明细很庞大,即使是抽样,样本数也很大,翻阅纸质原始凭证的工作量非常大。
原始凭证都已扫描成图像存储,且图像的尺寸(size)一致、文件名就是凭证号码。
凭证影像按照月份刻录成光盘备份,一般存在在“凭证影像”目录下。
解决思路
1.数据分析
账户交易明细的核心字段如下:
其中凭证号和原始凭证电子影像文件名一致,比如凭证号“20190321”对应的影像文件名是"20190321.jpg"。
凭证的电子影像示例如下:
(图片来自网络,仅仅作为示例,侵删)
其中红色区域为经办人员签名区域,也是需要根据电子明细数据核对信息的区域。
2.实现路径
基于如上对原始数据和资料的分析,可以考虑:
根据电子明细数据中的“凭证号”字段,查找对应的影像文件;
截取签名区域;
将截图插入到电子明细数据Excel文件中。
这样就可以基于电子明细数据快速进行比对,而不需要一边看数据、一边翻凭证,大大提高效率。
数据分析环境
本文分析所使用的环境具体如下:
软件或环境 | 说明 |
---|---|
Win10 64位 | 系统环境 |
Python 2.7 | 数据分析语言平台 |
openpyxl 2.6.4 | Excel读写库 |
PIL 1.1.7 | 图像处理库 |
实现代码
代码可以按住屏幕,左右滑动查看
1.环境初始化
# -*- coding:utf-8 -*-
from openpyxl import load_workbook
from openpyxl.utils import column_index_from_string
from openpyxl.drawing.image import Image
from PIL import Image as PILImage
import os, glob
2.打开明细文件进行相关设置
# 打开明细Excel文件
filename = u'凭证明细文件.xlsx'
wb = load_workbook(filename)
ws = wb.active
# 根据图像宽度设置单元格的宽度
ws.column_dimensions['F'].width = 70
3.查找凭证影像文件截图写入
# 循环读取明细文件的“凭证号”字段 并判断相应的凭证影像文件是否存在 # 读取凭证号字段的值 查找影像文件
'E')).value
4.清理生成的签字临时文件
# 清理生成的签字临时文件
for f in glob.glob(u'凭证影像/*-tmp.jpg'):
os.remove(f)
5.处理结果
最后生成的电子明细数据表格(加签字图片-凭证明细文件.xlsx)如下。浏览这表格就可以快速比对经办人和签字人。
延伸思考
收集足够的经办人签字样本,进行机器学习训练。
基于训练结果,可以自动对凭证影像上的签字进行识别,判断流水中的经办人是否是签字人。
相关阅读
Python应用 | 关联规则挖掘:让“影子账户”无所遁形
Python应用 | 利用社交网络分析(SNA)挖出“围标”线索
Python应用 | 如何快速Get到领导讲话重点?