python批量识别图片并根据内容重命名

该代码实现通过pytesseract进行图片文字识别,根据特定关键词匹配PDF文件,并重命名PDF。同时提供了一个删除指定目录下所有文件的函数。

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

import os
import pytesseract
from PIL import Image    #pip install pillow
import re

bb=r'E:\scan\aaaa'                                                                                      #先找存放PDF的目录
aa=os.listdir(bb)                                                                                       #再列出目录下的所有文件
cc=r'E:\scan\bbbb'                                                                                      #存放图片的目录、图片不能跟PDF在同一个目录下、会报错
qq=os.listdir(cc)
n=1

for png_name in qq:
    png_path=os.path.join(cc,png_name)
    png_ocr=pytesseract.image_to_string(Image.open(png_path),lang='chi_sim')                            #识别图片目录下的每一张图片
    png_name_replace = re.sub('\s', '', png_ocr)

    re_po = re.findall('.申请用途', png_name_replace)                                                     #很重要、这个是查找几百张照片中唯一出现的字眼、才能执行下面的代码
    if re_po == []:
        print('没有采购申请单')
        pass
    if re_po == None:
        print('有数据、但是没有采集到')
        pass
    if re_po:
        str_select = re.findall('单据编号:(.*?)单据日期', png_name_replace)                                #正则匹配中间的编号
        ocr_name = str(str_select)[2:19]

        png_name1,png_name2,png_name3 = png_name.partition('.')                                         #文件名以点号为分隔、分3个名称、分别赋值给变量1.2.3
        for pdf_name in aa:
            pdf_path=os.path.join(bb,pdf_name)
            pdf_name1,pdf_name2,pdf_name3=pdf_name.partition('.')

            if png_name1==pdf_name1:
                new_name = os.path.join(bb, ocr_name)
                os.rename(pdf_path,f'{new_name}.pdf')


'''
删除文件夹下面的所有文件(只删除文件,不删除文件夹)
python删除文件的方法 os.remove(path)path指的是文件的绝对路径,如:
'''

def del_file(path_data):
    for i in os.listdir(path_data):                                                                     # os.listdir(path_data)#返回一个列表,里面是当前目录下面的所有东西的相对路径
        file_data = path_data + "\\" + i                                                                # 当前文件夹的下面的所有东西的绝对路径
        if os.path.isfile(file_data) == True:                                                           # os.path.isfile判断是否为文件,如果是文件,就删除.如果是文件夹.递归给del_file.
            os.remove(file_data)
        else:
            del_file(file_data)

if __name__ == '__main__':
    del_file(cc)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水亦流人必上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值