表格智能解析接口可以進行表格抽取和理解,從pdf或圖片格式的表格文檔中提取出表格樣式、表格內容、文本KV、表格KV等信息。本文介紹了表格智能解析API的調用方式,調用前,請先閱讀API使用指南。
調用方式
表格智能解析接口為異步接口,需要先調用表格智能解析異步提交服務SubmitTableUnderstandingJob或SubmitTableUnderstandingJobAdvance接口進行異步任務提交,然后調用表格智能解析結果查詢服務GetTableUnderstandingResult接口進行結果輪詢。
建議每10秒輪詢一次,最多輪詢120分鐘,如果120分鐘還未查詢到處理完成結果,則視為處理超時。
當異步任務處理提交后,用戶可以在處理結束后的24小時之內查詢處理結果,超過24小時后將無法查詢到處理結果。
免費額度為100頁,用完即止。若您的免費額度或資源包消耗完畢,系統將默認采用按量付費的后付費計費方式。
首次解析超過100頁的文檔,解析成功后,系統會自動進入后付費計費模式,產生后付費賬單。
支持的文檔格式:pdf和圖片,圖片支持jpg、jpeg、png、bmp、gif。
步驟一:調用表格智能解析異步提交服務SubmitTableUnderstandingJob接口
異步提交服務支持本地文件和url文件兩種方式:
url文件上傳的異步提交服務接口為:SubmitTableUnderstandingJob接口。
本地文件上傳的異步提交服務接口為:SubmitTableUnderstandingJobAdvance接口。
請求參數
名稱 | 類型 | 必填 | 描述 | 示例值 |
FileUrl | string | 是 | 以url文件方式上傳調用接口時使用。 單個文檔(支持1000頁以內、100 MB以內的pdf文檔,支持20 MB以內的單張圖片)。 | https://example.com/example.pdf |
FileUrlObject | stream | 是 | 以本地文件方式上傳調用接口時使用。 單個文檔(支持1000頁以內、100 MB以內的pdf文檔,支持20 MB以內的單張圖片)。 | 本地文件生成的FileInputStream |
FileName | string | 否 | 文件名,需帶文件類型后綴。與fileNameExtension二選一。 | example.pdf |
FileNameExtension | string | 否 | 文件類型,與fileName二選一。支持類型:pdf、jpg、jpeg、png、bmp、gif。 |
返回參數
名稱 | 類型 | 描述 | 示例值 |
RequestId | string | 請求唯一ID。 | 43A29C77-405E-4CC0-BC55-EE694AD0**** |
Data | object | 返回數據。 | {"Id": "docmind-20220712-b15f****"} |
id | string | 業務訂單號,用于后續查詢接口進行查詢的唯一標識。 | docmind-20220712-b15f**** |
Code | string | 狀態碼。 | 200 |
Message | string | 詳細信息。 | Message |
使用示例
本接口支持本地文件上傳和url文件上傳這兩種調用方式。
本地文件上傳:以Java SDK為例,本地文檔上傳調用方式的請求示例代碼如下,調用表格智能解析異步提交服務SubmitTableUnderstandingJobAdvance接口,通過fileUrlObject參數實現本地文檔上傳。
說明獲取并使用AccessKey信息的方式,可參考SDK概述中不同語言的SDK使用指南。
import com.aliyun.docmind_api20220711.models.*; import com.aliyun.teaopenapi.models.Config; import com.aliyun.docmind_api20220711.Client; import com.aliyun.teautil.models.RuntimeOptions; import java.io.File; import java.io.FileInputStream; public static void main(String[] args) throws Exception { submit(); } public static void submit() throws Exception { // 使用默認憑證初始化Credentials Client。 com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(); Config config = new Config() // 通過credentials獲取配置中的AccessKey ID .setAccessKeyId(credentialClient.getAccessKeyId()) // 通過credentials獲取配置中的AccessKey Secret .setAccessKeySecret(credentialClient.getAccessKeySecret()); // 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com"; Client client = new Client(config); // 創建RuntimeObject實例并設置運行參數 RuntimeOptions runtime = new RuntimeOptions(); SubmitTableUnderstandingJobAdvanceRequest advanceRequest = new SubmitTableUnderstandingJobAdvanceRequest(); File file = new File("D:\\example.pdf"); advanceRequest.fileUrlObject = new FileInputStream(file); advanceRequest.fileName = "example.pdf"; // 4 發起請求并處理應答或異常。 SubmitTableUnderstandingJobResponse response = client.submitTableUnderstandingJobAdvance(advanceRequest, runtime); System.out.println(JSON.toJSON(response.getBody())); }
const Client = require('@alicloud/docmind-api20220711'); const Credential = require('@alicloud/credentials'); const Util = require('@alicloud/tea-util'); const fs = require('fs'); const getResult = async () => { // 使用默認憑證初始化Credentials Client const cred = new Credential.default(); const client = new Client.default({ // 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com endpoint: 'docmind-api.cn-hangzhou.aliyuncs.com', // 通過credentials獲取配置中的AccessKey ID accessKeyId: cred.credential.accessKeyId, // 通過credentials獲取配置中的AccessKey Secret accessKeySecret: cred.credential.accessKeySecret, type: 'access_key', regionId: 'cn-hangzhou', }); const advanceRequest = new Client.SubmitTableUnderstandingJobAdvanceRequest(); const file = fs.createReadStream('./example.pdf'); advanceRequest.fileUrlObject = file; advanceRequest.fileName = 'example.pdf'; const runtimeObject = new Util.RuntimeOptions({}); const response = await client.submitTableUnderstandingJobAdvance(advanceRequest, runtimeObject); return response.body; };
from alibabacloud_docmind_api20220711.client import Client as docmind_api20220711Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_docmind_api20220711 import models as docmind_api20220711_models from alibabacloud_tea_util.client import Client as UtilClient from alibabacloud_tea_util import models as util_models from alibabacloud_credentials.client import Client as CredClient if __name__ == '__main__': cred=CredClient() config = open_api_models.Config( # 通過credentials獲取配置中的AccessKey ID access_key_id=cred.get_credential().get_access_key_id(), # 通過credentials獲取配置中的AccessKey Secret access_key_secret=cred.get_credential().get_access_key_secret() ) # 訪問的域名 config.endpoint = f'docmind-api.cn-hangzhou.aliyuncs.com' client = docmind_api20220711Client(config) request = docmind_api20220711_models.SubmitTableUnderstandingJobAdvanceRequest( # file_url_object : 本地文件流 file_url_object=open("./example.pdf", "rb"), # file_name :文件名稱。名稱必須包含文件類型 file_name='123.pdf', # file_name_extension : 文件后綴格式。與文件名二選一 # file_name_extension='pdf' ) runtime = util_models.RuntimeOptions() try: # 復制代碼運行請自行打印 API 的返回值 response = client.submit_table_understanding_job_advance(request, runtime) # API返回值格式層級為 body -> data -> 具體屬性。可根據業務需要打印相應的結果。如下示例為打印返回的業務id格式 # 獲取屬性值均以小寫開頭, print(response.body) except Exception as error: # 如有需要,請打印 error UtilClient.assert_as_string(error.message)
import ( "fmt" "os" openClient "github.com/alibabacloud-go/darabonba-openapi/v2/client" "github.com/alibabacloud-go/docmind-api-20220711/client" "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/aliyun/credentials-go/credentials" ) func submit(){ // 使用默認憑證初始化Credentials Client。 credential, err := credentials.NewCredential(nil) // 通過credentials獲取配置中的AccessKey ID accessKeyId, err := credential.GetAccessKeyId() // 通過credentials獲取配置中的AccessKey Secret accessKeySecret, err := credential.GetAccessKeySecret() // 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com var endpoint string = "docmind-api.cn-hangzhou.aliyuncs.com" config := openClient.Config{AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret, Endpoint: &endpoint} // 初始化client cli, err := client.NewClient(&config) if err != nil { panic(err) } // 上傳本地文檔調用接口 filename := "D:\\example.pdf" f, err := os.Open(filename) if err != nil { panic(err) } // 初始化接口request request := client.SubmitTableUnderstandingJobAdvanceRequest{ FileName: &filename, FileUrlObject: f, } // 創建RuntimeObject實例并設置運行參數 options := service.RuntimeOptions{} response, err := cli.SubmitTableUnderstandingJobAdvance(&request, &options) if err != nil { panic(err) } // 打印結果 fmt.Println(response.Body.String()) }
using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Tea; using Tea.Utils; public static void SubmitFile() { // 使用默認憑證初始化Credentials Client。 var akCredential = new Aliyun.Credentials.Client(null); AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { // 通過credentials獲取配置中的AccessKey Secret AccessKeyId = akCredential.GetAccessKeyId(), // 通過credentials獲取配置中的AccessKey Secret AccessKeySecret = akCredential.GetAccessKeySecret(), }; // 訪問的域名 config.Endpoint = "docmind-api.cn-hangzhou.aliyuncs.com"; //需要安裝額外的依賴庫--> AlibabaCloud.DarabonbaStream AlibabaCloud.SDK.Docmind_api20220711.Client client = new AlibabaCloud.SDK.Docmind_api20220711.Client(config); Stream bodySyream = AlibabaCloud.DarabonbaStream.StreamUtil.ReadFromFilePath("<YOUR-FILE-PATH>"); AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitTableUnderstandingJobAdvanceRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitTableUnderstandingJobAdvanceRequest { FileUrlObject = bodySyream, FileNameExtension = "pdf" }; AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { // 復制代碼運行請自行打印 API 的返回值 client.SubmitTableUnderstandingJobAdvance(request, runtime); } catch (TeaException error) { // 如有需要,請打印 error AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,請打印 error AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } }
url文件方式上傳:以Java SDK為例,傳入文檔url調用方式的請求示例代碼如下,調用SubmitTableUnderstandingJob接口,通過fileUrl參數實現傳入文檔url。請注意,您傳入的文檔url必須為公網可訪問下載的公網url地址,無跨域限制,url不帶特殊轉義字符。
說明獲取并使用AccessKey信息的方式,可參考SDK概述中不同語言的SDK使用指南。
import com.aliyun.docmind_api20220711.models.*; import com.aliyun.teaopenapi.models.Config; import com.aliyun.docmind_api20220711.Client; public static void main(String[] args) throws Exception { submit(); } public static void submit() throws Exception { // 使用默認憑證初始化Credentials Client。 com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(); Config config = new Config() // 通過credentials獲取配置中的AccessKey ID .setAccessKeyId(credentialClient.getAccessKeyId()) // 通過credentials獲取配置中的AccessKey Secret .setAccessKeySecret(credentialClient.getAccessKeySecret()); // 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com"; Client client = new Client(config); SubmitTableUnderstandingJobRequest request = new SubmitTableUnderstandingJobRequest(); request.fileName = "example.pdf"; request.fileUrl = "https://example.com/example.pdf"; SubmitTableUnderstandingJobResponse response = client.submitTableUnderstandingJob(request); System.out.println(JSON.toJSON(response.getBody())); }
const Client = require('@alicloud/docmind-api20220711'); const Credential = require('@alicloud/credentials'); const getResult = async () => { // 使用默認憑證初始化Credentials Client const cred = new Credential.default(); const client = new Client.default({ // 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com endpoint: 'docmind-api.cn-hangzhou.aliyuncs.com', // 通過credentials獲取配置中的AccessKey ID accessKeyId: cred.credential.accessKeyId, // 通過credentials獲取配置中的AccessKey Secret accessKeySecret: cred.credential.accessKeySecret, type: 'access_key', regionId: 'cn-hangzhou' }); const advanceRequest = new Client.SubmitDocStructureJobAdvanceRequest(); const file = fs.createReadStream('./example.pdf'); advanceRequest.fileUrlObject = file; advanceRequest.fileName = 'example.pdf'; const runtimeObject = new Util.RuntimeOptions({}); const response = await client.submitDocStructureJobAdvance(advanceRequest, runtimeObject); return response.body; }
from alibabacloud_docmind_api20220711.client import Client as docmind_api20220711Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_docmind_api20220711 import models as docmind_api20220711_models from alibabacloud_tea_util.client import Client as UtilClient from alibabacloud_credentials.client import Client as CredClient if __name__ == '__main__': cred=CredClient() config = open_api_models.Config( # 通過credentials獲取配置中的AccessKey ID access_key_id=cred.get_credential().get_access_key_id(), # 通過credentials獲取配置中的AccessKey Secret access_key_secret=cred.get_credential().get_access_key_secret() ) # 訪問的域名 config.endpoint = f'docmind-api.cn-hangzhou.aliyuncs.com' client = docmind_api20220711Client(config) request = docmind_api20220711_models.SubmitTableUnderstandingJobRequest( # file_url : 文件url地址 file_url='https://example.com/example.pdf', # file_name :文件名稱。名稱必須包含文件類型 file_name='123.pdf', # file_name_extension : 文件后綴格式。與文件名二選一 # file_name_extension='pdf' ) try: # 復制代碼運行請自行打印 API 的返回值 response = client.submit_table_understanding_job(request) # API返回值格式層級為 body -> data -> 具體屬性。可根據業務需要打印相應的結果。如下示例為打印返回的業務id格式 # 獲取屬性值均以小寫開頭, print(response.body) except Exception as error: # 如有需要,請打印 error UtilClient.assert_as_string(error.message)
import ( "fmt" openClient "github.com/alibabacloud-go/darabonba-openapi/v2/client" "github.com/alibabacloud-go/docmind-api-20220711/client" "github.com/aliyun/credentials-go/credentials" ) func submit(){ // 使用默認憑證初始化Credentials Client。 credential, err := credentials.NewCredential(nil) // 通過credentials獲取配置中的AccessKey ID accessKeyId, err := credential.GetAccessKeyId() // 通過credentials獲取配置中的AccessKey Secret accessKeySecret, err := credential.GetAccessKeySecret() // 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com var endpoint string = "docmind-api.cn-hangzhou.aliyuncs.com" config := openClient.Config{AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret, Endpoint: &endpoint} // 初始化client cli, err := client.NewClient(&config) if err != nil { panic(err) } // 文件URL fileURL := "https://example.com/example.pdf" // 文件名 fileName := "example.pdf" // 初始化接口request request := client.SubmitTableUnderstandingJobRequest{ FileUrl: &fileURL, FileName: &fileName, } response, err := cli.SubmitTableUnderstandingJob(&request) if err != nil { panic(err) } // 打印結果 fmt.Println(response.Body.String()) }
using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Tea; using Tea.Utils; public static void SubmitUrl() { // 使用默認憑證初始化Credentials Client。 var akCredential = new Aliyun.Credentials.Client(null); AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { // 通過credentials獲取配置中的AccessKey Secret AccessKeyId = akCredential.GetAccessKeyId(), // 通過credentials獲取配置中的AccessKey Secret AccessKeySecret = akCredential.GetAccessKeySecret(), }; // 訪問的域名 config.Endpoint = "docmind-api.cn-hangzhou.aliyuncs.com"; AlibabaCloud.SDK.Docmind_api20220711.Client client = new AlibabaCloud.SDK.Docmind_api20220711.Client(config); AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitTableUnderstandingJobRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitTableUnderstandingJobRequest { FileUrl = "https://example.pdf", FileNameExtension = "pdf" }; try { // 復制代碼運行請自行打印 API 的返回值 client.SubmitTableUnderstandingJob(request); } catch (TeaException error) { // 如有需要,請打印 error AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,請打印 error AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } }
use AlibabaCloud\SDK\Docmindapi\V20220711\Docmindapi; use AlibabaCloud\SDK\Docmindapi\V20220711\Models\SubmitTableUnderstandingJobRequest; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use AlibabaCloud\Credentials\Credential; // 使用默認憑證初始化Credentials Client。 $bearerToken = new Credential(); $config = new Config(); // 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com $config->endpoint = "docmind-api.cn-hangzhou.aliyuncs.com"; // 通過credentials獲取配置中的AccessKey ID $config->accessKeyId = $bearerToken->getCredential()->getAccessKeyId(); // 通過credentials獲取配置中的AccessKey Secret $config->accessKeySecret = $bearerToken->getCredential()->getAccessKeySecret(); $config->type = "access_key"; $config->regionId = "cn-hangzhou"; $client = new Docmindapi($config); $request = new SubmitTableUnderstandingJobRequest(); $runtime = new RuntimeOptions(); $runtime->maxIdleConns = 3; $runtime->connectTimeout = 10000; $runtime->readTimeout = 10000; $request->fileName = "example.pdf"; $request->fileUrl = "https://example.com/example.pdf"; try { $response = $client->submitTableUnderstandingJob($request, $runtime); var_dump($response->toMap()); } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
處理成功返回示例:
{
"RequestId": "43A29C77-405E-4CC0-BC55-EE694AD0****",
"Data": {
"Id": "docmind-20220712-b15f****"
}
}
步驟二:輪詢表格智能解析結果查詢服務GetTableUnderstandingResult接口
調用查詢接口的入參ID就是前面異步任務提交接口返回的出參ID,查詢結果有處理中、處理成功、處理失敗三種情況。建議每10秒輪詢一次,最多輪詢120分鐘。若明確返回Completed為true或者超過輪詢最大時間,則終止輪詢。
請求參數
名稱 | 類型 | 必填 | 描述 | 示例值 |
Id | string | 是 | 需要查詢的業務訂單號,訂單號從提交接口的返回結果中獲取。 | docmind-20220712-b15f**** |
返回參數
名稱 | 類型 | 描述 | 示例值 |
RequestId | string | 請求唯一ID。 | 43A29C77-405E-4CC0-BC55-EE694AD0**** |
Completed | boolean | 異步任務是否處理完成,false表示任務仍在處理中,true代表任務處理完成,有處理成功或處理失敗的明確結果。 | true |
Status | String | 異步任務處理完成的狀態,最終處理結束后的狀態。Success為處理成功,Fail為處理失敗。 | Success |
Data | string | 返回數據,表格智能解析的解析結果,輸出從表格中解析出表格樣式、表格內容、表格KV等內容的JSON數據結構返回。 | - |
Code | string | 狀態碼。 | 200 |
Message | string | 詳細信息。 | Message |
使用示例
以Java SDK為例,調用文檔智能解析接口的結果查詢類API示例代碼如下,調用getTableUnderstandingResult接口,通過ID參數傳入查詢流水號。
獲取并使用AccessKey信息的方式,可參考SDK概述中不同語言的SDK使用指南。
import com.aliyun.docmind_api20220711.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.docmind_api20220711.Client;
public static void main(String[] args) throws Exception {
submit();
}
public static void submit() throws Exception {
// 使用默認憑證初始化Credentials Client。
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config()
// 通過credentials獲取配置中的AccessKey ID
.setAccessKeyId(credentialClient.getAccessKeyId())
// 通過credentials獲取配置中的AccessKey Secret
.setAccessKeySecret(credentialClient.getAccessKeySecret());
// 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com
config.endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
Client client = new Client(config);
GetTableUnderstandingResultRequest resultRequest = new GetTableUnderstandingResultRequest();
resultRequest.id = "docmind-20220902-824b****";
GetTableUnderstandingResultResponse response = client.getTableUnderstandingResult(resultRequest);
System.out.println(JSON.toJSON(response.getBody()));
}
const Client = require('@alicloud/docmind-api20220711');
const Credential = require('@alicloud/credentials');
const getResult = async () => {
// 使用默認憑證初始化Credentials Client
const cred = new Credential.default();
const client = new Client.default({
// 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com
endpoint: 'docmind-api.cn-hangzhou.aliyuncs.com',
// 通過credentials獲取配置中的AccessKey ID
accessKeyId: cred.credential.accessKeyId,
// 通過credentials獲取配置中的AccessKey Secret
accessKeySecret: cred.credential.accessKeySecret,
type: 'access_key',
regionId: 'cn-hangzhou'
});
const resultRequest = new Client.GetTableUnderstandingResultRequest();
resultRequest.id = "docmind-20220902-824b****";
const response = await client.getTableUnderstandingResult(resultRequest);
return response.body;
}
from alibabacloud_docmind_api20220711.client import Client as docmind_api20220711Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_docmind_api20220711 import models as docmind_api20220711_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_credentials.client import Client as CredClient
if __name__ == '__main__':
cred=CredClient()
config = open_api_models.Config(
# 通過credentials獲取配置中的AccessKey ID
access_key_id=cred.get_credential().get_access_key_id(),
# 通過credentials獲取配置中的AccessKey Secret
access_key_secret=cred.get_credential().get_access_key_secret()
)
# 訪問的域名
config.endpoint = f'docmind-api.cn-hangzhou.aliyuncs.com'
client = docmind_api20220711Client(config)
request = docmind_api20220711_models.GetTableUnderstandingResultRequest(
# id : 任務提交接口返回的id
id='docmind-20220902-824b****'
)
try:
# 復制代碼運行請自行打印 API 的返回值
response = client.get_table_understanding_result(request)
# API返回值格式層級為 body -> data -> 具體屬性。可根據業務需要打印相應的結果。獲取屬性值均以小寫開頭
# 獲取異步任務處理情況,可根據response.body.completed判斷是否需要繼續輪詢結果
print(response.body.completed)
# 獲取返回結果。建議先把response.body.data轉成json,然后再從json里面取具體需要的值。
print(response.body)
except Exception as error:
# 如有需要,請打印 error
UtilClient.assert_as_string(error.message)
import (
"fmt"
openClient "github.com/alibabacloud-go/darabonba-openapi/v2/client"
"github.com/alibabacloud-go/docmind-api-20220711/client"
"github.com/aliyun/credentials-go/credentials"
)
func submit(){
// 使用默認憑證初始化Credentials Client。
credential, err := credentials.NewCredential(nil)
// 通過credentials獲取配置中的AccessKey ID
accessKeyId, err := credential.GetAccessKeyId()
// 通過credentials獲取配置中的AccessKey Secret
accessKeySecret, err := credential.GetAccessKeySecret()
// 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com
var endpoint string = "docmind-api.cn-hangzhou.aliyuncs.com"
config := openClient.Config{AccessKeyId: accessKeyId, AccessKeySecret: accessKeySecret, Endpoint: &endpoint}
// 初始化client
cli, err := client.NewClient(&config)
if err != nil {
panic(err)
}
id := "docmind-20220925-76b1****"
// 調用查詢接口
request := client.GetTableUnderstandingResultRequest{Id: &id}
response, err := cli.GetTableUnderstandingResult(&request)
if err != nil {
panic(err)
}
// 打印查詢結果
fmt.Println(response.Body.String())
}
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Tea;
using Tea.Utils;
public static void GetResult()
{
// 使用默認憑證初始化Credentials Client。
var akCredential = new Aliyun.Credentials.Client(null);
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
{
// 通過credentials獲取配置中的AccessKey Secret
AccessKeyId = akCredential.GetAccessKeyId(),
// 通過credentials獲取配置中的AccessKey Secret
AccessKeySecret = akCredential.GetAccessKeySecret(),
};
// 訪問的域名
config.Endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
AlibabaCloud.SDK.Docmind_api20220711.Client client = new AlibabaCloud.SDK.Docmind_api20220711.Client(config);
AlibabaCloud.SDK.Docmind_api20220711.Models.GetTableUnderstandingResultRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.GetTableUnderstandingResultRequest
{
Id = "docmind-20220902-824b****"
};
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
try
{
// 復制代碼運行請自行打印 API 的返回值
client.GetTableUnderstandingResult(request);
}
catch (TeaException error)
{
// 如有需要,請打印 error
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// 如有需要,請打印 error
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
}
use AlibabaCloud\SDK\Docmindapi\V20220711\Docmindapi;
use AlibabaCloud\SDK\Docmindapi\V20220711\Models\GetTableUnderstandingResultRequest;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use AlibabaCloud\Credentials\Credential;
// 使用默認憑證初始化Credentials Client。
$bearerToken = new Credential();
$config = new Config();
// 訪問的域名,支持ipv4和ipv6兩種方式,ipv6請使用docmind-api-dualstack.cn-hangzhou.aliyuncs.com
$config->endpoint = "docmind-api.cn-hangzhou.aliyuncs.com";
// 通過credentials獲取配置中的AccessKey ID
$config->accessKeyId = $bearerToken->getCredential()->getAccessKeyId();
// 通過credentials獲取配置中的AccessKey Secret
$config->accessKeySecret = $bearerToken->getCredential()->getAccessKeySecret();
$config->type = "access_key";
$config->regionId = "cn-hangzhou";
$client = new Docmindapi($config);
$request = new GetTableUnderstandingResultRequest();
$request->id = "docmind-20220902-824b****";
$runtime = new RuntimeOptions();
$runtime->maxIdleConns = 3;
$runtime->connectTimeout = 10000;
$runtime->readTimeout = 10000;
try {
$response = $client->getTableUnderstandingResult($request, $runtime);
var_dump($response->toMap());
} catch (TeaUnableRetryError $e) {
var_dump($e->getMessage());
var_dump($e->getErrorInfo());
var_dump($e->getLastException());
var_dump($e->getLastRequest());
}
查詢結果
查詢結果有處理中、處理成功、處理失敗三種情況,分別說明每種情況的返回結果示例。
處理中的返回結果如下所示:
{ "RequestId": "2AABD2C2-D24F-12F7-875D-683A27C3****", "Completed": false, "Code": "DocProcessing", "Message": "Document processing", "HostId": "ocr-api.cn-hangzhou.aliyuncs.com", "Recommend": "https://next.api.aliyun.com/troubleshoot?q=DocProcessing&product=docmind-api" }
處理中Completed返回值為false,表示任務沒有處理結束,仍在處理中。這種情況需要繼續輪詢,直到明確返回Completed返回值為true或者超過輪詢最大時間。
處理失敗的返回結果如下所示:
{ "RequestId": "A8EF3A36-1380-1116-A39E-B377BE27****", "Completed": true, "Status": "Fail", "Code": "UrlNotLegal", "Message": "Failed to process the document. The document url you provided is not legal.", "HostId": "docmind-api.cn-hangzhou.aliyuncs.com", "Recommend": "https://next.api.aliyun.com/troubleshoot?q=IDP.UrlNotLegal&product=docmind-api" }
處理失敗Completed返回值為true,表示任務處理結束,同時Status返回值為Fail,表示處理失敗,同時會返回失敗Code和詳細原因Message。訪問錯誤碼可以查看錯誤碼詳細介紹。
處理成功的返回結果如下所示:
{ "Status": "Success", "RequestId": "73134E1A-E281-1B2C-A105-D0ECFE2D****", "Completed": true, "Data": { "tables": [{ "tableName": "表格1", "tableNote": null, "sheetName": "表格1", "sheetNumber": 1, "cells": [{ "content": "序號", "autoWrap": false, "colNumber": 0, "rowNumber": 0, "pos": [{ "x": 178, "y": 1517 }, { "x": 704, "y": 1515 }, { "x": 706, "y": 1630 }, { "x": 180, "y": 1631 } ], "filledColor": null, "borderLine": null, "borderStyle": null, "borderColor": null, "blocks": [{ "font": "Times_New_Roman", "fontColor": "000000", "fontSize": 10, "bold": false, "underline": false, "deleteline": false, "italic": false, "alignment": null }], "mergedCell": false, "firstMergedCell": false }], "tableKVs": [{ "type": "kv", "relations": [{ "key": [ "序號" ], "value": [ "測試1", "測試2" ], "keyConfidence": null, "valueConfidence": null }], "cellIdRelations": [{ "key": [ "0" ], "value": [ "4", "7" ], "keyConfidence": null, "valueConfidence": null }] }] }] } }
處理成功Completed返回值為true,表示任務處理結束,同時會返回Status為字符串的Success,表示處理成功。具體的處理結果在Data節點中,Data節點是個列表,該節點只會有1個元素,如下所示為Data節點中每個元素的具體格式:
名稱
類型
描述
requestId
string
請求唯一ID。
success
bool
是否成功。
code
string
錯誤碼。
msg
string
總錯誤消息。
data
object
解析結果。
tables
array
表格信息。
tableName
string
表格名稱。
tableNote
string
表注。
sheetName
string
sheet名稱。
sheetNumber
int
sheet頁碼。
cells
array
單元格信息。
content
string
單元格文本內容。
autoWrap
bool
文本是否換行。
isMergedCell
bool
是否合并單元格。
isFirstMergedCell
bool
是否合并起始單元格。
colNumber
int
列號。
rowNumber
int
行號。
filledColor
string
單元格填充色。
borderLine
string
單元格邊框線。
borderStyle
string
邊框樣式。
borderColor
string
邊框顏色。
pos
array
坐標。
blocks
array
字塊信息列表。
font
int
字體。
fontColor
string
字體顏色。
fontSize
int
字體大小。
bold
bool
是否粗體。
underline
bool
是否下劃線。
deleteline
bool
是否刪除線。
italic
bool
是否斜體。
alignment
string
對齊方式。
tableKVs
array
表格抽取內容。
type
string
表格抽取內容類型。
relations
array
表格抽取內容列表。
key
array
key列表。
keyConfidence
array
key的置信度列表。
value
array
value列表。
valueConfidence
array
value的置信度列表。
cellIdRelations
array
單元格對應關系列表。
key
array
key所在單元格ID列表。
value
array
value所在單元格ID列表。