Python小应用 百度接口实现图片文字识别,并打包成安装包软件

CuterCorley
• 阅读 1804

本文给大家分享的主题是用百度的接口实现图片的文字识别。

1.环境和配置要求

整体是用Python实现,所需要使用的第三方库包括aipPILkeyboardpyinstaller,如未安装,可在CMD中使用pip install Baidu-AIP/pillow/keyboard/pyinstaller指令安装。

百度接口

打开https://cloud.baidu.com/,如未注册请先注册,然后登录点击管理控制台,点击左侧产品服务人工智能文字识别,点击创建应用,输入应用名称如Baidu_OCR,选择用途如学习办公,最后进行简单应用描述,即可点击立即创建。会出现应用列表,包括AppID、API Key、Secret Key等信息,这些稍后会用到。 Python小应用 百度接口实现图片文字识别,并打包成安装包软件 Python小应用 百度接口实现图片文字识别,并打包成安装包软件

2.具体实现步骤

整个程序的大致思路是,在用截图软件获得截图之后,交给百度接口识别,并返回结果,当然,也可以是本地图片识别,我用的是QQ自带截图软件,快捷键CTRL+ALT+A用来打开截图,在选中所截区域后,按Enter键即可保存到粘贴板中,也可用其他截图软件。

①获取截图

keyboard类库是用来监听键盘动作的,所以在有快捷键按下之后,便会有相应动作。并用PIL中的ImageGrab来获取到剪切板中的图片并生成本地图片文件。

#1.截图
keyboard.wait('ctrl+alt+a')
print('开始截图')

keyboard.wait('enter')
print('保存截图')
time.sleep(0.1)

#2.保存图片
image = ImageGrab.grabclipboard()
image.save('img.png')

②调用Baidu aip识别并打印文字

先用注册时生成的应用的AppID、API Key、Secret Key初始化应用,再读取保存到的图片并打印识别的文字。

with open('img.png', 'rb') as fp:
    image = fp.read()
    text_list = client.basicAccurate(image)['words_result']
    for text in text_list:
        print(text['words'])

运行结果如图所示: Python小应用 百度接口实现图片文字识别,并打包成安装包软件 我们还可增加一个无限循环使得一直能截图。

③调用打包程序生成专属识别文字小程序

用pyinstaller库实现小程序的打包,生成.exe文件,这样就能随时识别文字了。 在命令行中用pyinstaller xxx.py来打包生成exe文件,最后在生成的dist文件夹即可找到xxx.exe文件如下:Python小应用 百度接口实现图片文字识别,并打包成安装包软件 最后附上整个源代码:

#引入截图软件,获取文件到本地端,并识别图片文字,最后打包
import keyboard #控制键盘
from PIL import ImageGrab #保存图片
import time
from aip import AipOcr

""" 你的 APPID AK SK """
APP_ID = '17076767'
API_KEY = 'Af3Rj5HALMz5AN8prSgwTH4m'
SECRET_KEY = '******************'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
i = 0

while True:
    #1.截图
    keyboard.wait('ctrl+alt+a')
    print('开始截图')

    keyboard.wait('enter')
    print('保存截图')
    time.sleep(0.1)

    #2.保存图片
    image = ImageGrab.grabclipboard()
    image.save('img{}.png'.format(i))


    """ 调用通用文字识别(高精度版) """

    with open('img{}.png'.format(i), 'rb') as fp:
        image = fp.read()
        text_list = client.basicAccurate(image)['words_result']
        for text in text_list:
            print(text['words'])

    i+=1

本文原文首发来自博客专栏https://blog.csdn.net/cufeecr/category_9497377.html,由本人转发至https://www.helloworld.net/p/D8MU3LcLMCVO,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/101173141查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
5个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
1年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
1年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
1年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
1年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Stella981 Stella981
1年前
Angular material mat
IconIconNamematiconcode_add\_comment_addcommenticon<maticonadd\_comment</maticon_attach\_file_attachfileicon<maticonattach\_file</maticon_attach\
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_34035044 helloworld_34035044
8个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为