使用百度人工智能识别表格

现在免费的文字识别软件比较多,例如天若文字识别,QQ文字识别等,但是免费识别表格的软件却并不多。QQ文字识别可以识别出表格,但是效果不尽如人意。百度人工智能的文字识别模块每天有50000次的免费试用机会,据我的经验,识别效果也好于QQ,因此,申请一个百度人工智能接口,用python编个表格识别程序是不错的选择。以下例程中,为避免私密信息泄露,在程序同一目录下创建了一个baidu_keys.py文件,保存了我的百度人工智能客户端连接秘钥。

from aip import AipOcr  #导入AipOcr模块,用于做文字识别
import time #时间模块
import requests #用于下载识别结果
import io #用于创建写入剪贴板中的图像数据的字节数组
from PIL import ImageGrab #用于获取剪贴板上的图像数据
import keyboard #用于注册热键
import win32ui, win32con #用于弹出保存excel文件对话框
import sys
from baidu_keys import * #保存百度人工智能客户端注册信息

# APP_ID = baidu_keys.APP_ID
# API_KEY = baidu_keys.API_KEY
# SECRET_KEY = baidu_keys.SECRET_KEY
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

def table_ocr():
    print('开始识别...')
    image = ImageGrab.grabclipboard()
    if image != None:
        img_bytes = io.BytesIO()
        image.save(img_bytes, format='png')
        table = client.tableRecognitionAsync(img_bytes.getvalue())
        request_id = table['result'][0]['request_id']
        #判断识别是否完成,直到完成才根据请求ID获取Excel下载路径
        result = client.getTableRecognitionResult(request_id)  #通过ID获取识别结果
        while result['result']['ret_msg'] != '已完成': #如果状态是“已完成”,才能获取下载地址
            time.sleep(2) #暂停2秒再刷新
            result = client.getTableRecognitionResult(request_id) #持续刷新,直到满足条件
        download_path = result['result']['result_data']

        #下载Excel文件
        excel = requests.get(download_path) 
        #指定识别结果保存位置及文件名
        win32ui.MessageBox('请指定识别文件保存位置及文件名...') 
        flags = win32con.OFN_OVERWRITEPROMPT
        dlg = win32ui.CreateFileDialog(0, 'xls', '识别结果', flags, "Excel Files (*.xls)|*.xls;*.xlsx||", None) #0表示保存文件对话框;1表示打开文件对话框
        dlg.DoModal()
        file = dlg.GetPathName()

        #打开文件并写入内容
        with open(file, 'wb')  as excel_file:
            excel_file.write(excel.content) 
    else:
        print('系统剪贴板中没有图形数据。')
    print('识别完成...')


if __name__ == '__main__':
    print('截图复制到剪贴板后按shift+esc识别表格。\n按cmd+esc退出程序。')
    keyboard.add_hotkey('shift+esc', table_ocr)
    keyboard.wait('cmd+esc')
    sys.exit()

你可能感兴趣的:(python,百度,人工智能,python,图像识别)