用Python提取图片截图中的文字

《用Python“破解”某度文库等文库复制的限制》

tips:当个标题党真刺激啊
开发背景
临近期末,CYooQ要写许多作业。迫不得已寻找度娘解决问题,找到之后,CYooQ习惯性地ctrl+c,当ctrl+v时发现,emmm!?没有啊!仔细一看,网页限制了复制。月末生活费告急的CYooQ,不得不寻求Python的帮助。于是CYooQ快马加鞭完成了。可是!可是!可是!午夜的月光触发了作业截至的丧钟!。。。。


前提准备

  • Python3.7(目测2.7版本也ok)
  • baidu-aip(百度OCR Python SDK)
  • 依赖库 pillow(Python的图像处理标准库)
  • 还有 keyboard(此项可选,监控键盘,设置快捷键,增强用户体验)
  • 一台电脑
  • 百度AI开放平台账号(获取到API调用权限)
    百度AI开放平台API使用移步到(这)*
    也可自行百度

需求分析

  • 能够对图片进行处理
  • 能够显示出处理后的文字结果
  • 能够有较好的用户操作界面(日后优化)

功能实现

  • 本地(磁盘中)图片处理功能(初步)
    直接读取文件,或者按照用户的输入文件路径进行处理。
    使用的函数open()。建议这样写
	with open(img_name,'rb') as File:Img = File.read()

优点是,它会自动关毕文件,不让你的内存变红啊啊啊啊

  • 截图(内存中)图片处理功能(初步)
    将内存中的数据取出并且保存下来
    使用ImageGrab.grabclipboard()来获取图片(因为目前主流的截图都是会放入剪贴板中的,所以可以直接获取到) 这里会返回一个二进制数据。依赖的库是pillow,在一开始我们就导入
 from PIL import ImageGrab

然后我们要用个东西接住二进制数据Image = ImageGrab.grabclipboard()
再然后我们保存它Image.save(img_name)这样我们的问题就从内存中转到磁盘中的解决方法了。这样可以保证图片处理模块复用性高!

  • 真正的图片处理功能(敲黑板)
    我们需要使用百度AI开发平台的Api,稍后会简单介绍一下,或者移步这篇博客百度AI开放平台—简单步骤介绍(多图警告)看具体的操作。
    我们在开头就导入
	 from aip import AipOcr

我们需要写在前面的是,配置信息

	""" 你的 APPID AK SK """APP_ID = '这里填你的APP_ID'API_KEY = '同理这里是API_KEY'SECRET_KEY = '同理这里是SECRET_KEY'client = AipOcr(APP_ID, API_KEY, SECRET_KEY)"""结束"""

我们通过第一个功能,open() 文件之后,获取到的Img传入到这client里面。用个Result接住
Result = client.basicAccurate(Img)

  • 处理结果显示
    1. 直接在黑框框中显示,简单明了。(个人觉得这样简约,有B格)
    使用函数的话print()不香吗》?
    2. 日后添加自动存入到剪贴板中的功能。(贴合用户使用)
    使用的依赖库pyperclip(剪切板操作)

  • 可视化操作界面
    日后优化,日后优化,日后优化。哈哈哈

  • 截图功能
    (可以借用下已有常用软件的模块,系统截图QQ截图输入法截图) 基本上能够在指定区域截图的软件都OK。如果以后有机会,跟新个截图的实现方法。还得不断学习学习学习

  • 图片保存功能
    上面以及说了,请看 截图(内存中)图片处理功能(初步)这个步骤

  • 图片一键删除功能
    我们可以获取程序当前目录下的所有图片文件,这可难到我了,图片文件辣么多。怎么删?那我们就偷下懒(不写正则),两种方法。
    将全部图片放到一个文件夹里面,直接删除文件夹。os.removedirs(file_name)
    在把内存中图片放到本地时,按照顺序来命名!1.jpg->2.jpg->3.jpg
    这样我们可以简单有效的处理,用个for循环,不断try删除,except就退出。

    try:for num in range(1,999):i_name = str(num)+r'.jpg'os.remove(i_name)except:print("Done!")

