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

文字识别OCR报错如下:urllib.error.HTTPError:什么原因?

问题1:文字识别OCR报错如下:urllib.error.HTTPError: HTTP Error 400: Bad Request
python的代码如下:import urllib, sys
import urllib.request
import ssl
import base64
import json

打开文件并读取数据

with open("333.jpg", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read()).decode()

host = 'https://subject2.market.alicloudapi.com'
path = '/educationservice/papercut'
method = 'POST'
appcode = 'aaxxxxxxxxxxxxxxxxx'
querys = ''
bodys = {}
url = host + path

修正字典部分的语法错误

bodys= {"imgList": [encoded_string], "urlList": [""],"rotate": False, "paperType": "question", "templateType": "default"}

post_data = json.dumps(bodys).encode()

request = urllib.request.Request(url,post_data)
request.add_header('Authorization', 'APPCODE ' + appcode)

//根据API的要求,定义相对应的Content-Type

request.add_header('Content-Type', 'application/json; charset=UTF-8')
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
response = urllib.request.urlopen(request, context=ctx)
content = response.read()
if (content):
print(content)
什么原因?
问题2:看不太懂。。。。。。,可以根据这个python代码,给我改改吗? 改哪里就可以了? 其实,就是读取本地的333图片,然后base64编码后,发给你们的api,因为官网上的是python2的代码,我就自己改了改,但是总是改不对,总是报这个错误。 print,也就是为了先看看效果,打出json的就可以了

展开
收起
真的很搞笑 2023-07-11 18:45:01 140 0
6 条回答
写回答
取消 提交回答
  • 问题1的报错是由于请求的参数不正确导致的。具体来说,可能是以下几个原因:

    API地址不正确:请确保host和path的值正确,以匹配您所使用的API服务。

    请求方法不正确:请确保method的值为POST,以确保使用正确的请求方法。

    授权码不正确:请确保appcode的值正确,以确保您有权限访问API服务。

    请求参数不正确:请确保bodys字典中的参数和对应的值正确。根据API文档,确保imgList参数包含正确的base64编码的图片数据。

    请检查以上几个方面,确保代码中的参数和值都正确,以解决报错问题。

    对于问题2,根据您提供的代码,只需要将print(content)改为print(json.loads(content)),即可将返回的JSON字符串转换为Python对象并打印出来。这样您就可以查看API返回的结果了。

    2023-07-21 19:34:52
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    HTTPError 400 Bad Request通常表示客户端发送的请求不符合服务器的预期格式。这可能是由于以下原因:

    请求数据格式错误:请求数据格式不符合服务器要求的格式,例如JSON、XML等。
    请求数据缺失或错误:请求数据中缺少必要的字段或者字段内容错误。
    请求数据大小限制:请求数据大小超出了服务器允许的最大值。
    IP地址限制:客户端IP地址被服务器限制,无法访问。
    其他错误:请求中存在其他错误,导致服务器无法处理请求。
    如果您遇到了这个问题,建议您首先检查一下请求数据是否符合服务器的要求格式,是否存在缺失或错误的字段,以及是否已经添加了必要的HTTP请求头和身份验证信息。如果问题仍然存在,可以尝试使用其他语言版本的代码来实现相同的功能,比如Python、Java等。希望对您有所帮助。

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

    这个错误 "urllib.error.HTTPError" 是由 urllib 库抛出的一个异常,指示发生了 HTTP 请求错误。具体原因可能有多种情况,常见的原因包括:

    1. 请求的 URL 无效或不存在。
    2. 请求的资源受到访问限制,可能需要身份验证或权限才能访问。
    3. 请求过于频繁,触发了防止滥用的限制。
    4. 网络连接问题,无法连接到目标服务器。

    要确定导致该错误的确切原因,您可以采取以下措施进行排查:

    1. 检查请求的 URL 是否正确,并确保它是有效的。
    2. 查看是否需要提供身份验证信息或令牌来访问资源。
    3. 确认是否存在与请求相关的访问限制,并尝试减少请求频率。
    4. 检查网络连接是否正常,确保可以正常访问目标服务器。
    2023-07-11 22:59:35
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    HTTP Error 400: Bad Request是指请求格式错误或者请求参数错误,可能是由于您的OCR请求中包含了错误的参数或者参数格式不正确,导致OCR服务无法正常处理请求。

    具体来说,OCR服务通常需要传递包含图像数据和参数的HTTP请求,如果请求中包含了错误的参数或者参数格式不正确,OCR服务会返回HTTP 400错误。

    针对这个问题,建议您先检查OCR请求中的参数是否正确,包括图像数据、识别语言、OCR算法等。您可以根据OCR服务提供的API文档和示例代码,检查请求参数是否符合要求。另外,还需要注意OCR服务的请求限制和配额,确保请求频率和数量符合要求。

    2023-07-11 21:03:20
    赞同 展开评论 打赏
  • HTTP Error 400: Bad Request 错误表示发出的请求存在问题,无法被服务器正确处理。这个错误通常是由于请求中包含了无效的参数、格式不正确的数据或者缺少必要的信息等导致的。

    对于文字识别OCR报错的具体原因,您可以尝试以下解决方法:

    1. 检查请求参数:确保您的请求中包含了必要的参数,并且参数的格式和值是正确的。请仔细查阅相关文档,确保您正确地配置了文字识别OCR接口所需的参数。

    2. 校验数据格式:检查您提供给OCR接口的图片或文本是否符合要求。例如,确认图片格式是否被支持,或者文本是否满足指定的长度或编码要求。

    3. 验证身份验证和权限:如果文字识别OCR服务需要进行身份验证或授权,请确保您提供了正确的凭据,并具备获取所需的访问权限。

    4. 查看错误消息:除了 HTTP Error 400: Bad Request 的错误消息外,还可能会有更详细的错误描述。请检查完整的错误消息,以找到更多关于特定问题的线索。

    2023-07-11 19:17:02
    赞同 展开评论 打赏
  • 打印response body和response header的X-Ca-Error-Message,里面有错误信息
    你好,参数里面去掉 urlList 就可以了a2f411c02d33f181211ced155dfbd459.png
    这里可以catch一下错误affdafa5d6e8e0d351539cb8ef4e6e15.png
    ,此回答整理自钉群“【官方】阿里云OCR公共云客户交流群”

    2023-07-11 18:54:59
    赞同 展开评论 打赏
滑动查看更多

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

相关电子书

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