Python实现截图识别文件保存记录功能

受到python截图小工具(按键触发)_python实现鼠标框选截图功能-CSDN博客的启发,我决定做一个可以在屏幕截图,然后识别截图中文字的小程序,这样就可以提高工作效率。对于wps的图片识别文字需要会员也可以无视,对于微信截图再识别文字也比较麻烦。再者,将识别的文字保存到excel文件,就可以不断截图,不断获取文字,提高工作效率。

上源码:

# -*- coding: utf-8 -*-
"""
Created on Sun Aug 25 11:19:30 2024

@author: YBK
"""

'''
通过按键(左Ctrl键)来触发
可以容错,不固定方位
如果有问题输出错误
如果没问题就输出两点的坐标
需求:
1、按键触发
2、输出大致图片
3、检测错误
'''
import pyautogui
import datetime
from pynput.keyboard import Key, Listener as Listener_K,Controller as Controller_K
from pynput.mouse import  Button, Listener as Listener_M,Controller as Controller_M
from paddleocr import PaddleOCR
from openpyxl import load_workbook
from openpyxl.styles import Alignment

ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
run_key = Key.ctrl_l# 按键触发,ctrl_l即左边的Ctrl键
coordinate = []#存储坐标x1,y1,x2,y2
 
def on_click(x, y, button, pressed):#监听鼠标
    if pressed:#按压打印
        print(f'{button} pressed at {x}, {y}')
        coordinate.extend([x,y])
    else:
        return False
def on_release(key):
    '释放按键时执行。'
    print(key)
    if key == run_key:  #可以改str类型来判断输入字母之类的
        return False# 停止监听,作为运行
 
if __name__ == '__main__':
    keyboard = Controller_K()#监听按键
    with Listener_K(on_release=on_release) as listener:
        listener.join()
    #监听到特定按键跳转
    print("鼠标点击")
    mouse = Controller_M()#监听鼠标
    for _ in range(2):
        with Listener_M(on_click=on_click) as listener:
            listener.join()
    print(coordinate)
    #如果没有特殊情况,就截图
    if coordinate[0]-coordinate[2]==0 or coordinate[1]-coordinate[3]==0:
        print("错误")
    else:
        #获取左上角坐标和差值
        coord,distance = [],[]
        for n in range(2):
            if coordinate[n]<coordinate[n+2]:
                coord.append(coordinate[n])
            else:
                coord.append(coordinate[n+2])
            distance.append(abs(coordinate[n]-coordinate[n+2]))
        img = pyautogui.screenshot(region=[coord[0],coord[1],distance[0],distance[1]])#左上角坐标和宽、高
        now = datetime.datetime.now()
        filename = str(now).replace('-','').replace(':','').replace(' ','').split('.')[0]
        img.save("e:\\截图\\" + filename + ".jpg")
        # 识别图片中的文字
        image_path = "e:\\截图\\" + filename + ".jpg"
        result = ocr.ocr(image_path, cls=True)
        texts = ''
        for line in result:
            if line is not None:
                for detection in line:
                    # print(detection[1][0])
                    texts = texts + detection[1][0] + '\n'
        print(texts)
        # 把结果保存到excel文件中
        # 加载现有的Excel文件
        file_path = 'e:\\截图\\截图数据.xlsx'
        wb = load_workbook(file_path)         
        # 激活工作表,默认激活第一个工作表
        sheet = wb.active         
        # 假设我们要添加的数据是一个列表
        new_row = [now.strftime("%Y-%m-%d %H:%M:%S"), texts]         
        # 获取最后一行的编号
        last_row = sheet.max_row         
        # 在Excel中添加新数据
        for i in range(len(new_row)):
            sheet.cell(row=last_row + 1, column=i + 1).value = new_row[i]   
            sheet.cell(row=last_row + 1, column=i + 1).alignment = Alignment(wrap_text=True,vertical='center')
        # 保存修改后的Excel文件
        wb.save(file_path)
        wb.close()
        

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值