不偷懒写法(写正则)
先用files = [d for d in os.listdir('.')]生成器获取到当前目录下的所有文件。写个正则,匹配一下所有已知图片文件的后缀。筛选后再直接for循环用os.remove(img_name) 进行删除!不贴代码了

  • (功能快捷键设置)
    这是个黑科技!我们先导入
import keyboard

然后再这样

keyboard.add_hotkey('f7',function_1)

OK啦,就这么简单,所以我们可以按f7执行function_1函数啦。真香~


具体代码实现(截图版本):

可以稍微修改下变成,本地版本,直接阉割掉前部分功能,直接读取就ok了。
日后会持续跟新,优化功能,可以关注一下!

from PIL import ImageGrab
from aip import AipOcr
import keyboard,os,time""" 你的 APPID AK SK """
APP_ID = '这里填你的APP_ID'
API_KEY = '同理这里是API_KEY'
SECRET_KEY = '同理这里是SECRET_KEY'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
"""结束"""
global Count
Count = 1
def Solve():global Count #这是按顺序命名的全局变量try:Image = ImageGrab.grabclipboard() #获取截图图片Name = str(Count)+r'.jpg' Image.save(Name) #保存图片time.sleep(1) #睡觉等待Count = Count + 1with open(Name,'rb') as File:Img = File.read()Result = client.basicAccurate(Img)Num = Result['words_result_num']if (Num==0):print("Your Image Has Not Strings") #你的图片里面没有字哦else:for x in Result['words_result']:print(x['words'])except:print("No Image") #你内存没有图片哦def Clear():    #try a try global Counttry:for x in range(1,999):#目测正常人应该最多用999个吧Name = str(x)+r'.jpg'os.remove(Name)except:print("Done")Count = 1 #我香了,别忘记别人还得接住用,把序号再变为1def main():keyboard.add_hotkey('f7',Solve) #f7处理图片keyboard.add_hotkey('f9',Clear) #f9删除图片keyboard.wait('esc') #按退出键结束程序if __name__ == '__main__':main()

软件测试贴图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
日后会持续跟新,优化功能,可以关注一下!
本人软工萌新一枚,程序难免会有些缺现,为了不断完善,还望大家能在评论区或者私信相互交流,互相学习。我尽力及时回复的啦!哈哈哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253649.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python利用OCR提取图片中的文字

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 Python利用OCR提取图片中的文字 很多软件内置了OCR功能,即图片提取文字功能。有些是免费提供给大家使用,但有些…

如何使用Python从图片中提取文字?

目录 Python图片识别文字一、Tesseract下载及安装二、配置环境变量三、代码部分 Python图片识别文字 一、Tesseract下载及安装 下载链接 Index of /tesseract. 点击下载适合电脑配置的最新版本 下载完成并开始安装 选择默认英文 点击下一步 点击我同意 点击为任何使用计算机…

Redis事务详解

目录 一、前言二、Redis事务 - 基本使用三、Redis事务 - 错误处理四、Redis事务 - 事务冲突1、事务所产生的问题2、悲观锁&乐观锁3、watch监听4、watch的应用场景 五、Redis 事务特性 一、前言 事务是指一个完整的动作,要么全部执行,要么什么也没有…

python--识别图片中的文字

本篇文章主要参考了 python图像处理之识别图像中的文字 这篇文章,在实现的过程中出现了些偏差,特此记录。因为此时笔者不是第一次安装,所展示的结果会和首次安装的结果有所差别。 1.安装PIL 以管理员的身份打开命令提示符,输入&…

【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR

【Python例】利用 python 进行图片文字信息的提取 — OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成。 什么是 OCR? OCR OCR(Optical character recognition,光学字符识别)是一种将图像中的…

Python提取图片中的文字信息

Python提取图片中的文字信息 使用的Python库 Python tesseract是Python的一个光学字符识别(OCR)工具。也就是说,它将识别并“读取”嵌入图像中的文本。 Python tesseract是Google tesseract OCR引擎的包装器。它还可用作tesseract的独立调…

