资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

拍照解题

接口描述

基于多模态大模型能力,实现K12阶段的全学科作业、试卷解题。支持用户拍照或上传图片,可输出对应每道题的答案、思路分析、过程解析等;支持结果原图渲染,图片清晰展示题目区域和对应答案解析,便于快速定位题目及其解答过程。
该接口处于公测阶段,欢迎体验!个人实名可获取免费测试资源200次,企业实名可获取免费测试资源500次。

在线调试

您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

提交请求接口

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/stream/2.0/ocr/v1/solve

URL参数:

参数 值
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取”

Header如下:

参数 值
Content-Type application/json

Body中放置请求参数,参数详情如下:

参数 是否必选 类型 可选值范围 说明
image 和 url/pdf_file 三选一 string - 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过10M,最短边至少15px,最长边最大8192px,支持jpg/jpeg/png/bmp格式。
优先级:image > url > pdf_file,当image字段存在时,url、pdf_file字段失效
url 和 image/pdf_file 三选一 string - 图片完整url,url长度不超过1024字节,url对应的图片base64编码后大小不超过10M,最短边至少15px,最长边最大8192px,支持jpg/jpeg/png/bmp格式。
优先级:image > url > pdf_file,当image字段存在时,url字段失效。
请注意关闭URL防盗链
pdf_file 和 image/url 三选一 string - PDF文件,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过10M,最短边至少15px,最长边最大8192px。
优先级:image > url > pdf_file,当image、url字段存在时,pdf_file字段失效
pdf_file_num 否 string - 需要识别的PDF文件的对应页码,当 pdf_file 参数有效时,识别传入页码的对应页面内容,若不传入,则默认识别第 1 页
disable_preprocess 否 bool true/false 是否开启图片矫正与增强。可选值包括:
true:开启
false(默认值):不开启
stream_switch 否 bool true/false 是否以流式接口的形式返回数据。可选值包括:
true:是,按SSE协议逐块返回内容,以一条is_end:"true"消息结束;
false(默认值):否,当所有内容生成完毕后一起返回

请求代码示例

# 1. 获取access_token,有效期30天
curl -X POST 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的API_Key&client_secret=你的Secret_Key' -H 'Content-Type: application/json'

# 2. 使用access_token调用接口
curl --location --request POST 'https://aip.baidubce.com/stream/2.0/ocr/v1/solve?access_token=第一步中返回的 access_token' \
--header 'Content-Type: application/json' \
--data-raw '{"url":"https://baidu-ai.bj.bcebos.com/ocr/doc_analysis.png","disable_preprocess":false,"stream_switch":false}'
import requests
import json

API_KEY = "xxxxx"
SECRET_KEY = "xxxxx"

def main():
        
    url = "https://aip.baidubce.com/stream/2.0/ocr/v1/solve?access_token=" + get_access_token()
    
    payload = json.dumps({
        "url": "https://baidu-ai.bj.bcebos.com/ocr/doc_analysis.png",
        "disable_preprocess": False,
        "stream_switch": False
    }, ensure_ascii=False)
    headers = {
        'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload.encode("utf-8"))
    
    response.encoding = "utf-8"
    print(response.text)
    

def get_access_token():
    """
    使用 AK,SK 生成鉴权签名(Access Token)
    :return: access_token,或是None(如果错误)
    """
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
    return str(requests.post(url, params=params).json().get("access_token"))

if __name__ == '__main__':
    main()
package baidu.com;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

import java.io.*;


/**
 * 需要添加依赖
 * <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
 * <dependency>
 *     <groupId>com.squareup.okhttp3</groupId>
 *     <artifactId>okhttp</artifactId>
 *     <version>4.12.0</version>
 * </dependency>
 */

class Sample {
    public static final String API_KEY = "xxxxx";
    public static final String SECRET_KEY = "xxxxx";

    public static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().readTimeout(300, TimeUnit.SECONDS).build();

    public static void main(String []args) throws IOException{
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, "{\"url\":\"https://baidu-ai.bj.bcebos.com/ocr/doc_analysis.png\",\"disable_preprocess\":false,\"stream_switch\":false}");
        Request request = new Request.Builder()
            .url("https://aip.baidubce.com/stream/2.0/ocr/v1/solve?access_token=" + getAccessToken())
            .method("POST", body)
            .addHeader("Content-Type", "application/json")
            .build();
        Response response = HTTP_CLIENT.newCall(request).execute();
        System.out.println(response.body().string());

    }
    
    
    /**
     * 从用户的AK,SK生成鉴权签名(Access Token)
     *
     * @return 鉴权签名(Access Token)
     * @throws I

返回说明

返回参数

字段 类型 说明
log_id uint64 唯一的log id,用于问题定位
error_code int 错误码
error_msg string 错误描述信息
result dict 返回的结果列表
+data_block list 整合result字符串
++is_end bool true:尾包(结束信号)
false:中间包
++index int 包序号:从0开始(0,1,2,3……)
++answer_content string 各流式包的单题的答案与解析
+content string 整合的完整单题的答案与解析;
仅非流式场景存在
+enhance_process bool 图片矫正是否成功,成功时返回true;
仅在传入参数disable_preprocess为true时返回,流式场景仅在首包返回
+enhance_url string 矫正后的图片url;
仅在传入参数disable_preprocess为true时返回,流式场景仅在首包返回

输出示例

{
  "log_id": 1234567890123456789,
  "error_code": 0,
  "error_msg": "",
  "result": {
    "data_block": [
      {
        "is_end": false,
        "index": 0,
        "answer_content": "【考点分析】:"
      }
    ]
  }
}
{
  "log_id": 1234567890123456789,
  "error_code": 0,
  "error_msg": "",
  "result": {
    "data_block": [
      {
        "is_end": false,
        "index": 0,
        "answer_content": "【考点分析】:本题考查乘法分配律的逆运用,"
      },
      {
        "is_end": true,
        "index": 1,
        "answer_content": "属于整数四则混合运算中的简便计算考点。"
      }
    ],
    "content": "【考点分析】:本题考查乘法分配律的逆运用,属于整数四则混合运算中的简便计算考点。"
  }
}
上一篇
试卷切题与识别(多模态)
下一篇
通用卡证票据识别