python如何快速登记凭证_如何高效地翻凭证?

内容摘要在记账凭证电子化存储的时代,如何快速地翻凭证、核对账实信息?

技术贴时间,代码很业余,专业人士请忽略!

问题背景

原始情况比较复杂,可以简化描述成如下的场景:

一次风险排查中偶然发现,系统导出的账户交易明细中经办人和原始记账凭证签字经办人员不一致。对这个疑点首先需要判断的就是这种情况是否普遍,然后再核查原因。

这就需要先对交易明细进行抽样,然后比对电子明细中的经办人和对原始记账凭证上的签名是否一致,根据比对结果评估总体情况。

这项工作面临的环境如下:交易明细很庞大,即使是抽样,样本数也很大,翻阅纸质原始凭证的工作量非常大。

原始凭证都已扫描成图像存储,且图像的尺寸(size)一致、文件名就是凭证号码。

凭证影像按照月份刻录成光盘备份,一般存在在“凭证影像”目录下。

解决思路

1.数据分析

账户交易明细的核心字段如下:

其中凭证号和原始凭证电子影像文件名一致,比如凭证号“20190321”对应的影像文件名是"20190321.jpg"。

凭证的电子影像示例如下:

755ddc0f8df1b8a4f05e4e2923ed5673.png

(图片来自网络,仅仅作为示例,侵删)

其中红色区域为经办人员签名区域,也是需要根据电子明细数据核对信息的区域。

2.实现路径

基于如上对原始数据和资料的分析,可以考虑:根据电子明细数据中的“凭证号”字段,查找对应的影像文件;

截取签名区域;

将截图插入到电子明细数据Excel文件中。

这样就可以基于电子明细数据快速进行比对,而不需要一边看数据、一边翻凭证,大大提高效率。

数据分析环境

本文分析所使用的环境具体如下:软件或环境说明Win10 64位系统环境

Python 2.7数据分析语言平台

openpyxl 2.6.4Excel读写库

PIL 1.1.7图像处理库

实现代码

代码可以按住屏幕,左右滑动查看

1.环境初始化# -*- coding:utf-8 -*-from openpyxl import load_workbookfrom openpyxl.utils import column_index_from_stringfrom openpyxl.drawing.image import Imagefrom PIL import Image as PILImageimport os, glob

2.打开明细文件进行相关设置# 打开明细Excel文件filename = u'凭证明细文件.xlsx'wb = load_workbook(filename)ws = wb.active# 根据图像宽度设置单元格的宽度ws.column_dimensions['F'].width = 70

3.查找凭证影像文件截图写入# 循环读取明细文件的“凭证号”字段 并判断相应的凭证影像文件是否存在# 如果存在从影像文件中截取相应的签名栏目 填充到Excel文件中# 如果不存在 则标注未找到凭证影像for row in range(2,ws.max_row+1):# 读取凭证号字段的值 查找影像文件 v = ws.cell(row=row, column=column_index_from_string('E')).valueif os.path.isfile(u'凭证影像/{}.jpg'.format(v)): print u'找到-凭证影像/{0}.jpg'.format(v) imgsigfile = u'凭证影像/{0}-tmp.jpg'.format(v) # 打开凭证图像文件 并根据签字的位置 截取成签字图像 with PILImage.open(u'凭证影像/{0}.jpg'.format(v)) as imgorg: imgsig = imgorg.crop(box=(50,310,550,340)) imgsig.save(imgsigfile) # 将截取的签字图像插入到Excel单元格中 print '插入到 F{0}'.format(row) ws.add_image(img=Image(imgsigfile), anchor= 'F{0}'.format(row)) ws.row_dimensions[row].height = imgsig.height*0.8 else: ws['F{0}'.format(row)] = u'未找到凭证影像'# 将插入签字图片的文件另存成一个新文件wb.save(u'添加签字图片-{0}'.format(filename))wb.close

4.清理生成的签字临时文件# 清理生成的签字临时文件for f in glob.glob(u'凭证影像/*-tmp.jpg'): os.remove(f)

5.处理结果

最后生成的电子明细数据表格(加签字图片-凭证明细文件.xlsx)如下。浏览这表格就可以快速比对经办人和签字人。

延伸思考

收集足够的经办人签字样本,进行机器学习训练。

基于训练结果,可以自动对凭证影像上的签字进行识别,判断流水中的经办人是否是签字人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值