文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件

推荐:原价398现活动价只需¥119 充值开通终身VIP会员就可以学习本站全部资源,非常超值!【点击立即开通】

或者【加微信:A156737958咨询客服】开通 ···

文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件

“专业的IT人员不做繁琐的日常文件管理工作,专业的白领也负担不起软件定制与维护”
    以上大概就是我开始自学Python编程的原因吧!
———————————————————————————————————————————————–
软件介绍:
    很久没更新,大概就是因为标题中指的时不时一大堆合同给耽误了吧。
日常工作中,确实有很多类似于合同、协议、表单等,在扫描完成后,需要进行归档存储。大部分的扫描仪都只能帮你自动按照时间流水号,相信很多人都痛苦与扫描后一个个打开手动重命名的工作了。
所以,我临时搜索自学了下,制作了以下软件。

使用方法:
1、以下为举例的扫描后需要重命名存档的PDF文件:

文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件
文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件

2、还好每个文件都有一份固定格式的评审表(虚拟的),通过代码识别合同名称、合同签订方后面的文本内容:

文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件02
文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件02

3、双击打开软件,示例如下:

文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件023
文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件023

4、特别注意:
由于代码中调用了百度文本识别的API,高精度识别版本,每天免费调用500次,可以到以下网址进行申请“申请应用获取的 ID,下同  链接:https://ai.baidu.com/tech/ocr/general
每个人的文件内容都不一样,请在根目录下的txt中修改关键字1和关键字2

文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件02303
文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件02303

5、代码分享

'''
文件扫描自动重命名
@Auther Lee
@software: Pycharm
@Version:1.0
'''
 
import easygui as g
from PyPDF2 import PdfFileReader,PdfFileWriter # 读和写
import fitz  # fitz                pip install PyMuPDF
import os
from aip import AipOcr
import re
 
def get_files(path):
    pdf_files=list(os.scandir(path))
    return pdf_files
 
def get_page1(pdf_file):
    read_PDF = PdfFileReader(pdf_file)
    write_pdf = PdfFileWriter()  # 实例化对象
    write_pdf.addPage(read_PDF.getPage(0)) # 将遍历出的每一页添加到实例化对象中
    pdf_path=f'{os.path.dirname(pdf_file)}\\临时.pdf'
    with open(pdf_path, "wb") as b:
        write_pdf.write(b)
    return pdf_path
 
def pyMuPDF_fitz(pdfPath):
    imagePath=os.path.dirname(pdfPath)
    pdfDoc = fitz.open(pdfPath)
    page = pdfDoc[0]
    rotate = int(0)
    # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
    # 此处若是不做设置,默认图片大小为:792X612, dpi=96
    zoom_x = 1.33333333  # (1.33333333-->1056x816)   (2-->1584x1224)
    zoom_y = 1.33333333
    mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
    pix = page.getPixmap(matrix=mat, alpha=False)
    if not os.path.exists(imagePath):  # 判断存放图片的文件夹是否存在
        os.makedirs(imagePath)  # 若图片文件夹不存在就创建
    png_path = imagePath + '\\临时.png'
    pix.writePNG(png_path)  # 将图片写入指定的文件夹内
    return png_path
 
def baiduOCR(picfile):
    # APP_ID = '自行填写'                     # 申请应用获取的 ID,下同  链接:https://ai.baidu.com/tech/ocr/general
    # API_KEY = '自行填写'
    # SECRECT_KEY = '自行填写'
    client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
    image = open(picfile, 'rb')
    rb_data = image.read()
    message = client.basicAccurate(rb_data)  # 通用文字高精度识别,每天 500 次免费
    image.close()
    return message
 
def rename_pdf(pdf_file_path,a,b):
    new_path=f'{os.path.dirname(pdf_file_path)}\\{a}-{b}.pdf'
    os.rename(pdf_file_path,new_path)
    return new_path
 
 
