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)
blank

相关推荐

  • vue 父组件调用子组件_react父组件向子组件传值

    vue 父组件调用子组件_react父组件向子组件传值Vue中子组件调用父组件的三种方法:1.直接在子组件中通过“this.$parent.event”来调用父组件的方法。父组件<template><div><child></child></div></template><script>importchildfrom’./components/childcomponent’;exportdefault{co

  • 实现图片懒加载的三种方式(前端路由懒加载原理)

    1.什么是图片懒加载图片懒加载就是鼠标滑动到哪里,图片加载到哪里。总的来说,一般页面打开,会同时加载页面所有的图片,如果页面的图片请求太多会造成很卡很慢的现象,为了避免这一现象,利用懒加载图片的方法,提高性能(典型:淘宝)2.实现图片懒加载的原理图片懒加载的实现原理:将图片的地址放在data-set属性中,由于图片并没有在src中,并不会发送http请求。比…

  • 2021 Java面试真题集锦

    2021 Java面试真题集锦目录…1大厂面试的基本流程 17字节跳动 17阿里 17腾讯 18网易游戏 18面试前需要准备: 18面试中可以借鉴的套路 19用简历争取到更多的面试机会 19自我介绍时,立即全面抛出技术栈和亮点 20先介绍项目背景,打消面试官疑问 21通过说项目管理工具,说明你不仅会写代码 22用SPRINGBOOT项目举例,说明你的技术基本面 23用实例说明你在内存调优方面的经验 24展示你在数据库调优方面的经验 25总结前文说辞 26准备项目说辞时,更可以准备后继面试官的问

  • C++二维数组sort排序问题

    C++二维数组sort排序问题以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?实验内容:利用二维数组进行“三级排序”测试1:使用c++内置的普通型二维数组#include&lt;algorithm&gt;#include&lt;iostream&gt;usingnamespacestd;boolcmp(inta[],intb[]){ …

    2022年10月20日
  • 开发发版流程_文件签发流程

    开发发版流程_文件签发流程迭代流程开发人员:周一到周五产品设计:周一到周五测试人员:周六收集需求:周一周二周三周四需求梳理周五用户意见周六第二次需求梳理需求阶段第一次需求梳理会议开发人员和测试人员通过此会议了解下一次迭代

  • ASP.NET 如何获得文件夹大小

    ASP.NET 如何获得文件夹大小例如可以用以下方法:其中参数path所传递的值是所要查看的文件夹的绝对路径!首先要导入System.IOC#//获取某个文件夹的大小public static long getDirectorySize(string path)  {  DirectoryInfo dirInfo=new DirectoryInfo(path);  long sumS

发表回复

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

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