首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 优化办公(excel)

python 优化办公(excel)

原创
作者头像
大大刺猬
修改2018-09-06 11:53:33
1.3K0
修改2018-09-06 11:53:33
举报
文章被收录于专栏:大大刺猬大大刺猬

任务描述:

  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目录已经没用了

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 任务描述:
  • 思路:
  • 代码:
  • 结果:
  • 用pyinstaller生成.exe文件
相关产品与服务
文字识别
文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档