你一定用过那种“OCR神器”,可以把图片中的文字提取出来,极大的提高工作效率。

 

今天,我们就来做一款实时截图识别的小工具。顾名思义,运行程序时,可以实时的把你截出来的图片中的文字识别出来。

下次,当你想要复制“百度文库”中的内容时,不妨试试这个程序。

效果预览

源码解析

1)等待用户截图

此处需要借助贴图神器(Snipaste)

其中“f1”是截图的快捷键,“ctrl+c”是把截图保存到剪贴板的快捷键。

如果使用qq截图的话,需要把快捷键改为对应的“ctrl+alt+c”和“enter”

顺便安利一波Snipaste,

必备效率神器

  1.  

import keyboard

# 利用截图软件(Snipaste)截图到剪贴板
# 输入键盘的触发事件
keyboard.wait(hotkey="f1")  
keyboard.wait(hotkey="ctrl+c")
time.sleep(0.1)

上面这段代码执行之后,现在已经有一张图片等待在剪贴板里了。

2)保存截图

利用PIL模块的ImageGrab,可以把剪贴板里的那张图片,保存到当前的目录下,并命名为“screen.png”

  1.  

from PIL import ImageGrab

# 把图片从剪切板保存到当前路径
image = ImageGrab.grabclipboard()  
image.save("screen.png")

3)识别截图中的文本

法一

pytesseract模块

优点:免费,易用

缺点:识别效果很一般,准确率不高

使用方法介绍:

1)pip install pytesseract

2)安装 tesseract-ocr.exe 配置环境变量

3)修改pytesseract.py文件,将tesseract_cmd指向Tesseract-OCR的tesseract.exe的绝对路径。

参考文章

见评论第一条

  1.  

import pytesseract
from PIL import Image

# 法一:利用pytesseract模块
# 参数一:图片 
# 参数二:简体中文
text = pytesseract.image_to_string(Image.open("screen.png"), lang='chi_sim')
print(text)

来看看效果:

low的不行

果然,要想精度高,还得用百度API

法二

百度API接口

AI开放平台文档中心

https://ai.baidu.com/ai-doc

查看python语言的SDK文档

点击右上角(控制台),登录自己的百度账号,创建“文字识别”的应用

  1.  

import pytesseract
from aip import AipOcr
from PIL import ImageGrab

# 法二:利用百度API
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

# 读取图片
with open("screen.png", 'rb') as f:
    image = f.read()

# 调用百度API通用文字识别(高精度版),提取图片中的内容
    text = client.basicAccurate(image)
    result = text["words_result"]
    for i in result:
        print(i["words"])

结果

如文章首图:

我是总结

1)等待用户截图

2)保存截图到当前目录

3)识别截图中的文本

其中识别截图文本,有两种方法:

1)利用 pytesseract 模块

2)利用百度API接口

你一定用过那种“OCR神器”,可以把图片中的文字提取出来,极大的提高工作效率。

今天,我们就来做一款实时截图识别的小工具。顾名思义,运行程序时,可以实时的把你截出来的图片中的文字识别出来。

下次,当你想要复制“百度文库”中的内容时,不妨试试这个程序。

效果预览


源码解析
1)等待用户截图
此处需要借助贴图神器(Snipaste)其中“f1”是截图的快捷键,“ctrl+c”是把截图保存到剪贴板的快捷键。
如果使用qq截图的话,需要把快捷键改为对应的“ctrl+alt+c”和“enter”

顺便安利一波Snipaste,

必备效率神器

  1. import keyboard
  2.  
  3. # 利用截图软件(Snipaste)截图到剪贴板# 输入键盘的触发事件keyboard.wait(hotkey="f1")  keyboard.wait(hotkey="ctrl+c")time.sleep(0.1)

上面这段代码执行之后,现在已经有一张图片等待在剪贴板里了。

2)保存截图

利用PIL模块的ImageGrab,可以把剪贴板里的那张图片,保存到当前的目录下,并命名为“screen.png”

  1. from PIL import ImageGrab
  2.  
  3. # 把图片从剪切板保存到当前路径image = ImageGrab.grabclipboard()  image.save("screen.png")

3)识别截图中的文本
法一pytesseract模块
优点:免费,易用缺点:识别效果很一般,准确率不高

使用方法介绍:

1)pip install pytesseract
2)安装 tesseract-ocr.exe 配置环境变量
3)修改pytesseract.py文件,将tesseract_cmd指向Tesseract-OCR的tesseract.exe的绝对路径。

参考文章

见评论第一条

  1. import pytesseractfrom PIL import Image
  2.  
  3. # 法一:利用pytesseract模块# 参数一:图片 # 参数二:简体中文text = pytesseract.image_to_string(Image.open("screen.png"), lang='chi_sim')print(text)

来看看效果:

low的不行果然,要想精度高,还得用百度API
法二百度API接口

AI开放平台文档中心https://ai.baidu.com/ai-doc

