1. 获取百度识字API

由于百度提供了免费的图片识字API,而且非常好用,所以直接使用百度的api来进行识字。

首先在百度AI开放平台注册一个账号,网址http://ai.baidu.com/,注册完之后进入右上角控制台,点击->"文字识别"

点击“创建应用”

创建一个识字的应用,接口选择“文字识别”,然后下面填个人,描述随便写一些

然后再应用主页中可以看到申请到的API key和Secret Key,该接口一天可以每天调用50000次,完全可以满足我们个人的需求

2. 调用百度API

拿到API_KEY和SECRET_KEY后获取token,然后通过token和接口来对图片进行识字,这里使用本地tmp.png作为目标图片进行识别。代码如下,想用的直接复制就好

baidu.py

"""
baidu.py
"""
import requests
import base64API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'def get_access_token():# 获取token值# client_id 为官网获取的API_KEY, client_secret 为官网获取的SECRET_KEYhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=' + \'client_credentials&client_id=' + API_KEY + \'&client_secret=' + SECRET_KEYresponse = requests.get(host)access_token = response.json()['access_token']return access_tokenaccess_token = get_access_token()def img2word():# 将图片中的文字识别出来global access_tokenrequest_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"# 二进制方式打开图片文件f = open('./tmp.png', 'rb')img = base64.b64encode(f.read())params = {"image":img}request_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers)print(response.json())ret = [x['words'] for x in response.json()['words_result']]return ret

3. 实现截图功能

识字部分已经完成,接下实现截图功能,我们想要像微信里面截图那样可以选中区域进行截图,代码如下

scrshoot.py

"""
scrshoot.py
"""
from PIL import ImageGrab
import tkinter
import ctypesclass CTkPrScrn:def __init__(self):self.__start_x, self.__start_y = 0, 0self.__scale = 1self.__win = tkinter.Tk()self.__win.attributes("-alpha", 0.1)  # 设置窗口半透明self.__win.attributes("-fullscreen", True)  # 设置全屏self.__win.attributes("-topmost", True)  # 设置窗口在最上层self.__width, self.__height = self.__win.winfo_screenwidth(), self.__win.winfo_screenheight()# 创建画布self.__canvas = tkinter.Canvas(self.__win, width=self.__width, height=self.__height, bg="white")self.__win.bind('<Button-1>', self.xFunc1)  # 绑定鼠标左键点击事件self.__win.bind('<ButtonRelease-1>', self.xFunc1)  # 绑定鼠标左键点击释放事件self.__win.bind('<B1-Motion>', self.xFunc2)  # 绑定鼠标左键点击移动事件self.__win.bind('<Escape>', lambda e: self.__win.destroy())  # 绑定Esc按键退出事件user32 = ctypes.windll.user32gdi32 = ctypes.windll.gdi32dc = user32.GetDC(None)widthScale = gdi32.GetDeviceCaps(dc, 8)  # 分辨率缩放后的宽度heightScale = gdi32.GetDeviceCaps(dc, 10)  # 分辨率缩放后的高度width = gdi32.GetDeviceCaps(dc, 118)  # 原始分辨率的宽度height = gdi32.GetDeviceCaps(dc, 117)  # 原始分辨率的高度self.__scale = width / widthScaleprint(self.__width, self.__height, widthScale, heightScale, width, height, self.__scale)self.__win.mainloop()  # 窗口持久化def xFunc1(self, event):# print(f"鼠标左键点击了一次坐标是:x={g_scale * event.x}, y={g_scale * event.y}")if event.state == 8:  # 鼠标左键按下self.__start_x, self.__start_y = event.x, event.yelif event.state == 264:  # 鼠标左键释放if event.x == self.__start_x or event.y == self.__start_y:returnim = ImageGrab.grab((self.__scale * self.__start_x, self.__scale * self.__start_y,self.__scale * event.x, self.__scale * event.y))imgName = 'tmp.png'im.save(imgName)print('保存成功')self.__win.update()self.__win.destroy()self.__win.quit()def xFunc2(self, event):# print(f"鼠标左键点击了一次坐标是:x={self.__scale * event.x}, y={self.__scale * event.y}")if event.x == self.__start_x or event.y == self.__start_y:returnself.__canvas.delete("prscrn")self.__canvas.create_rectangle(self.__start_x, self.__start_y, event.x, event.y, outline='red', tag="prscrn")# 包装画布self.__canvas.pack()if __name__ == '__main__':prScrn = CTkPrScrn()

4. tkiner实现简单UI

通过tk库简单实现一个窗口用于截图和显示文本,同时可以复制文本

front.py

"""
front.py
"""
import tkinter as tk
from baidu import  img2word
from scrshoot import CTkPrScrndef center_window(root, width, height):  # 将window设置在屏幕中间screenwidth = root.winfo_screenwidth()  screenheight = root.winfo_screenheight()  size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2)  root.geometry(size)  def srcandserach():global root, text_wordsCTkPrScrn()words = ' '.join(img2word())print(words)text_words.delete(0.0,tk.END)text_words.insert(tk.INSERT,words)root.update()ft = ('Arial', '12') # 字体大小
root = tk.Tk()
root.title('识字搜索')center_window(root, 800,300)
# 截图按钮
button_scr = tk.Button(root, text="截图", font=ft, command=srcandserach)
text_words = tk.Text(root, width=80,height=10, font=ft)button_scr.grid(row=0, column=0)
text_words.grid(row=1, column=0)
root.mainloop()

5. 工具展示

识字ui

点击截图识字,可以识别出截图的文字信息,大功告成啦~

Python实现截图AI文字识字小工具相关推荐

  1. python androidhelper 语音识字_Python实现截图AI文字识字小工具

    1. 获取百度识字API 由于百度提供了免费的图片识字API,而且非常好用,所以直接使用百度的api来进行识字. 首先在百度AI开放平台注册一个账号,网址http://ai.baidu.com/,注册 ...

  2. 手写体识别代码_【玩转腾讯云】使用API快速构建文字识别小工具之唐诗识别

    本篇推文共计1500个字,阅读时间约3分钟. 腾讯云-腾讯倾力打造的云计算品牌,以卓越科技能力助力各行各业数字化转型,为全球客户提供领先的云计算.大数据.人工智能服务,以及定制化行业解决方案.具体包括 ...

  3. 图片转文字在线小工具推荐

    最近在工作中需要将大量的图片转成文字,因此尝试了各个点击率靠前的图片转文字在线小工具,发现了一个叫修图狗的网站,里面的图片转文字的功能应该是免费网站中最好的了.它不需要你登录,而且不限制上传图片的大小 ...

  4. python图像处理——图片区域颜色替换小工具

    python图像处理--图片区域颜色替换小工具 使用场景 图片区域颜色替换小工具使用python开发,可用于选取图片相同颜色的区域,可设定选择精度,可自由选择颜色,将区域的颜色进行替换.可使用橡皮擦工 ...

  5. 用Python做了一个法律查询小工具,非常好用

    用Python做了一个法律查询小工具,非常好用 效果展示 准备工作 主要代码 哈喽兄弟,今天给大家分享一个Python tkinter制作法律查询小工具. 光爬虫大家也只能自己用用,就算打包了exe, ...

  6. 免费OCR图片文字识别小工具,一键提取图片中文字,支持多语言翻译和发票识别

    最近用周末和下班后的时间,开发了一款图片文字识别的小程序( 扫描识字宝 ),可以直接拍照或者扫描识别图片上的文字,并支持提取成文档.还加上了图片翻译功能,支持图片上文字提取后翻译成多国语言.也加入了增 ...

  7. python中颜色介意用数字表示_利用Python实现颜色色值转换的小工具

    先看看Zeplin 的颜色色值显示示例 原有处理方式 因为我会 Python (仅限于终端输入 python 然后当做计算器算,或者用 hex() 函数把十进制转换成十六进制),所以遇到这样的问题我当 ...

  8. cdr 表格自动填充文字_CDR小工具YG插件,从此提升工作效率!

    这是素材兔的第096期干货推荐 素材兔出品,必属精品,每件你都值得拥有 置顶(星标)我们,限时限量免费干货不再错过 01 CDR是一款设计软件,和PS.AI等齐名的平面设计软件,但是奈何版权原因,目前 ...

  9. 我用Python实现截图识别文字,工作效率提升,直接打卡下班

    大家好,我是大飞,今天给大家带来Python实现有趣的脚本. <font size="5"">ta href="#diary-tail" ...

  10. 截图如何转成文字?分享截图转文字的小技巧给你们

    随着科技的发展,人们在工作.学习.生活中需要处理的大量文本信息,使得文字转换变得非常必要.截图转文字功能的出现,可以让大家更加方便快捷地将图片中的文本信息转换为可编辑的文字格式.那大家知道截图如何转文 ...

最新文章

  1. windows 80端口被占用的解决方法
  2. 德国颁发抄袭大奖,中国包揽前10名拿了大满贯!
  3. Chapter 7. Testing and Debugging
  4. Python(数据库之表操作)
  5. 小心DataAdapter陷阱
  6. docker run后台启动命令_Docker-第五部分:15个 Docker 命令
  7. oracle常用的字符串函数,Oracle的常用字符函数实验展示
  8. ccs 移植创建新工程_CCS新工程创建与配置
  9. 使用.NET Mobile API即51Degrees.mobi检测User-Agent
  10. Asp.net中文件的上传和下载(视频教程)
  11. Quartus与modelsim的初级使用教程
  12. 二进制文件vscode_最强编辑器 VSCode 系列之插件推荐【不定期更新】
  13. Linux进程调度器的设计--Linux进程的管理与调度(十七)
  14. 【Python百日进阶-Web开发-Feffery】Day432 - fac实例:使用国内cdn加载静态资源
  15. linux系统下mysql编码格式,Windows、Linux系统下mysql编码设置
  16. PMP项目管理证书有用吗?
  17. c语言数组相同字符主元素,C语言数组考点归纳
  18. Univariate Distribution Relationships(单变量分布关系)
  19. 射频卡机井灌溉控制器特点
  20. [翻译]估计硬件规模:为什么我们没有一个明确的答案?

热门文章

  1. linux磁盘刻录ISO工具,技术|Ubuntu下的三个好用的CD/DVD刻录工具
  2. x86 android 显卡 tablet2,随心而变 ThinkPad Tablet 2评测
  3. php 通过ip获取省份,通过IP获取用户地理位置省份城市的接口使用
  4. UI自动化报错Can not connect to the Service解决方案
  5. 第一次跳槽总结(产品经理,简历面试)
  6. 如何使用工时表软件跟踪时间和成本?
  7. 性能测试实战(一):性能测试入门
  8. 2021年9月份最新数据库排行榜出炉
  9. iphone4刷android,iPhone4如何刷机
  10. 广义线性模型 matlab,基于Matlab的广义线性模型建模