Python调用百度云api,实现截图图片文字识别

Python调用百度云api,实现截图图片文字识别调用百度云api,实现截图图片文字识别相信大家在网上查找资料时都会遇到一些类似于pdf格式的文档,无法直接复制,手打太过于浪费时间。那么在这里我分享一个调用百度云api文字识别接口识别此类文字的python小程序。本人刚学习python时间不长,如果内容有错误还望斧正。首先我们需要去百度云官网申请一个接口点击立即使用创建应用填写需要填写的数据后点击立即创建,即可创建成功此时我们…

大家好,又见面了,我是你们的朋友全栈君。

调用百度云api,实现截图图片文字识别

相信大家在网上查找资料时都会遇到一些类似于pdf格式的文档,无法直接复制,手打太过于浪费时间。那么在这里我分享一个调用百度云api文字识别接口识别此类文字的python小程序。本人刚学习python时间不长,如果内容有错误还望斧正。

首先我们需要去
百度云官网申请一个接口


百度智能云文字识别

点击立即使用


点击立即使用

创建应用


创建应用

填写需要填写的数据后点击立即创建,即可创建成功


在这里插入图片描述

此时我们可以看到已建应用有一个,点击管理应用


在这里插入图片描述

这三个数据我们写代码的时候会使用到


在这里插入图片描述

关于这个接口的费用问题,大家不需要担心,百度云给我们提供了
50000次/天免费完全可以满足大家的学习生活使用