def main():
    path=g.diropenbox(msg='请选择需要处理的文件夹')              # 获取文件夹路径
    pdf_files=get_files(path)                   # 获取所有文件
    for i in range(0,len(pdf_files)):
        pdf_file=pdf_files[i]                       # 获取第n个文件
        file_path=os.path.abspath(pdf_file)         # 获取此文件的路径
        try:
            page1_path=get_page1(file_path)             # 将PDF文件的第一页提取并保存为《临时.pdf》  返回绝对路径
        except:
            print(f'失败:将{pdf_file}的第一页提取并保存为《临时.pdf》')
            continue
        try:
            png_file=pyMuPDF_fitz(page1_path)           # 将《临时.pdf》转换为《临时.png》  返回绝对路径
        except:
            print(f'失败:将{pdf_file}的《临时.pdf》转换为《临时.png》')
            continue
        message=baiduOCR(png_file)                  # 通过百度ocr识别《临时.png》中的文本内容
        content=message.get('words_result')         # 筛选出文本内容部分
        The_text=[i.get('words') for i in content]  # 筛选出文本内容部分为列表
        choices=[]                                  # 设置一个空列表
        try:
            for i in The_text:
                if 关键字1 in i or 关键字2 in i:    # 如果文本中有此关键字,则进行以下内容
                    i = i.split(':')[-1]                              # 取冒号右侧内容
                    cop = re.compile("[^\u4e00-\u9fa5^a-z^A-Z^0-9]")  # 匹配不是中文、大小写、数字的其他字符
                    i=cop.sub('', i)                                  # 将匹配到的字符替换成空字符
                    choices.append(i)                                 # 添加到空列表中
        except:
            print(f'失败:{pdf_file}无此关键内容')
            continue
        try:
            new_path=rename_pdf(file_path,choices[0],choices[1])               # 通过关键字筛选出的文本来重命名文件
            print(f'成功:{new_path}已完成重命名')
        except:
            print(f'失败:{pdf_file}无法重命名')
            continue
        try:
            os.remove(page1_path)                                     # 删除临时文件《临时.pdf》
            os.remove(png_file)                                       # 删除临时文件《临时.png》
        except:
            continue
 
 
if __name__ == '__main__':
    with open ('信息补充.txt','r',encoding='utf-8') as t:
        txt=t.readlines()
        # print(txt)
        APP_ID = txt[0].split("=")[-1].strip()
        API_KEY = txt[1].split("=")[-1].strip()
        SECRECT_KEY = txt[2].split("=")[-1].strip()
        关键字1=txt[3].split("=")[-1].strip()
        关键字2=txt[4].split("=")[-1].strip()
        # print(APP_ID,API_KEY,SECRECT_KEY,关键字1,关键字2)
    main()

6、exe文件分享

蓝奏云Python编程软件,Python编程学习教程

为什么给要学习Python编程软件?

Python编程学习#Python视频课程#全民一起玩Python 基础+提高

为什么给要学习Python编程软件?
为什么给要学习Python编程软件?

Python全栈开发视频#2020年最新Python全栈开发视频课程#爬虫工程师视频课程+高端自动化视频课程就业班

温馨提示:按键盘 Ctrl+D 快速收藏本页

一个不一样的创业营销生活学习网站!
一个人人都会飞的舞台!
1、注册/登录网站获取每日签到积分,可用于下载本站资源;
2、本站下载的所有压缩包统一密码“91ur.com”,红色的部分为密码;
切换到英文输入法状态输入密码,否则会提示密码错误
3. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
4. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
5. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
6. 本站提供的软件、课程、插件等等其他资源,都不包含技术服务请大家谅解!
7. 如有链接无法下载、失效或广告,请联系管理员处理!
8. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
极速创业 » 文档批量改名#老板又给了100份合同要扫描归档?#Python编程软件

发表回复

2 × 1 =

提供最优质的创业资源与学习资源集合

立即查看 了解详情