分享

Python调用人工智能API,告别开发难题!

 长沙7喜 2018-04-11

1、背景

搜狗发布了基于python的人工智能 api,名片ocr、包括身份证ocr、签名生成、文本翻译等API,不过不同api应答包的主体结构竟然不一致,所以实施也只做了简单的结构化。

2、Python实现代码

直接放Python代码吧,github上也有: https://github.com/jdstkxx/PySougouAI

1、搜狗人工智能-例子.py

Python调用人工智能API,告别开发难题!

Python调用人工智能API,告别开发难题!

2、 SougouAPI.py

# -*- coding: utf-8 -*-

# 搜狗API字典

SougouAPI={

#基本文本分析API

"ocr": {

'APINAME':'图像识别', #API中文简称

'APIDESC': '识别图像中的文字', #API描述

'APIURL': 'http://api.ai.sogou.com/pub/ocr' #API请求URL

},

"idcard":{

'APINAME':'身份证识别', #API中文简称

'APIDESC': '身份证识别', #API描述

'APIURL': 'http://api.ai.sogou.com/pub/ocr/idcard' #API请求URL

},

}

3、 SougouAPIMsg.py

1、应用相关前缀 {AuthPrefix}

{AuthPrefix}=sac-auth-v1/{accessKey}/{secondsSinceEpoch}/{expirationPeriodInSeconds}

2、请求相关数据 {Data}

{Data}={REQUEST_METHOD} + " " + {HOST} + " " + {URI} + " " + {SORTED_QUERY_STRING}

其中,REQUEST_METHOD 为请求使用的 HTTP 方法, 如: GET|POST|PUT|DELETE

HOST 为服务使用的域名, 如: api.ai.sogou.com

URI 为请求的服务路径, 如: /speech/asr

SORTED_QUERY_STRING 把 URL 中的 Query String(即 URL 中 “?” 后面的 “k1=v1&k2=v2” 字符串)进行编码后的结果。

编码方法为:

将 Query String 根据 & 拆开成若干项,对每一项转换为 UriEncode(key) + "=" + UriEncode(value) 的形式, 其中 value 可以是空字符串

将上面转换后的所有字符串按照字典顺序排序。

将排序后的字符串按顺序用 & 符号链接起来。

3、生成签名 {Signature}

{Signature}=HMAC-SHA256-BASE64({secretKey}, {AuthPrefix} + " " + {Data})

4、生成认证信息, 通过 Authorization header 传递

Authorization: {AuthPrefix}/{Signature}

Example:

1应用 accessKey/secretKey 分别为 bTkALtTB9x6GAxmFi9wetAGH / PMROwlieALT36qfdGClVz2iH4Sv8xZxe

POST 方式访问 http://api.ai.sogou.com/speech/asr 接口

GET 参数为 type=gbk&idx=1&starttime=1491810516

当前系统时间为 1491810516

2计算过程

{AuthPrefix}="sac-auth-v1/bTkALtTB9x6GAxmFi9wetAGH/1491810516/3600"

{Data}="POST api.ai.sogou.com /speech/asr idx=1&starttime=1491810516&type=gbk"

{Signature}=HMAC-SHA256-BASE64("PMROwlieALT36qfdGClVz2iH4Sv8xZxe", {AuthPrefix} + " " + {Data})="vuVEkzcnUeFv8FxeWS50c7S0HaYH1QKgtIV5xrxDY/s="

3最终生成的 header 为

Authorization: sac-auth-v1/bTkALtTB9x6GAxmFi9wetAGH/1491810516/3600/vuVEkzcnUeFv8FxeWS50c7S0HaYH1QKgtIV5xrxDY/s=

Python调用人工智能API,告别开发难题!

Python调用人工智能API,告别开发难题!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多