《用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()

软件测试贴图



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

用Python提取图片截图中的文字相关推荐

  1. 教程 | 用Python识别图片验证码中的文字

    作者 | 老表 来源 | 简说Python(ID:xksnh888xksnh888) [导语]在今天这篇文章中,作者分享给大家一个有趣又干货满满的 Python 项目.通过这份教程,大家不仅又多了一个 ...

  2. pdf exe如何提取pdf文件_python应用:如何用python提取pdf文件中的文字

    从pdf中提取文字,相信很多人都干过这事,怎么在python中实现呢,今天带大家看看. 第一步导入库 import PyPDF2 第二步导入pdf文件 pdf_file =open('dataset/ ...

  3. python提取图片文字视频教学_用Python提取视频中的图片

    小编自己码的通用型函数,支持各种常用视频格式,可满足常用需求,亲测效果和速度都不错. 想获取本文数据和完整代码的下载链接,请关注微信公众号"R语言和Python学堂",并回复发文日 ...

  4. 在ubuntu20.10系统下实现一键OCR识别图片截图中的内容使之转换为文本可以复制粘贴

    目的:因为最近主要使用ubuntu系统,想要将视频中的文字提取出来,实现一键OCR识别图片截图中的内容使之转换为文本可以复制粘贴. 主要思路 利用截图软件gnome-screenshot 进行截取需要 ...

  5. python提取xml文件中的坐标点(labelimg标记文档)

    LabelImg是深度学习中用来标注图片中物体位置与名称的工具,LabelImg标记数据的xml文档也比较简洁明了. 标记图片: 保存后生成的xml文件: Python提取文档中的标记信息(坐标信息& ...

  6. vscode中打开pdf文件_提取pdf文件中的文字

    环境说明 windows10系统 python3.6版本 安装 网上很多说需要安装pdfminer3k和pdfminer3k.six,我尝试了先安装pdfminer3k后安装pdfminer3k.si ...

  7. 利用Python提取PDF文件中的文本信息

    如何利用Python提取PDF文件中的文本信息 日常工作中我们经常会用到pdf格式的文件,大多数情况下是浏览或者编辑pdf信息,但有时候需要提取pdf中的文本,如果是单个文件的话还可以通过复制粘贴来直 ...

  8. C#提取HTML代码中的文字(转)

    C#提取HTML代码中的文字 /// <summary>   /// 去除HTML标记   /// </summary>   /// <param name=" ...

  9. python读json文件中不同的数据类型_怎么使用python提取json文件中的字段

    python中为什么用json有什么作用 python的json模块中如何将变量添加到里面 python的json模块第一个是要打开的文件,第二个是打开的操作,为什么会如果你早认清你在别人心中没那么重 ...

最新文章

  1. MySQL之父等国际数据库掌门人齐聚,1024 程序员节全体大会重磅官宣!
  2. 示廓灯——也就是前后位置等开启方法 还有该死的刮水器是长这样的
  3. 51nod1092(lcs简单运用/dp)
  4. C语言 · 数位分离
  5. C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考
  6. SLAM | 三维重建方法之KinectFusion与ElasticFusion详解
  7. android解析ip地址,android – 如何从IP地址解析网络主机名
  8. Python 数据类型 list(1)
  9. Android 帧动画 xml 方式实现
  10. (Ruby)Ruby中区块用的一些潜藏关键字
  11. shared_ptr四宗罪
  12. tomcat 部署指南
  13. 使用 PHP Curl 做数据中转
  14. java类型占用字节数类型转换
  15. 30岁软件测试转产品_补水抗皱紧致护肤产品盘点 护肤品排行榜前十名适合30-40岁...
  16. 多线程Socket传送文件的客户端和服务端源代码
  17. [OpenDrive] OpenDrive学习笔记
  18. 【IT互联网系列】什么是网关?网关的作用是什么?看完不懂,你捶我
  19. 会议介绍:国际会议级别
  20. Web前端开发主要做什么

热门文章

  1. PHP 数组转字符串,与字符串转数组
  2. hash_map哈希映照容器
  3. 不收版面费的教育技术杂志(转---部分杂志社已经开始收钱,请大家注意核实,如有意外,本人概不负责!)...
  4. 远程访问手机搭建的Linux服务器
  5. CNN基础知识——池化(pooling)
  6. immutable java 类_Immutable类生成器
  7. 团队协作软件如何整合内容营销
  8. Vue Element table表格实现表格数据动态滚动(无限滚动)
  9. jQuery选择器和JS选择器
  10. Java中JVM的xmx和xms配置成一样的好处