当前位置 博文首页 > 一条IT:【python实战】不让我复制?看我自制个带文字识别的截屏

    一条IT:【python实战】不让我复制?看我自制个带文字识别的截屏

    作者:[db:作者] 时间:2021-08-03 12:49

    哈喽,大家好,我是一条。

    好久没出python的教程了,今天教大家做个好玩又实用的。

    点赞,收藏准备好。

    前言

    不知道大家工作中有没有遇到这种情况

    • 产品不知道从哪搞来的截图就这么粘在需求文档上,你还得一个一个敲,气的我这……

    • 网上有个资料,死活就是不让你复制,气的我这……

    • 有篇技术文章,代码全是截图,气的我这……

    ok。别气了,求人不如求自己,一条教你自制带文字识别的截图工具。

    成品展示

    现已将文件设置成开机自启动,并一直在后台运行;

    当监听到有截屏操作时,保存剪切板的文件;

    调用百度开放API进行文字识别;

    将识别出的内容写入剪贴板;

    可以看到,大约占20M的内存

    待识别的图片

    识别出的内容

    现已将文件设置成开机自启动,并一直在后台运行;
    当监听到有截屏操作时,保存剪切板的文件;
    调用百度开放AP进行文字识别;
    将识别出的内容写入剪切板;
    

    不得不说,百度的准确率还是很高的。下面跟着一条来完成它吧

    snipaste

    我们需要借助这款好用的截图工具,微软商店和官网都可以下载。

    完成后可以参考一条设置一下快捷键。

    • 截屏:shift+S
    • 截屏后自动复制到剪贴板:shift+A
    • 截屏后贴图:shift+T

    监听键盘

    下面就是监听键盘的截屏快捷键shift+A

    因为我们想做到截屏后自动识别文字,不需手工做任何处理。

    代码如下

    import keyboard
    import time
    keyboard.wait(hotkey="shift+a")
        time.sleep(2)
    

    sleep2秒是为了等待截图的过程。

    这是肯定有人会有问题:如果我只想截图不想识别文字呢?

    一条已经想到了,不想识别文字,可以用shift+S

    保存截图

    如何从剪贴板获取截图呢

    上代码

    from PIL import ImageGrab
    image = ImageGrab.grabclipboard()
      image.save("screen.png")
    

    百度文字识别

    有了图片,就可以用百度文字识别了

    怎么用呢?

    创建应用

    AI开放平台文档中心 https://ai.baidu.com/ai-doc

    登陆后,到控制台建立一个自己的文字识别应用

    创建应用后一定要记得领取免费资源

    然后在管理应用找到自己的app_id

    把这三个值复制下来,写代码需要用。

    调用API

    接下来就是发送一个request请求,调用百度的开放接口。

    为了调用方便,需要引入一个封装好的库。

    pip install baidu_aip
    

    安装好之后,写代码

    from aip import AipOcr
    APP_ID = '你的 App ID'
    API_KEY = '你的 Api Key'
    SECRET_KEY = '你的 Secret Key'
    
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
     with open("screen.png", 'rb') as f:
            image = f.read()
            # 调用百度API通用文字识别(高精度版),提取图片中的内容
            text = client.basicAccurate(image)
            result = text["words_result"]
            for i in result:
                print(i["words"])
    

    写入剪贴板

    识别完了,怎么用呢

    连复制都免了,直接写入到剪贴板

    import pyperclip
    clipstr=''
        # 读取图片
        with open("screen.png", 'rb') as f:
            image = f.read()
            # 调用百度API通用文字识别(高精度版),提取图片中的内容
            text = client.basicAccurate(image)
            result = text["words_result"]
            for i in result:
                clipstr=clipstr+i["words"]+"\n"
        pyperclip.copy(clipstr)
    

    后台执行

    想到要做就做绝,如何让他在后台一直执行,又不能影响我其他工作。

    通过ocr.bat+ocr.vbs

    新建ocr.bat

    写入(ocr.py要和ocr.bat在同一目录)

    python ocr.py
    

    新建ocr.vbs

    同样,写入。主要作用是不显示控制台窗口

    Set ws = CreateObject("Wscript.Shell")
    ws.run "cmd /c ocr.bat",0
    

    开机自启动

    要做,就让他完全自动化

    win+R,输入shell:startup,回车

    将上面的三个文件全部复制进去

    ok,大功告成!

    源码

    想直接拿到源码就可以用的小伙伴,评论区评论【截屏】

    我是一条,一个在互联网摸爬滚打的程序员。

    道阻且长,行则将至。大家的 【点赞,收藏,关注】 就是一条创作的最大动力,我们下期见!

    注:关于本篇博客有任何问题和建议,欢迎大家留言!

    cs