Python3调用京东AI,进行文字识别

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import time
import requests
import hashlib
from dataclasses import dataclass


def get_file_content(image_file):
    """生成原始图片的base64编码数据,得到image参数"""
    if not isinstance(image_file, str):
        return None
    if not os.path.isfile(image_file):
        print ('图片文件有误,请传入正确的文件路径')
        return None
    with open(image_file, 'rb') as fp:
        return fp.read()

def get_param_sign_str(sign_str):
    """根据规则拼接字符串,并对其进行MD5运算,得到sign"""
    md5 = hashlib.md5()
    md5.update(sign_str.encode())
    return md5.hexdigest()

@dataclass
class JDAPIMsg(object):
    appkey     : str
    secretkey  : str
    apiurl     : str
    image_file : str

    def __post_init__(self):
        self.image     = get_file_content(self.image_file)
        self.timestamp = str(int(time.time()*1000))
        self.sign      = get_param_sign_str(self.secretkey + self.timestamp)
        self.params    = {
            'appkey':    self.appkey,
            'timestamp': self.timestamp,
            'sign':      self.sign, }

    def get_ocr_result(self):
        response    = requests.post(self.apiurl,data = self.image,params = self.params)
        try:
            data    = response.json()
            texts   = data['result']['resultData']
            words   = [text['text'] for text in texts]
            return '\n'.join(words)
        except:
            print ('获取结果失败,请检查各参数是否配置正确。')
            return ''

if __name__ == '__main__':
    appkey     = 'c******************************3'     #需要自己申请
    secretkey  = 'e******************************0'     #需要自己申请
    apiurl     = 'https://aiapi.jd.com/jdai/ocr_universal'
    image_file = 'F:\\20180829193608871.jpg'
    
    Jd = JDAPIMsg(appkey, secretkey, apiurl, image_file)
    result = Jd.get_ocr_result()
    print(result)

猜你喜欢

转载自blog.csdn.net/qq523176585/article/details/88876235