图片或剪切板内图片文字识别-OCR

  • 默认图片文件名:001.JPEG;截图放入剪切板内,图片会自动存储,无需输入文件名。
  • Windows图片默认存储位置: c:\users\liutz(liutz是自己的用户名)
  • 实验环境win10 20h2 + python3.85 vscode
import time
import os
# ENV :python 3.85 +  win10 20H2 
# 安装必要的库 pillow、baidu-aip、keyboard
# pip install keyboard,pillow  -i http://pypi.douban.com/simple
# pip install baidu-aip

import keyboard
from PIL import  ImageGrab
from PIL import  Image
from aip import AipOcr

# print(os.getcwd())   # 默认工作目录 c:\users\liutz

""" 你的 APPID AK SK :以下内容:ai.baidu.com--通用OCR页面申请"""
APP_ID = '21571517'
API_KEY = 'dGgWcprUfQBHKM5UG2CdSzot'
SECRET_KEY = '3Gqe5MkzUdONgtppDceUutRGdpF7MVkU'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

keyboard.wait(hotkey="f4")    # 按F4键,程序继续运行
# keyboard.wait(hotkey="ctrl+c")
time.sleep(0.1) 

#指定屏幕范围截图
# size = (100,100,1660,800)
# img = ImageGrab.grab(size)
# img.save("C:/Users/liutz/Documents/cut.jpg")
# img.show()

# 读取剪切板的图片内容,如果剪切板内是文字,显示clipboard is empty.
im = ImageGrab.grabclipboard() 
if isinstance(im,Image.Image):
    print("Image:size:{} mode:{}".format(im.size,im.mode))
    #im.save("C:/Users/liutz/Documents/grab_grabclipboard.jpg")
    # im.save('001.jpg')
    im = im.convert('RGB')  #解决使用快捷键 win+shift+s 截图 存储图片出错问题
    im.save("001.jpeg",format='jpeg')
    im.show()
else:
    print("clipboard is empty.") 

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('001.jpeg')

#result = client.accurate(image)  #高精文本识别
text = client.basicGeneral(image)
# print(text)
texts= text["words_result"]
txt = ""
for text in texts:
     print(text["words"])           #逐行 输出识别结果
    # txt = txt + text["words"]     #识别的文本,连在一起输出
print(txt)