Python 腾讯OCR

import base64
import hashlib
import time
import uuid
from urllib import parse

import requests

APP_ID = "2115424313131"
APP_KEY = "IB1oUQtVFWF91YZ"
OCR = 'https://api.ai.qq.com/fcgi-bin/ocr/ocr_generalocr'


def __get_sign(params):
    # 参数升序
    param_list = list(params.keys())
    param_list.sort()
    param_str = ''
    for param in param_list:
        # 空值不参与签名
        value = params[param]
        if value:
            if param_str:
                param_str += '&'
            #    对 value进行编码
            parse_quote = list(parse.quote_plus(str(value)))
            i = 0
            for a in parse_quote:
                if a == '%':
                    parse_quote[i + 1] = str(parse_quote[i + 1]).upper()
                    parse_quote[i + 2] = str(parse_quote[i + 2]).upper()
                i += 1
            param_str += str(param) + '=' + (''.join(parse_quote))

    key_ = ("%s&app_key=%s" % (param_str, APP_KEY)).encode(encoding='utf-8')
    return hashlib.md5(key_).hexdigest().upper()


def getWork(image_path):
    params = {
        'app_id': APP_ID,
        'time_stamp': int(time.time()),
        'nonce_str': str(uuid.uuid4()).replace('-', '')[0:31]
    }
    with open(image_path, 'rb') as f:
        params['image'] = str(base64.b64encode(f.read()), 'utf-8').replace(r'\r\n', '')
    params['sign'] = __get_sign(params)

    result = requests.post(OCR, headers={"Content-Type": "application/x-www-form-urlencoded"}, data=params).json()
    print(result)
    if result['ret'] == 0:
        item_list = []
        for item in result['data']['item_list']:
            print(item['itemstring'])
            item_list.append(item['itemstring'])
        return item_list
    else:
        print('系统忙:', result['msg'])
        return result['msg']


if __name__ == '__main__':
    getWork()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值