介绍AI Doc在调用OpenAPI时候,查找相关字段以及调用OpenAPI的步骤。
步骤一:准备
在AI Doc的OpenAPI调用过程中,可能涉及以下字段需要填写。具体查找步骤如下。如果您已知模板ID和文件夹ID可以跳过相应章节。
获取模板ID
登录AI Doc官网,进入模板管理页面,可以看到模板ID字段。
获取文档夹ID
登录AI Doc官网,进入文档解析页面,选择需要查看的文件夹,右侧可以看到对应的文件夹ID。
步骤二:创建用于OpenAPI访问的AK和SK
您可以选择使用主账号或者子账号下的AK和SK进行OpenAPI操作,这里以子账号的AK、SK为例。
登录阿里云的控制台,进行创建用户并勾选OpenAPI调用访问。
为该用户授予AliyunEnergyFullAccess权限。
复制AccessKey ID和AccessKey Secret,以备后续代码调用时候使用。
开通 OpenAPI 调用访问后,请及时保存 AccessKey 信息,页面关闭后将无法再次获取信息。
步骤三:使用SDK调用OpenAPI
您可以点击链接前往阿里云OpenAPI门户,搜索“AI文档处理”或者其他OpenAPI,查看相关OpenAPI的调用要求,进行在线调用调试或者下载SDK示例进行本地调试。您也可以前往OpenAPI文档中AI文档处理寻找对应的接口文档进行调试。
AI Doc解析文档主要分为两步:
第一步:提交文档解析作业。
第二步:根据第一步返回的jobId获取文档解析结果。
本文以Java代码为例,进行实际操作。
引入pom
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>energyexpertexternal20220923</artifactId>
<version>2.1.1</version>
</dependency>
提交文档解析作业调用示例
在环境变量中配置ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET作为鉴权依据;然后再修改代码或者在环境变量中配置FILE_URL、TEMPLATE_ID、FOLDER_ID,其中文件地址需要是公网可达,TEMPLATE_ID模板ID参见获取模板ID、FOLDER_ID文件夹ID参见获取文档夹ID。参考SubmitDocumentAnalyzeJob - 提交文档解析作业,Java调用代码如下。
package com.aliyun.sample;
import com.aliyun.energyexpertexternal20220923.Client;
import com.aliyun.energyexpertexternal20220923.models.SubmitDocumentAnalyzeJobRequest;
import com.aliyun.energyexpertexternal20220923.models.SubmitDocumentAnalyzeJobResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
public class SampleStep1 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化账号Client</p>
*
* @return Client
* @throws Exception
*/
public static Client createClient() throws Exception {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
Config config = new Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。也就是上文中的AccessKey ID (AK)
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。也就是上文中的AccessKey Secret(SK)
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint 请参考 https://api.aliyun.com/product/energyExpertExternal
config.endpoint = "energyexpertexternal.cn-hangzhou.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
Client client = SampleStep1.createClient();
SubmitDocumentAnalyzeJobRequest submitDocumentAnalyzeJobRequest = new SubmitDocumentAnalyzeJobRequest();
fillNecessaryFieldForRequest(submitDocumentAnalyzeJobRequest);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
java.util.Map<String, String> headers = new java.util.HashMap<>();
try {
SubmitDocumentAnalyzeJobResponse resp =
client.submitDocumentAnalyzeJobWithOptions(submitDocumentAnalyzeJobRequest, headers, runtime);
com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
System.out.println("提交文档解析作业成功,jobId=" + resp.body.data.getJobId());
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
private static void fillNecessaryFieldForRequest(SubmitDocumentAnalyzeJobRequest submitDocumentAnalyzeJobRequest) {
String fileUrl = System.getenv("FILE_URL");
//请根据具体情况填写您的文件名称
String fileName = "阿里巴巴集团发布《2023环境、社会和治理(ESG)报告 》.pdf";
//模板ID的获取方法参见本文"获取模板ID"
String templateId = System.getenv("TEMPLATE_ID");
//文件夹ID的获取参见本文"获取文件夹ID"
String folderId = System.getenv("FOLDER_ID");
submitDocumentAnalyzeJobRequest.setFileUrl(fileUrl);
submitDocumentAnalyzeJobRequest.setFileName(fileName);
submitDocumentAnalyzeJobRequest.setTemplateId(templateId);
}
}
获取文档解析结果调用示例
在环境变量中配置ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET作为鉴权依据;然后再修改代码或者在环境变量中配置JOB_ID,JOB_ID在上一步中的返回结果中获取。参考GetDocumentAnalyzeResult - 获取文档解析结果,Java调用代码如下。
package com.aliyun.sample;
import com.aliyun.energyexpertexternal20220923.models.GetDocumentAnalyzeResultRequest;
import com.aliyun.energyexpertexternal20220923.models.GetDocumentAnalyzeResultResponse;
import com.aliyun.tea.*;
public class SampleStep2 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化账号Client</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.energyexpertexternal20220923.Client createClient() throws Exception {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint 请参考 https://api.aliyun.com/product/energyExpertExternal
config.endpoint = "energyexpertexternal.cn-hangzhou.aliyuncs.com";
return new com.aliyun.energyexpertexternal20220923.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.energyexpertexternal20220923.Client client = SampleStep1.createClient();
com.aliyun.energyexpertexternal20220923.models.GetDocumentAnalyzeResultRequest getDocumentAnalyzeResultRequest = new com.aliyun.energyexpertexternal20220923.models.GetDocumentAnalyzeResultRequest();
fillNecessaryFieldForGetResultRequest(getDocumentAnalyzeResultRequest);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
java.util.Map<String, String> headers = new java.util.HashMap<>();
try {
System.out.println("start request");
// 复制代码运行请自行打印 API 的返回值
GetDocumentAnalyzeResultResponse resultResp = client.getDocumentAnalyzeResultWithOptions(getDocumentAnalyzeResultRequest, headers, runtime);
com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resultResp));
System.out.println("success:data 为空表示未完成解析");
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
private static void fillNecessaryFieldForGetResultRequest(GetDocumentAnalyzeResultRequest getDocumentAnalyzeResultRequest) {
String jobId = System.getenv("JOB_ID");
getDocumentAnalyzeResultRequest.setJobId(jobId);
}
}