让 Snipaste 支持 OCR

Snipaste 是我最喜欢的截图软件可惜没有 OCR 功能

依赖:Snipaste + Python + baidu-aip + pillow + clipboard + keyboard + chardet

感谢 小小 大佬,本文脚本代码基于此文章修改

百度OCR接口申请不再赘述,请参考自行有关文章

脚本

import time

import keyboard
import clipboard
from aip import AipOcr
from PIL import ImageGrab


# 等待键盘
def wait_keyboard():
    keyboard.wait(hotkey="Alt+O")

# 保存剪切板图像
def save_image():
    image = ImageGrab.grabclipboard()
    image.save(photo)

# 百度Api
def baidu_api(client):
    with open(photo, 'rb') as f:
        image = f.read()
        # 调用百度API通用文字识别(高精度版),提取图片中的内容
        return client.basicAccurate(image)

# 解析json
def parsing_json(json):
    result = ''
    for i in json["words_result"]:
        result = result + i["words"] + '\n'
    _save_clipboard(result)

# 字符串保存至剪切板
def _save_clipboard(string):
    clipboard.copy(string)

# 按压键盘
def press_keyboard():
    keyboard.press('F2') # F2 是作者 Snipaste 设置的贴图键,可以将剪切板的文字贴在屏幕上
    time.sleep(3)
    keyboard.press('Esc')

if __name__ == '__main__':
    appid = 'appid'
    apikey = 'apikey'
    secretkey = 'secretkey'
    photo = r'C:\Users\Methanol\Scripts\Public\screen_temp.png'
    client = AipOcr(appid, apikey, secretkey)

    while True:
        wait_keyboard()
        save_image()
        parsing_json(baidu_api(client))
        press_keyboard()
posted @ 2022-07-18 16:59  Methanol  阅读(3471)  评论(1)    收藏  举报