通过python对纸质签到表进行统计

这篇博客分享了如何通过Python对纸质签到表进行自动化统计,详细介绍了从图片处理到二值化分析的步骤,以及核心逻辑和完整代码。作者通过此工具解决了大量手动统计的困扰,同时反思了函数命名规范的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过python对纸质签到表进行统计

单位取消了刷脸签到,改用纸质签到。不幸交由我负责,更不幸还要求对签到情况进行统计。签到人员六十几人,一天四张签到表,一个月下来就非常多,人工统计太低效和浪费人了。网上找了一圈没找到合适方式,所以愤而写了这个小工具,把我从枯燥工作中解放。

Github地址:https://github.com/caspiankexin/small_python_program

Gitee地址:https://gitee.com/caspiankexin/small_python_program

1.确定思路

先上签到表示例
签到表示例
签到表虽多,但为统一格式大小,且人员长久不会变动。

  1. 首先将所有签过的签到表扫描为jpg格式图片。
  2. 先将每页的所有签字部分切割出来,放在此签到表的文件夹下,并有规律的命名。
  3. 判断每个切割的小图中黑色的占比,达到一定比例说明此处已签到。
  4. 通过一定顺序打开、切割和识别图片,加一或加零,来进行统计多张签到表。

2.程序编写

2.1得到文件夹下所有签到图片的路径

def all_file_names(path):
    file_names = os.listdir(path)  # 得到文件夹下的所有文件名称
    file_paths = [path + '/' + str(i) for i in file_names]  # 得到文件夹下的所有文件的路径地址
    return file_paths

2.2确定位置,将签字处切割并保存,返回小图的路径

def cut_one_original_file(file_path):
    #打开一张图
    img = Image.open(file_path)
    img_size = img.size
    H = img_size[1]  # 图片高度
    W = img_size[0]  # 图片宽度

    # 不变的签名框的尺寸大小
    w = 0.078597 * W
    h = 0.019047 * H
    parameter_p = 0

    # 确定列数columns和行书rows
    columns = range(3)
    rows = range(22)

    for column in columns:
        x = ((375 + (414 * column))/1654) * W    # 选定区域的的左边距位置,同一列的情况下,x不变
        for row in rows:
            y = ((335 + (81 * row))/2338) * H   # 选定区域的上边距位置
            region = img.crop((x, y, x + w, y + h))   # 选定区域的x、y轴初位置,以及末位置

            parameter_p = parameter_p + 1
            parameter_p_n = parameter_p +10    # 以11为起始,对切割的小图进行排序,以列从上往下进行排序

            file_path_parameter = file_path[:-4]    # 创建以需要处理的签到表图片命名的文件夹,
            if not os.path.exists(file_path_parameter):  # 判断文件夹是否存在,如果不存在就创建
                os.mkdir(file_path_parameter)

            region.save(file_path_parameter + '/' + str(parameter_p_n) + ".jpg")  # 将切割的小图
    processed_path 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值