开发者社区 > 视觉智能 > 文字识别 > 正文

文字识别ocr中问下报这个错怎么处理哈?

文字识别ocr中问下报这个错怎么处理哈? {"RequestId":"95BD3B26-CC54-5F58-A9CC-2B18E7AA0747","Message":"Specified signature is not matched with our calculation. server string to sign is:POST&%2F&%252F%3D%26AccessKeyId%3DLTAI5tPCW2ZzExpsYteA7SPW%26AccessKeyId%253DLTAI5tPCW2ZzExpsYteA7SPW%2526Action%253DRecognizeIdcard%2526Format%253DJSON%2526SignatureMethod%253DHMAC-SHA1%2526SignatureNonce%253D6a399b7af42e680e45b9255ed407eccc%2526SignatureVersion%253D1.0%2526Timestamp%253D2023-11-13T03%25253A02%25253A29Z%2526Version%253D2021-07-07%3D%26Action%3DRecognizeIdcard%26Format%3DJSON%26POST%3D%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D6a399b7af42e680e45b9255ed407eccc%26SignatureVersion%3D1.0%26Timestamp%3D2023-11-13T03%253A02%253A29Z%26Version%3D2021-07-07","Recommend":"https://api.aliyun.com/troubleshoot?q=SignatureDoesNotMatch&product=ocr-api&requestId=95BD3B26-CC54-5F58-A9CC-2B18E7AA0747","HostId":"ocr-api.cn-hangzhou.aliyuncs.com","Code":"SignatureDoesNotMatch"} 。SDK里面封装好的,我现在用的是API 调用的方式,签名要自己接和加签

展开
收起
小小鹿鹿鹿 2023-11-20 21:40:04 54 0
3 条回答
写回答
取消 提交回答
  • 这个错误提示是因为签名不匹配。你需要自己计算签名并添加到请求中。具体步骤如下:

    1. 获取阿里云AccessKey ID和AccessKey Secret。
    2. 按照阿里云文档中的签名算法,将请求参数按照键名排序后拼接成字符串。
    3. 使用HMAC-SHA1算法对上一步得到的字符串进行加密,得到签名。
    4. 将签名添加到请求参数中,重新发起请求。

    以下是一个Python示例代码:

    import hashlib
    import hmac
    import base64
    from urllib import parse
    import requests
    
    def sign(access_key_id, access_key_secret, parameters):
        sorted_parameters = sorted(parameters.items(), key=lambda x: x[0])
        query_string = parse.urlencode(sorted_parameters)
        string_to_sign = "POST&%2F&" + query_string
        signature = base64.b64encode(hmac.new((access_key_secret + "&").encode("utf-8"), string_to_sign.encode("utf-8"), hashlib.sha1).digest())
        return signature.decode("utf-8")
    
    def recognize_idcard(image_path, access_key_id, access_key_secret):
        endpoint = "https://ocr-api.cn-hangzhou.aliyuncs.com/"
        request_parameters = {
            "Action": "RecognizeIdcard",
            "Format": "JSON",
            "Version": "2021-07-07",
            "SignatureMethod": "HMAC-SHA1",
            "Timestamp": "2023-11-13T03:02:29Z",
            "AccessKeyId": access_key_id,
        }
        image_data = open(image_path, "rb").read()
        request_parameters["Signature"] = sign(access_key_id, access_key_secret, request_parameters)
        response = requests.post(endpoint, data=request_parameters, files={"image": image_data})
        return response.json()
    
    # 使用你的AccessKey ID和AccessKey Secret替换下面的值
    access_key_id = "your_access_key_id"
    access_key_secret = "your_access_key_secret"
    image_path = "path/to/your/image.jpg"
    
    result = recognize_idcard(image_path, access_key_id, access_key_secret)
    print(result)
    

    请将your_access_key_idyour_access_key_secretpath/to/your/image.jpg替换为你的实际值。

    2023-11-29 14:59:24
    赞同 展开评论 打赏
  • 签名不匹配 可以直接用sdk 请求 https://next.api.aliyun.com/api/ocr-api/2021-07-07/RecognizeIdcard?sdkStyle=dara 。可以参考这个签名方式: https://help.aliyun.com/document_detail/469176.html?spm=a2c4g.442243.0.0.627f6797cwX1Hz 。此回答来自钉群【官方】阿里云OCR公共云客户交流群。

    2023-11-21 23:56:38
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个问题可能是由于签名不匹配而导致的错误。这是因为每次API请求都需要经过签名验证才能成功执行,并且签名必须符合标准的要求。
    针对这种情况,请仔细检查您的签名生成代码是否有误,并且确保使用的签名算法、Secret Access Key和其他参数都正确无误。如果您不确定如何计算签名,请参考阿里巴巴提供的SDK文档或者相关教程,了解正确的签名生成方法。
    此外,为了提高签名的安全性和可靠性,建议不要在代码中硬编码Secret Access Key,请务必将其存储在一个安全的地方,例如环境变量或者密钥管理系统当中,以避免泄露敏感信息。

    2023-11-21 21:52:50
    赞同 展开评论 打赏

文字识别技术可以灵活应用于证件文字识别、发票文字识别、文档识别与整理等行业场景,满足认证、鉴权、票据流转审核等业务需求。

相关电子书

更多
阿里云智能-印刷文字识别OCR-产品介绍 立即下载
阿里巴巴读光OCR 立即下载
印刷文字识别算法设计与在线服务 立即下载