python 3调用百度OCR API实现剪贴板文字识别
作者:方工 发布时间:2022-12-13 19:01:14
标签:python,OCR,API,文字识别
本程序调用百度OCR API对剪贴板的图片文字识别,配合CaptureScreen软件,可快速识别文字。
#!python3
import urllib.request, urllib.parse
import os, io, sys, json, socket
import base64
from 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')
来源:https://blog.csdn.net/onestab/article/details/79091289


猜你喜欢
- 错误现象:ERROR 1045 (28000): Access denied for user 'ODBC'@'lo
- 本文实例讲述了PHP模板引擎Smarty中变量的使用方法。分享给大家供大家参考,具体如下:一、概述:Smarty 是 PHP 众多模板引擎中
- 只要不是HTTP_REFERER来源于(google.com google.cn *.google.com *.google.cn baid
- 使用OpenCV's Haar cascades作为人脸检测,因为他做好了库,我们只管使用。代码简单,除去注释,总共有效代码只有10
- 本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息。分享给大家供大家参考,具体如下:import timefro
- 1 、据说python3就没有这个问题了2 、u'字符串' 代表是unicode格式的数据,路径最好写成这个格式,别直接跟字
- 前言:对于遍历大数组而言, for 循环能比 for range 循环更高效与稳定,这一点在数组元素为结构体类型更加明显。我们知道,Go 的
- 创建新项目,及应用django-admin startproject myprojcd myprojpython manage.py sta
- 引言语音端点检测最早应用于电话传输和检测系统当中,用于通信信道的时间分配,提高传输线路的利用效率.端点检测属于语音处理系统的前端操作,在语音
- 目录1、安装html2Canvas2、在需要的vue组件中引入3、编写一个截图按钮4、调用函数toImage总结1、安装html2Canva
- 1. Redo日志的介绍Redo日志是物理日志,记录的是页面的变化。1.1 Redo日志的作用提升数据库写入效率保证数据库不丢数据,进行数据
- 具体代码如下所示:#coding=utf-8__author__ = 'Eagle'import osimport time
- 前言这篇博客将介绍光流的概念以及如何使用 Lucas-Kanade 方法估计光流,并演示如何使用 cv2.calcOpticalFlowPy
- URL 编码是什么东东呢?看看我从网上抄的定义: 引用: url编码是一种浏览器用来打包
- 一.GO程序目录结构在GOPATH目录下的结构--bin(存放编译后生成的可执行文)|----hello.exe(可执行文件)--pkg(存
- 本文为大家分享了vuejs事件中心管理组件间的通信,供大家参考,具体内容如下事件中心这个可以是一个空的全局的Vue实例,其他的组件利用这个实
- 业务难点设计一个抽奖系统,这个系统并不是具体化,是抽象化,具有以下的几个难点:1、抽奖业务需要 复杂多变2、奖品类型和概率设置3、公平的抽奖
- 看到论坛上有人模仿alert,自己也写了一个。本来想模仿winapi里的MessageBox ;但可惜js 不支持,阻塞模式。返回值只能用异
- 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):1.通过config命令npm config
- CSS代码更清晰高效的一些经验是许多网页制作者与开发者都关心的问题。但是大概没有什么魔法,可以保证一下就把你的样式表缩小到百分之多少,合理的