查看python语言的SDK文档
 点击右上角(控制台),登录自己的百度账号,创建“文字识别”的应用

  1. import pytesseractfrom aip import AipOcrfrom PIL import ImageGrab
  2.  
  3. # 法二:利用百度APIAPP_ID = '你的 App ID'API_KEY = '你的 Api Key'SECRET_KEY = '你的 Secret Key'
  4.  
  5. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
  6.  
  7. # 读取图片with open("screen.png", 'rb') as f:    image = f.read()
  8.  
  9.     # 调用百度API通用文字识别(高精度版),提取图片中的内容    text = client.basicAccurate(image)    result = text["words_result"]    for i in result:        print(i["words"])

结果如文章首图:

我是总结

1)等待用户截图2)保存截图到当前目录3)识别截图中的文本
其中识别截图文本,有两种方法:

1)利用 pytesseract 模块

2)利用百度API接口

10几行代码,用python打造实时截图识别OCR的更多相关文章

  1. 【python】10分钟教你用python打造贪吃蛇超详细教程

    10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...

  2. 10分钟教你用Python打造天气机器人+关键字自动回复+定时发送

    01 前言 Hello,各位小伙伴.自上次我们介绍了Python实现天气预报的功能以后,那个小程序还有诸多不完善的地方,今天,我们再次来完善一下我们的小程序.比如我们想给机器人发“天气”等关键字,它就 ...

  3. 10分钟教你用Python打造微信天气预报机器人

    01 前言 最近武汉的天气越来越恶劣了.动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了.好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧 ...

  4. 50行代码实现python计算器主要功能

    实现功能:计算带有括号和四则运算的式子   3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 基本思路:使用正则表达式提取出每一层 ...

  5. Python实战:截图识别文字,过万使用量版本!(附源码!!)

    前人栽树后人乘凉,以不造轮子为由 使用百度的图片识字功能,实现了一个上万次使用量的脚本. 系统:win10 Python版本:python3.8.6 pycharm版本:pycharm 2021.1. ...

  6. 10分钟教你用python 30行代码搞定简单手写识别!

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 手写笔记还是电子笔记好呢? 毕业季刚结束,眼瞅着2018级小萌新马上就要来了,老腊肉小编为了咱学弟学妹们的学习,绞尽脑汁准备编一套大学秘籍, ...

  7. 10行代码使用python统计词频

    # -*- coding: utf-8 -*- #!/usr/bin/env python import re f = open("C:\\Users\\陶敏\\Documents\\Pys ...

  8. 千行代码入门Python

    这个是从网上找到的一份快速入门python的极简教程,大概一千行左右,个人觉得不错,特此收藏以备后用. # _*_ coding: utf-8 _*_ """类型和运算- ...

  9. “猜你喜欢”的背后揭秘--10分钟教你用Python打造推荐系统

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 话说,最近的瓜实在有点多,从我科校友李雨桐怒锤某男.陈羽凡吸毒被捕.蒋劲夫家暴的三连瓜,到不知知网翟博士,再到邓紫棋解约蜂鸟.王思聪花千芳隔 ...

随机推荐

  1. 5.3 Nginx 动静分离

    Server 脚本片段 server { listen ; server_name ccserver1; #charset koi8-r; access_log logs/host.access.lo ...

  2. 前端学习笔记系列一:11@vue/cli3.x中实现跨域的问题

    由于浏览器的同源访问策略,vue开发时前端服务器通常与后端api服务器并非是相同的服务器,因此需要使用一个代理服务器实现跨域访问.在@vue/cli3.x根目录下创建一个vue.config.js文件 ...

  3. 十一 JSP&EL&JSTL

    1 什么是JSP? 从用户角度看待,是一个网页从程序员角度,其实是一个Java类,他继承了Servlet,所以可以直接说JSP就是一个Servlet 为什么会有JSP?html多数情况下用来显示静态内 ...

  4. css滚动

    css 滚动transform: translateY(-100px);jquery $(box).height(); //获取元素高度$(box).scrollTop();//获得元素的滚动条高度

  5. 百度小程序-接入自然搜索-API提交Url-c#开发

    开发百度小程序后,接下来,人们最想做的是让百度更多的录入自家内容.因为小程序资源被索引后,才可能在搜索结果中展现. 百度也提供了小程序的自然搜索提交入口.一共有两种方式: 第一种是用已有的H5网站资源 ...

  6. 解决上传代码到GitHub报错Push rejected: Push to origin/master was rejected

    最近在 push 代码到 github 时,IDEA报错 Push rejected: Push to origin/master was rejected 在网友找了一圈,发现都不是想要的答案 于是 ...

  7. 063、Java中输出信息

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-stop

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  9. getchar、scanf以及缓冲区的概念

      1.getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了.       getch()和getche( ...

  10. Charles抓包(HTTP)

    一.电脑抓包: 安装Charles,打开Charles即可 二.手机抓包: 设置手机WiFi配置代理即可:(确保电脑和手机在同一个网络) 三.拦截请求: 四.修改请求/返回: 打上断点后,刷新页面,在 ...