You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

curl调用OpenOCR API正常,Python requests调用失败,如何用data参数提交字典?

解决Python调用OpenOCR API的问题

你的问题出在两个关键细节上:URL路径不对,以及请求体结构不符合API要求,咱们一步步来修正。

首先看你给出的curl命令,请求的是http://35.154.148.131:9292/ocr这个接口路径,但你的Python代码里只写了http://35.154.148.131:9292,少了核心的/ocr后缀,这会导致请求打到API的默认首页,也就是你看到的那个提示页面。

其次,curl命令里是直接把{"img_url":"...","engine":"tesseract"}作为JSON请求体发送的,但你的Python代码把这个字典包在了json_payload里,相当于给请求体多套了一层不必要的结构,API根本识别不了这个格式。

下面是两种正确的写法:

方法一:用requests的json参数(最简洁)

这种方式下,requests会自动帮你设置Content-Type: application/json请求头,并且把字典转成标准的JSON字符串:

import requests
url = 'http://35.154.148.131:9292/ocr'
data = {"img_url":"http://tleyden-misc.s3.amazonaws.com/blog_images/ocr_test.png","engine":"tesseract"}
r = requests.post(url, json=data)
# 打印响应结果验证
print(r.text)

方法二:手动处理JSON和请求头

如果想自己控制请求体编码和头信息,可以这样写:

import requests
import json
url = 'http://35.154.148.131:9292/ocr'
data = {"img_url":"http://tleyden-misc.s3.amazonaws.com/blog_images/ocr_test.png","engine":"tesseract"}
# 将字典转换为JSON字符串
json_data = json.dumps(data)
# 设置正确的Content-Type请求头
headers = {"Content-Type": "application/json"}
r = requests.post(url, data=json_data, headers=headers)
print(r.text)

这两种写法都和你原来的curl命令逻辑完全一致,应该能正常调用OpenOCR API了。

内容的提问来源于stack exchange,提问作者shantanuo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:41:45