python 3调用百度OCR API实现剪贴板文字识别

时间:2021-05-22

本程序调用百度OCR API对剪贴板的图片文字识别,配合CaptureScreen软件,可快速识别文字。

#!python3import urllib.request, urllib.parseimport os, io, sys, json, socketimport base64from PIL import ImageGrab socket.setdefaulttimeout(30) def get_auth(): apikey = 'your apikey' secret_key = 'your secret key' host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s' % (apikey, secret_key) req = urllib.request.Request(host) req.add_header('Content-Type', 'application/json; charset=UTF-8') res = urllib.request.urlopen(req) content = res.read() if (content): o = json.loads(content.decode()) return o['access_token'] return None def ocr_clipboard(): im = ImageGrab.grabclipboard() if im is None: print('No image in clipboard') return print('image size: %sx%s\n>>>\n' % (im.size[0], im.size[1])) mf = io.BytesIO() im.save(mf, 'JPEG') mf.seek(0) buf = mf.read() b64 = base64.encodebytes(buf) access_token = get_auth() if access_token is not None: url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=%s' % access_token data = urllib.parse.urlencode({'image' : b64}).encode() req = urllib.request.Request(url, method='POST') req.add_header('Content-Type', 'application/x-www-form-urlencoded') with urllib.request.urlopen(req, data) as p: res = p.read().decode('utf-8') o = json.loads(res) if o['words_result'] is not None: for w in o['words_result']: print(w['words']) print('\n<<<') else: print('access_token is none') if __name__ == '__main__': x = input('ocr form clipboard image: z to ocr, q to quit-->') while(x != 'q'): if x=='z': ocr_clipboard() x = input('ocr from clipboard image: r to ocr, q to quit-->') print('bye')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章