使用python批量修改图片名称为发票号码.jpg

使用百度人工自能库获取发票号码
百度ID、key请在百度平台获取。也可以使用OCR识别

from aip import AipOcr
import easygui
import os
import time


def ocr(url):  # 百度文字识别
	# 存放发票号码的数组
    data = []
    # 以下XXX 替换为百度信息
    APP_ID = 'XXX'
    API_KEY = 'XXX'
    SECRET_KEY = 'XXX'
    # 连接百度aip平台
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    with open(url, 'rb') as f:
        image = f.read()
        # 使用高精度识别(每天500次)
        text = client.basicAccurate(image)
    mun = text['words_result']  # 读取字典
    # 便利发票上的全部数据
    for i in mun:
        try:
        	# 清洗代码、去掉不需要的文字
            fphm = (i['words']).replace('发票号码', '')
            fphm = fphm.replace(':', '')
            fphm = fphm.replace(':', '')
            fphm = fphm.replace(' ', '')
            # 清洗后发票号码是一个8位数的数值
            if 99999999>int(fphm) and len(fphm)==8:
                data.append(fphm)
        except:
            pass
        # 因为发票号码是出现在开票日期上面的、所以当出现开票日期的时候结束循环
        if (i['words'])[:4] == "开票日期":
            break
    # 返回发票号码
    return data

def file_name(file_dir):
    for root, dirs, files in os.walk(file_dir):
    	# 获取文件名称
        for file in files:
            if file[-4:]=='.jpg':
                old_name = file_dir+'\\'+file
                print("读取:" + old_name)  # 当前路径下所有非目录子文件
                mun = ocr(old_name)
                new_name = file_dir+'\\'+mun[0]+'.jpg'
                print("修改为:"+new_name)
                try:
                	# 使用rename修改文件名,如果发票号码是重复的会报错
                    os.rename(old_name,new_name)
                except:
                	# 当发票号码报错时多添加一个时间信息到文件中
                    strtime = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime())
                    new_name = file_dir+'\\'+mun[0]+'-'+strtime+'重复.jpg'
                    os.rename(old_name,new_name)


sPath = easygui.diropenbox()
file_name(sPath)

成功批量修改文件名称。
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值