做完了准备工作接下来就要开始代码部分了(本人使用
pycharm,python3


首先我们需要安装几个包

pip install keyboard
#用于监控键盘事件
pip install Pillow
#用于截图后获取剪切板中的内容
pip install baidu_aip
#用于调用百度的文字识别接口

安装完成后我们正式开始写代码了
第一步导包

import keyboard
import time
from PIL import ImageGrab
from aip import AipOcr

定义截图方法,在这里我使用的是qq的截图工具
Ctrl + Alt+A

def jietu():
    if keyboard.wait(hotkey="A+ctrl+alt")==None:#等待键盘输入截图命令,如果你喜欢使用其他的截图工具可以在这里更改
        if keyboard.wait(hotkey="enter")==None:	#截图结束后,按回车键继续向下运行程序
            time.sleep(0.1)						#这里必须进行等待,由于程序的运行速度快于截图的速度,如果不等待可能会出现获取不到图片或者识别上一张图片
            im=ImageGrab.grabclipboard()		#获取剪切板中的图片
            im.save('b.jpg')					#保存图片,这里我们使用一个固定的文件名,可以覆盖掉前一张图片,避免大量的图片占用电脑空间

截图完成后我们就要对被截取图片上的文字进行识别

class Baiduaip(object):
    def __init__(self):
        APPID = '********'
        APIKey = '**********'
        SecretKey = '************'
        #以上三个数据就是我们在百度云申请到的,大家将自己申请到的填入其中即可
        self.client = AipOcr(APPID,APIKey,SecretKey)
    def getPicture(self):
        with open('b.jpg','rb') as f:
            return f.read()
          #读取我们截取到的图片,并返回
    def getText(self):
    #这里进行请求并获取识别后的文字
        image=self.getPicture()
        #调用getPicture()方法,获取图片数据
        text= self.client.basicGeneral(image)
        words_list=text["words_result"]
        #获取到的内容是字典格式,进行解析,words_result里面的内容是列表形式
        for i in words_list:
            word=i["words"]
            return word
            #获取到识别后的文字后,返回结果
            

在这里我们定义一个方法来执行我们定义好的方法,目的为了代码简洁明了,便于其他模块调用

def run():
    jietu()
    #先调用截图方法,进行截图
    baiduaip=Baiduaip()
    #将Baiduaip类实例化
    word=baiduaip.getText()
    #调用Baiduaip类的getText的方法进行文字识别
    print(word)
    #在屏幕上打印
    return word

最后我们来执行一下

if __name__ == '__main__':
    while 1:
        run()

至此程序就写完了,我们找个网页截图实验一下
这是我截的图片
在这里插入图片描述
这是识别结果
在这里插入图片描述
这里给大家一个完整的程序,便于大家查看

import keyboard
import time
from PIL import ImageGrab
from aip import AipOcr
import re
class Baiduaip(object):
    def __init__(self):
        APPID = '**********'
        APIKey = '************'
        SecretKey = '***********'
        self.client = AipOcr(APPID,APIKey,SecretKey)
    def getPicture(self):
        with open('b.jpg','rb') as f:
            return f.read()
    def getText(self):
        image=self.getPicture()
        text= self.client.basicGeneral(image)
        words_list=text["words_result"]
        for i in words_list:
            word=i["words"]
            return word
def jietu():
    if keyboard.wait(hotkey="A+ctrl+alt")==None:
        if keyboard.wait(hotkey="enter")==None:
            time.sleep(0.1)
            im=ImageGrab.grabclipboard()
            im.save('b.jpg')
def run():
    jietu()
    baiduaip=Baiduaip()
    word=baiduaip.getText()
    print(word)
    return word
if __name__ == '__main__':
    while 1:
        run()

如果我有什么错误或者大家有什么看不到的地方可以直接私聊我,我会进行改正。。。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137704.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节「建议收藏」

    京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节「建议收藏」的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里

  • .jar中没有主清单属性[通俗易懂]

    .jar中没有主清单属性[通俗易懂].jar中没有主清单属性问题:xxx.jar中没有主清单属性背景:maven项目,springboot服务   IDEA打包,jar包运行出现上述错误解决方案:pom.xml中添加 <build><plugins><plugin><groupId>org.sp…

  • 文末彩蛋 | 这个 Request URL 长得好不一样

    文末彩蛋 | 这个 Request URL 长得好不一样有朋友拿到一个网站请求的链接问这要怎么解密?很明显这不是加密的数据,这是一张图片base64后的结果,第一次写爬虫朋友遇到这样的请求,可能需要琢磨一下这是什么东西。如…

    2022年10月19日
  • 面试java工程师的自我介绍_软件开发和程序员一样吗

    面试java工程师的自我介绍_软件开发和程序员一样吗程序员面试时一段短短的自我介绍,其实是为了揭开更深入的面谈而设计的。下面学习啦小编为你带来java程序员面试自我介绍范文的内容,希望你们喜欢。关于java程序员面试自我介绍范文篇一本人叫小冰,今年22岁,现在是吉林大学软件开发与信息管理专业方向的三年级学生,对软件开发怀有浓烈的兴趣,且对JAVA语言尤其熟悉,能熟练使用jsp、struts、struts2、sring2和hibernate3等流行的…

    2022年10月29日
  • STM8S之STVD问题解决47 can’t openfile crtsi0.sm8「建议收藏」

    STM8S之STVD问题解决47 can’t openfile crtsi0.sm8「建议收藏」用STVD+COSMIC编译工程时出现以下错误(加载的别人的工程):#errorclnkDebug\demo.lkf:47can’topenfilecrtsi0.sm8#errorclnkDebug\demo.lkf:60can’topenfilelibis0.sm8#errorclnkDebug\demo.lkf:61can’topenfilelibm0.sm…

  • debounce实现 js_聊聊lodash的debounce实现

    debounce实现 js_聊聊lodash的debounce实现本文同步自我的Blog前段时间团队内部搞了一个代码训练营,大家组织在一起实现lodash的throttle和debounce,实现起来觉得并不麻烦,但是最后和官方的一对比,发现功能的实现上还是有差距的,为了寻找我的问题,把官方源码阅读了一遍,本文是我阅读完成后的一篇总结。本文只会列出比较核心部分的代码和注释,如果对全部的源码有兴趣的欢迎直接看我的repo:什么是throttle和debo…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号