程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python3 調用 Ocr 在線識別剪切板圖片文本

編輯:Python

Python3 調用 Ocr 在線識別剪切板圖片文本

前幾年寫的,Ocr 截圖識別付費軟件頻出時實現自用

實現方案

1、調用任何截圖軟件截圖,自動保存到剪切板

2、python 調用剪切板,獲取圖片流保存為固定位置的臨時本地圖片

3、識別本地圖片,文本內容重新復制到剪切板

ApiOrc.py

import ioimport osimport base64import PILimport jsonpathimport pyperclipfrom aip import AipOcrfrom PIL import Image, ImageGrabroot_path = os.path.abspath(".")_app_id = 'xxx'          # 從百度,阿裡,騰訊等等 都行,申請orc服務賬戶,每日有免費識別量,足夠個人使用_api_key = 'xxx'_secrect_key = 'xxx'# 百度雲api對象client = AipOcr(_app_id, _api_key, _secrect_key)# ocr 識別的最大圖片大小不能超過 4 兆img_max_size = 4096def get_file_content(file_path: str):    """ 讀取文件 """    with open(file_path, 'rb') as fp:        return fp.read()def get_size_kb(file_path: str):    """ 獲取文件大小(kb) """    size = os.stat(file_path).st_size    return round(size / 1024)def ocr_img(img: bytes, wrap: bool = True):    """    識別圖片中的文字內容    :param img: 圖片base64    :param wrap: 是否換行,默認換行    :return:    """    data = client.basicGeneral(img)    t = jsonpath.jsonpath(data, '$.words_result[*].words')    if t and wrap:        return '\n'.join(t)    return ' '.join(t)def get_image_from_clipboard():    """    保存剪切板圖片到本地    """    img = ImageGrab.grabclipboard()    if isinstance(img, Image.Image):        img.save('test.png', 'png')        print("保存剪切板圖片")    else:        print("剪切板無圖片")def get_image_base64_from_clipboard():    """    保存剪切板圖片為IO流    """    img_buffer = io.BytesIO()    img = ImageGrab.grabclipboard()    if isinstance(img, Image.Image):        img.save(img_buffer, 'png')        # b64 = base64.b64encode(img_buffer.getvalue())        b64 = base64.encodebytes(img_buffer.getvalue())        print(b64)        print("保存剪切板圖片為Base64編碼")    else:        print("剪切板內無圖片")def set_clipboard_text(msg: str):    """    寫入剪切板內容    """    pyperclip.copy(msg)def get_clipboard_text():    """    讀取剪切板內容    """    return pyperclip.paste()

Demo.py

# -*- coding: utf-8 -*-from ApiOcr import *def ocr_clipboard():    """    用於獲取剪切板圖片信息,並保存到本地,然後進行    """    # 獲取剪切板中的圖片    img = ImageGrab.grabclipboard()    if img is None:        print('剪切板中無圖片')        return    if isinstance(img, Image.Image):        # 保存圖片        file_path = root_path + '/test.png'        img.save(file_path)        # 獲取文件大小        size = get_size_kb(file_path)        if size > img_max_size:            print('圖片不能超過 {} kb,當前 {} kb:'.format(img_max_size, size))        # 讀取圖片        image = get_file_content(file_path)        # 識別圖片內容        text = ocr_img(image, True)        # text = ocr_img(image, False)        print(text)        # 寫入剪切板        set_clipboard_text(text)if __name__ == '__main__':    ocr_clipboard()



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved