热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python屏幕文字识别_使用Python制作一个简易的OCR图片文字识别工具

最近,快要期末考试了,平时没有好好学习,在网上搜索了大量的考试复习资料。无奈,大多是收费版本的,对于学生党来说

最近,快要期末考试了,平时没有好好学习,在网上搜索了大量的考试复习资料。无奈,大多是收费版本的,对于学生党来说,随便下载一篇内容,无疑要花掉我们好几顿饭的money。有没有好的办法呢?今天带领大家使用Python制作一个简易的OCR图片文字识别工具,来解决这类问题。

e824b899a9014c08ea1bd4b9cb1d120d7bf4f472.jpeg?token=d26b57cc2653081e6673565cf4612b3f&s=39E2E2069D06E74F5E38E2430300F077Python制作一个OCR工具

【我们需要知道的几个知识点】

OCR:中文叫光学字符识别,英文全称是Optical Character Recognition,说白了就是从电子设备中显示的图片上面查找我们需要的字符,通过检测、识别将字符翻译成计算机文字的过程。截屏键:我们每个人的计算机键盘上面是不是有一个PrtSc,可能有的键盘显示不一样,但我的键盘上是这样,其它键盘肯定也有,除非……呃,可能不是地球上的键盘,再者就是有的小键盘可能没有这个键,但是恕我孤陋寡闻,我没见过这种键盘。mspaint:我们使用windows系统时,按住‘win’+ ‘R’键(什么?你找不到这个键?自行百度吧,兄嘚),会弹出一个对话框,在对话框中输入mspaint会打开系统提供给我们的一个简易的绘图工具,通过这个工具可以实现对图像的简单处理。比如截图,保存图片等等操作。【思 路】

打个比方,如果你在电脑上看到了一篇很不错的文章,使用截屏键(PrtSc)先把它截取下来,如果你刚好是个懒人,不想一个字一个字的去敲这些内容,而你又很想编辑这些内容。这时候,你可以打开mspaint(什么?你找不到?那你可能使用的是别的操作系统,linux、mac、unix……我猜你是个高手,那请略过此文)。然后新建一个图片文件,然后Ctrl+V粘贴屏幕截图,裁剪你需要的文字,保存在一副图片里面。再使用我们的工具(下文烹饪),你就可以轻轻松松的获取图片中的文字了……

上面只是教大家一个方法,我们此文讨论的重点是如何实现这个工具。本文涉及的知识点有:百度AI提供的API接口的使用、百度AI账号的注册以及baidu-aip库的安装。请大家自行上网学习。类似教材网上有好多。我们今天主要是结合这些内容做一个实例供大家使用。

【Python程序实现OCR】

我们要实现这个功能,我总结了一下,现今主要有两种方式,各有优劣,一种是使用Tesseract-OCR库,这种方式实现较为复杂,需要配置一些环境变量和参数,对于小白来说可能有点难度;另一种是使用百度API接口,这种方式较为直接,只要申请一个百度账号即可免费使用,对于申请方式大家自行网络学习,本文不做进一步探讨。开始前我们需要具备下面一些条件:

百度AI中创建一个免费的图像识别应用后,系统给你生成的AppID、API Key、Secret Key,这三个内容我们程序中需要使用的。

安装baidu-aip模块。当然是使用pip install baidu-aip进行安装了。

有了这两个先决条件,我们打开神器PyCharm,开始敲代码吧。

a6efce1b9d16fdfa3aa6da8675e99c5195ee7b7f.jpeg?token=19116f250b5e2c7831ef74ca2740f9f9&s=60F231C09FA4BD7202C9288E03001002Python实现OCR功能

然后,我们测试下这个方法,看看是否能返回正确的文字,我们以一副李白的《将进酒》图片输入,看下是否能返回里面的文字。如片如下:

7c1ed21b0ef41bd5dde9480991bc91ce38db3d04.jpeg?token=ca472a97fc23322bc67b86f08509a8a8&s=31958B761BE7CD7E5683797C03005029李白的《将进酒》图片

我们在PyCharm中测试看下效果。如下图所示。

b64543a98226cffcbaf5017678675a95f403ea87.jpeg?token=b401ec052502362b945d9818e17e30c5&s=A0C2FD028B44374B85551D3703001040图片文字提取成功

【把它封装成一个工具】

好了,我们的主要功能已经实现。现在,我们把这个方法封装到类中,制作一个类似OCR的工具,创建一个图形界面类。主要代码如下所示。

首先,导入我们需要的模块

from aip import AipOcrfrom tkinter import *from tkinter.messagebox import askyesnofrom tkinter.simpledialog import messageboxfrom tkinter.filedialog import askopenfilename, asksaveasfilenamefrom tkinter.scrolledtext import ScrolledText

然后自定义一个App类,下面是类的变量初始化代码。

b8389b504fc2d562a5b97092267780ea77c66c83.jpeg?token=b3fd40fafa396712b7523ae3b94004ec&s=A4E2F3005AB1984B04EC35070100E0C2类的初始化和界面的创建

程序比较简单,这里就不一一解释了,有问题的朋友们欢迎留言讨论。

最重要的一步,我们对按钮的点击事件进行响应。

首先是打开图片按钮的响应事件函数,我们看下具体代码,如下图所示。

d439b6003af33a877734d811043a003d5243b5c8.jpeg?token=dc9fbdcaf1a9d144909680edee8886b8&s=E8E2B74412E0B94B4EED511E0300C0C2打开图片文件按钮响应事件函数

然后我们点击另一个按钮就会将获取到的文本内容进行保存,当然,我们可以对识别的错误进行修正后保存哦……保存按钮响应事件如下图所示。

86d6277f9e2f0708f14a71072842a89ca801f2d2.jpeg?token=487ebea49d9ee60a826f89c5afb898a6&s=E0E2974687B498721859610C0300F0C2保存文本文件按钮响应事件函数

我们看下界面显示效果吧!如下图所示。

3812b31bb051f819049e8e731bd25ae82e73e738.jpeg?token=6e26fc80f25e55a06ed4df6079471e0f&s=490A6D9A8CFD4C8A54E965F10300C0B2程序执行效果演示

程序成功执行。怎么样,是不是很酷?需要强调的是,调用百度API需要联网哦!并且,好像免费的图像识别功能每天只能调用500次,所以我的AppID没有给大家分享。对这个课题感兴趣的话欢迎大家留言讨论。

转载请注明出处(百家号:Python高手养成)


推荐阅读
author-avatar
粉红的少女
网络借贷平台http://www.kljie.com/
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有