Python识别图片中的文字

Python识别图片中的文字 一、前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制。或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存。但是…

python提取图片中的文字

python提取图片中的文字 准备工作原图片完整代码结果预览 OCR,全称Optical character recognition,中文译名叫做光学文字识别。它把图像中的字符,转换为机器编码的文本的一种方法。OCR技术在印刷行业应用得非常多,也广泛用于识别图…

python代码提取图片文字

步骤一:安装两个库 需要安装pytesseract和PIL两个库,然后还要安装tesseract-ocr识别引擎 问题一:安装两个库失败 这个博主讲的很详细参考链接lpython3安装pil报错 使用pip命令安装这两个库(pip命令无法使用的参考我的这篇文章将…

【Python • 图片识别】pytesseract快速识别提取图片中的文字

提示:本文多图,请手机端注意流量。 文章目录 前言一、配置环境1. 安装python依赖2. 安装识别引擎安装tesseract识别引擎(可跳过)验证是否安装成功 二、使用步骤1.引入库2.提取图片文字3.运行效果 总结完整代码 前言 利用python做…

MySQL进阶- Linux安装 和 索引

目录 Linux安装索引索引的概述索引的结构索引结构的介绍BtreeBtreeHash 索引的分类索引的语法(创建,查看,删除等)SQL性能分析SQL的执行频率(查看SQL的执行频率)慢查询日志show profilesexplain执行计划 索引…

Nginx同时支持Http和Https的配置

现在的网站支持Https几乎是标配功能,Nginx能很好的支持Https功能。下面列举一个配置同时支持Http和Https的功能。 需要注意的是:既然选择使用Https,就是为了保证通信安全,那么就没必要再用Http进行通信了。在URL中还支持Http的方式…

Nginx配置同时支持http和https两种方式访问

http: https: Nginx的ssl模块安装 进入到目录的sbin目录下,输入 #注意这里是大写的V,小写的只显示版本号 ./nginx -V 如果出现 (configure arguments: --with-http_ssl_module), 则已安装(下面的步骤可以跳过,直接进…

HTTP 和 HTTPS 的区别(面试常考题)

前言 无论是在校学习还是找工作的时候,老师和面试官都问过同学 HTTP 和 HTTPS 的区别。平时上网的时候也没有关注这个问题,只是知道计算机网络里 HTTP 的概念,所以最近才查资料好好补补这一块。其实这一块的知识延伸很广,如果之前…

网站开发(一)http和https的区别 http是什么?http协议的特性 http与https网站通信协议两者的有什么不同呢?

目录 一、前言 二、HTTP是什么? 1、HTTP发展阶段 2、HTTP工作原理 3、HTTP的工作特性 三、HTTP和HTTPS区别 1、http与https端口不同 2、http和https应用 ? ? ? ? 2.1 http应用 ? ? ? ? 2.2 https应用 3、 http和https区别简易图 一、前言 HTTP是…

HTTP和HTTPS区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此&…

HTTP和HTTPS的工作原理及区别

一、HTTP和HTTPS的基本概念 HTTP(HyperText Transfer Protocol:超文本传输协议):是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从Web服…

Spring Boot项目同时使用http和https

有些时候项目需要同时监听在不同的端口上,比如同时监听http80和https 443端口,这时我们需要自定义web server。 假设我们需要项目同时使用http和https两种协议提供服务,分别使用端口80和443。 我们知道Spring Boot内置了tomcat,jetty,under…

http和https的区别https的连接方式

首先了解什么是http协议,http协议是超文本传输协议,他存在的目的是为浏览器和服务器之前传输信息。但是http是明文传输的,不管是谁,只要抓取了浏览器传向服务器,或者服务器传向浏览器的信息,就可以获取里面…

http和https有什么区别?

ps:https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密。防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名。另外是加密,加密需要一个密钥交换算法,双方通过交换后的密…