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)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