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


Posted in Python onSeptember 04, 2018

本程序调用百度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')

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

Python 相关文章推荐
整理Python中的赋值运算符
May 13 Python
Python3访问并下载网页内容的方法
Jul 28 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
Django文件存储 默认存储系统解析
Aug 02 Python
python中栈的原理及实现方法示例
Nov 27 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
详解Python描述符的工作原理
Jun 11 Python
Python图像处理库PIL详细使用说明
Apr 06 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 #Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 #Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 #Python
selenium+python实现自动化登录的方法
Sep 04 #Python
python使用scrapy发送post请求的坑
Sep 04 #Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 #Python
Python全局变量与局部变量区别及用法分析
Sep 03 #Python
You might like
php生成txt文件实例代码介绍
2016/04/28 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
国贸专业个人求职信范文
2014/01/08 职场文书
公司任命书范本
2014/06/04 职场文书
公司授权委托书范文
2014/08/02 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
vue实现锚点定位功能
2021/06/29 Vue.js
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server