专栏首页大大刺猬python 优化办公(excel)
原创

python 优化办公(excel)

任务描述:

  1. 从图片的特定位置获取字符串 作为该图片的名字
  2. 根据图片名字 在excel中标记出来,未找到的记录下来,保存退出

特别说明:本文使用的文字识别是AipOcr,对应的ID,KEY,SECRECT为你自己的,路径都是当前路径,操作excel用的是win32com

思路:

  • 识别当前目录的图片文件 和 excel文件
  • 把图片中需要识别的部分 切割下来,交给第三方识别,然后提取识别结果,并命名
  • 把excel中对应的字段标上颜色,记录下文找到的,保存退出

代码:


from aip import AipOc
from PIL import Image
from os import listdi
from os import rename
from os import remove
from os import system
from win32com.client import Dispatch
from os import getcwd

NAME_LIST = []
EXCEL_PATH = []
def get_name_by_pic(img):
    img.save('test_tmp.jpg')
    APP_ID = '你的ID'
    API_KEY = '你的KEY'
    SECRECT_KEY = '你的SECRECT_KEY '
    client = AipOcr(APP_ID,API_KEY,SECRECT_KEY)
    i = open('test_tmp.jpg','rb')
    img = i.read()
    message = client.basicGeneral(img)
    name = message['words_result'][0]['words']
    return name

def get_pic(pic,which_size):
    img = Image.open(pic)
    region = img.crop(which_size)
    return region
 
def excel(WHICH_SHEET):
#     WHICH_SHEET = 'Sheet1'
    COL = 10
    excel = Dispatch('Excel.Application')
    excel.Visible = True
    myExcel = excel.Workbooks.Open(getcwd()+'\\'+EXCEL_PATH[0])
    mySheet = myExcel.Worksheets(WHICH_SHEET)
    # mySheet.Cells(9,9).Interior.ColorIndex = 6         #表格背景  6为黄  5位蓝  4位绿 3为红 2为白 1为黑
    flag = 0
    len_name_list = int(len(NAME_LIST))
    print(len(NAME_LIST))
    for ROW in range(4,mySheet.usedrange.rows.count+1):
        for i in NAME_LIST:
            if i[2:5] == mySheet.Cells(ROW,COL).Value[2:5]:
                NAME_LIST.remove(i)
                flag += 1
                print(flag,mySheet.Cells(ROW,COL).Value)
                mySheet.Cells(ROW,COL).Interior.ColorIndex = 6
                rename(i,mySheet.Cells(ROW,COL).Value+'.jpg')
                break

    print('\n-----未匹配成功:-------\n',len_name_list-int(flag),NAME_LIST)
    myExcel.save
    myExcel.close
    excel.Visible = 0

def rm_space(str):
    str = str.strip()
    str = str.replace(' ','')
    str = str.replace(' ','')
    return st

def main():
    old_file_name = listdir(r'./')
    for jpg_excel in range(0,int(len(old_file_name))):
        print(old_file_name[jpg_excel].split('.')[1])
        if old_file_name[jpg_excel].split('.')[1] == 'jpg' or old_file_name[jpg_excel].split('.')[1] == 'png':
            NAME_LIST.append(old_file_name[jpg_excel])
#         elif old_file_name[jpg_excel].split('.')[1] == 'xlsx' or old_file_name[jpg_excel].split('.')[1] == 'xls' or old_file_name[jpg_excel].split('.')[1] == 'xl*':
        elif old_file_name[jpg_excel].split('.')[1] == 'xlsx':
            EXCEL_PATH.append(old_file_name[jpg_excel])
        elif old_file_name[jpg_excel].split('.')[1] == 'xls':
            EXCEL_PATH.append(old_file_name[jpg_excel])
#         else:
#             continue
    for i in NAME_LIST:
        print('获取切割后的图片',i)
        new_img = get_pic(i,(200,675,600,710))
        print('获取成功!\n识图中.............')
        new_name = get_name_by_pic(new_img)
        print('成功识别',new_name,'命名中......')
        new_name = rm_space(new_name)
        rename(i,new_name+'.jpg')
        print('命名成功!即将进行第',i,'张')
    remove('test_tmp.jpg')
main()
print('图片改名完成,即将对比excel')

excel('Sheet1')
print('excel对比完成!')

system('pause')

结果:

光有.PY文件怎么行,别人没有python啊,我们需要打包成.exe文件(注意:别被杀毒软件拦下来,以下操作在cmd框框执行,还得注意路径问题)

用pyinstaller生成.exe文件

安装pyinstaller : pip install pyinstaller

使用pyinstaller: pyinstaller -F 你的.py文件 -i 你的ico图标(logo)

生成的.exe文件在 dist目录,built目录已经没用了

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python FAKER 构造数据

    我现在要说的FAKER , 是一个包, 可以构造数据的, (不用自己去想数据格式了....)

    大大刺猬
  • 使用CentOS 7上的Postfix,Dovecot和MariaDB发送电子邮件

    Postfix邮件传输代理(MTA)是一种高性能的开源电子邮件服务器系统。本指南将帮助您在CentOS 7 Linode上运行Postfix,使用Dovecot...

    大大刺猬
  • python优化办公(excel)02

    功能说明:根据本月的某些行 找到 对应上月的相应行,在比较其某些列的不同,把不同之处标记在本月的某对应列

    大大刺猬
  • 2018中国虚拟现实教育创新大会暨首届智能仿真教育研讨会精彩回顾

    2018中国虚拟现实教育创新大会暨首届智能仿真教育研讨会 于5月26日至27日在厦门举办。LiveEdu也安排了代表人员参加了这次会议,旨在了解最新的业内信息,...

    LiveEdu
  • 成立两年就上市的趣头条,是怎么用TAPD的?

    趣头条是移动内容聚合的新锐平台,以娱乐、生活资讯为主体内容,依托于强大的智能化数据分析系统,为下沉市场受众提供精准的内容分发服务。

    TAPD敏捷研发
  • 微信 paxosStore : 高性能 Key-Value 存储的挑战

    本文从以下四个方面介绍了微信 PaxosStore高性能Key-Value存储的挑战: 分布式协议、存储等功能;微信账号存储等核心存储服务的架构实现;key-v...

    serena
  • 腾讯安全月报 | Gartner全球市场指南发布、联邦学习发布会、百万奖金悬赏漏洞……

    腾讯安全
  • 腾讯云架构设计之道

    腾讯内部有很多海量业务,在这些海量业务的设计、研发、运营中已经总结了很多非常好的理念和思想,本主题将通过腾讯云的架构及设计,来一一阐述这些理念及思想 在实际中如...

    serena
  • 统计语言模型简介

    统计语言模型是自然语言处理最基础也最重要的任务,也是其它复杂自然语言理解系统中重要的模块之一,理解语言模型对进一步了解自然语言处理,有非常重要的意义。统计语言模...

    王明轩
  • Excel VBA快速入门与界面设置

    林万程

扫码关注云+社区

领取腾讯云代金券