您的位置:首页 > 其它

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

2020-01-11 13:27 246 查看

思路框架

  • 2.具体实现步骤

  • 第一次写博客,只为分享一些学习上的心得,与大家共勉。今天给大家分享的主题是用百度的接口实现图片的文字识别。

    1.环境和配置要求

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

    百度接口

    打开百度云,如未注册请先注册,然后登录点击管理控制台,点击左侧产品服务人工智能文字识别,点击创建应用,输入应用名称如“Baidu_OCR”,选择用途如“学习办公”,最后进行简单应用描述,即可点击“立即创建”。会出现应用列表,包括AppID、API Key、Secret Key等信息,这些稍后会用到。

    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识别并打印文字

    先用注册时生成的应用的aipPILkeyboard请求接口,再读取保存到的图片并打印识别的文字。

    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'])

    运行结果如图所示:

    我们还可增加一个无限循环使得一直能截图。

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

    用pyinstaller库实现小程序的打包,生成.exe文件,这样就能随时识别文字了。
    在命令行中用pyinstaller xxx.py来打包生成exe文件,最后在生成的dist文件夹即可找到xxx.exe文件
    最后附上整个源代码:

    #引入截图软件,获取文件到本地端,并识别图片文字,最后打包
    
    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
    • 点赞 4
    • 收藏
    • 分享
    • 文章举报
    cupyter 发布了49 篇原创文章 · 获赞 179 · 访问量 2万+ 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: