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 list语法学习(带例子)
Nov 01 Python
Python跳出循环语句continue与break的区别
Aug 25 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
解决Python对齐文本字符串问题
Aug 28 Python
python实现简单成绩录入系统
Sep 19 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
python中 Flask Web 表单的使用方法
May 20 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
Extjs 几个方法的讨论
2010/01/28 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
讲解Python中的标识运算符
2015/05/14 Python
python生成器表达式和列表解析
2016/03/10 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python决策树分类算法学习
2017/12/22 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
个人找工作的自我评价
2013/10/17 职场文书
临床医学应届生求职信
2013/11/06 职场文书
主治医师岗位职责
2013/12/10 职场文书
企业读书活动总结
2014/06/30 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server