日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

電子文檔解析

電子文檔解析接口從文檔本身的半結構化內容中解析出所包含的信息,提供包括pdf、word、excel、html、epub、mobi、markdown、txt的電子解析能力,生成文檔智能中支持的結構化對象。本文介紹了電子文檔解析API的調用方式。在調用OpenAPI接口前,請先閱讀API使用指南

調用方式

電子文檔解析接口為同步接口,調用SubmitDigitalDocStructureJob或者SubmitDigitalDocStructureJobAdvance接口均可進行同步任務提交,等待超時時間可設置為5分鐘。

說明

支持的格式:html、pdf、ppt、pptx、xlsx、xls、doc、docx、mobi、epub、markdown、txt。

調用電子文檔解析提交服務SubmitDigitalDocStructureJob接口

同步提交服務支持上傳本地文件和url文件兩種方式:

  • 本地文件上傳的同步提交服務接口為:SubmitDigitalDocStructureJobAdvance接口。

  • url上傳的同步提交服務接口為:SubmitDigitalDocStructureJob接口。

請求參數

名稱

類型

必填

描述

示例值

FileUrl

string

以文檔url方式時使用。單個文檔限制大小為150MB以內,頁數1.5萬頁以內。

https://example.com/example.xlsx

FileUrlObject

stream

以本地文件上傳方式調用接口時使用。單個文檔限制大小為100MB以內,頁數為1000頁以內。

本地文件生成的FileInputStream

FileName

string

文件名需帶文件類型后綴,與fileNameExtension二選一。

example.xlsx

FileNameExtension

string

文件類型,與fileName二選一。

xlsx

RevealMarkdown

boolean

是否輸出markdown類型文本。

true

ImageStrategy

String

markdownContent中圖片存儲方式。

url:提供oss url(含有效期)

base64: 提供base64字段

UseUrlResponseBody

bool

是否以url方式返回結果,默認為false。

true

重要
  • 開啟markdown輸出后,ImageStrategy才能生效。ImageStrategy參數用于控制markdown內圖片存儲方式,base64適合較小文件,建議小于1M的圖片使用base64。推薦使用url,但注意url會有時效期,一般為12小時。

  • 根據您計算機的規(guī)格大小,如果上傳的文件較大或者文件內容較多 ,建議開啟UseUrlResponseBody,可以有效避免接口超時等問題,但注意url會有時效期,一般為12小時。

返回參數

名稱

類型

描述

示例值

RequestId

string

請求唯一ID。

43A29C77-405E-4CC0-BC55-EE694AD0****

Id

String

訂單ID。

docmind-20220712-b15f****

Status

String

同步任務處理完成的狀態(tài),最終處理結束后的狀態(tài)。Success為處理成功,Fail為處理失敗。

Success

Data

map

返回數據,電子解析的解析結果,輸出包括文檔內容及樣式、文檔邏輯信息(層級樹)的JSON數據結構返回。

-

Code

string

狀態(tài)碼。

200

Message

string

詳細信息。

Message

使用示例

本接口支持本地文檔上傳和傳入文檔url這兩種調用方式。

  • 以Java SDK為例,本地文檔上傳調用方式的請求示例代碼如下,調用電子文檔解析提交服務SubmitDigitalDocStructureJobAdvance接口,通過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);
        // 創(chuàng)建RuntimeObject實例并設置運行參數
        RuntimeOptions runtime = new RuntimeOptions();
        SubmitDigitalDocStructureJobAdvanceRequest request = new SubmitDigitalDocStructureJobAdvanceRequest();
        File file = new File("D:\\example.xlsx");
        request.fileUrlObject = new FileInputStream(file);
        request.fileName = "example.xlsx";
        request.revealMarkdown=true;
        // 發(fā)起請求并處理應答或異常。                                    
        SubmitDigitalDocStructureJobResponse response = client.submitDigitalDocStructureJobAdvance(request, runtimeOptions);
        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.SubmitDigitalDocStructureJobAdvanceRequest();
      const file = fs.createReadStream('./example.pdf');
      advanceRequest.fileUrlObject = file;
      advanceRequest.fileName = 'example.pdf';
      const runtimeObject = new Util.RuntimeOptions({});
      const response = await client.submitDigitalDocStructureJobAdvance(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__':
      	# 使用默認憑證初始化Credentials Client。
        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.SubmitDigitalDocStructureJobAdvanceRequest(
            # file_url_object : 本地文件流
            file_url_object=open("./example.xlsx", "rb"),
            # file_name :文件名稱。名稱必須包含文件類型
            file_name='123.xlsx',
            reveal_markdown=True,
            # file_name_extension : 文件后綴格式。與文件名二選一
            # file_name_extension='xlsx'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 復制代碼運行請自行打印 API 的返回值
            response = client.submit_digital_doc_structure_job_advance(request, runtime)
            # API返回值格式層級為 body -> data -> 具體屬性。
            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.SubmitDigitalDocStructureJobAdvanceRequest{
    		FileName:      &filename,
    		FileUrlObject: f,
    	}
      // 創(chuàng)建RuntimeObject實例并設置運行參數
      options := service.RuntimeOptions{}
      response, err := cli.SubmitDigitalDocStructureJobAdvance(&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.SDK.Docmind_api20220711.Client client = new AlibabaCloud.SDK.Docmind_api20220711.Client(config);
                   //需要安裝額外的依賴庫--> AlibabaCloud.DarabonbaStream        
        				Stream bodySyream = AlibabaCloud.DarabonbaStream.StreamUtil.ReadFromFilePath("<YOUR-FILE-PATH>");
                AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitDigitalDocStructureJobAdvanceRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitDigitalDocStructureJobAdvanceRequest
                {
                    FileUrlObject = bodySyream,
                    FileNameExtension = "pdf"
                };
                AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                try
                {
                    // 復制代碼運行請自行打印 API 的返回值
                    client.SubmitDigitalDocStructureJobAdvance(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);
                }
            }
  • 以Java SDK為例,傳入文檔url調用方式的請求示例代碼如下,調用SubmitDigitalDocStructureJob接口,通過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);
        SubmitDigitalDocStructureJobRequest request = new SubmitDigitalDocStructureJobRequest();
        request.fileName = "example.xlsx";
        request.fileUrl = "https://example.com/example.xlsx";
        request.revealMarkdown=true;
        SubmitDigitalDocStructureJobResponse response = client.submitDigitalDocStructureJob(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 request = new Client.SubmitDigitalDocStructureJobRequest();
      request.fileName = 'example.pdf';
      request.fileUrl = 'https://example.com/example.pdf';
      const response = await client.submitDocStructureJob(request);
      
      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__':
      	# 使用默認憑證初始化Credentials Client。
        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.SubmitDigitalDocStructureJobRequest(
            # file_url : 文件url地址
            file_url='https://example.com/example.xlsx',
            # file_name :文件名稱。名稱必須包含文件類型
            file_name='123.xlsx',
            reveal_markdown=True,
            # file_name_extension : 文件后綴格式。與文件名二選一
            # file_name_extension='xlsx'
        )
        try:
            # 復制代碼運行請自行打印 API 的返回值
            response = client.submit_digital_doc_structure_job(request)
            # API返回值格式層級為 body -> data -> 具體屬性。
            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.SubmitDigitalDocStructureJobRequest{
    		FileUrl:  &fileURL,
    		FileName: &fileName,
    	}
      response, err := cli.SubmitDigitalDocStructureJob(&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.SubmitDigitalDocStructureJobRequest request = new AlibabaCloud.SDK.Docmind_api20220711.Models.SubmitDigitalDocStructureJobRequest
                {
                    FileUrl = "https://example.pdf",
                    FileNameExtension = "pdf"
                };
                try
                {
                    // 復制代碼運行請自行打印 API 的返回值
                    client.SubmitDigitalDocStructureJob(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\SubmitDocStructureJobRequest;
    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 SubmitDigitalDocStructureJobRequest();
    
    $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->submitDigitalDocStructureJob($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());
    }

處理成功后Status返回值為Success,表示處理成功。處理成功返回結果示例如下:

{
  "data":{
    "docInfo":{
      "pageCountEstimate":3,
      "docType":"pdf"
    },
    "styles":[ ],
    "layouts":[
      {
        "pos":[
          {
            "x":0,
            "y":0
          },
          {
            "x":1113,
            "y":0
          },
          {
            "x":1113,
            "y":1440
          },
          {
            "x":0,
            "y":1440
          }
        ],
        "index":0,
        "subType":"none",
        "text":"",
        "type":"image",
        "pageNum":[
          0
        ],
        "uniqueId":"31128703ac73c52f05717b3b654de020"
      },
      {
        "pos":[
          {
            "x":0,
            "y":0
          },
          {
            "x":1113,
            "y":0
          },
          {
            "x":1113,
            "y":1440
          },
          {
            "x":0,
            "y":1440
          }
        ],
        "index":0,
        "subType":"none",
        "text":"",
        "type":"image",
        "pageNum":[
          1
        ],
        "uniqueId":"25b2a6f63bdf57f0d7a4f3da67c8616a"
      },
      {
        "pos":[
          {
            "x":0,
            "y":0
          },
          {
            "x":1113,
            "y":0
          },
          {
            "x":1113,
            "y":1440
          },
          {
            "x":0,
            "y":1440
          }
        ],
        "index":0,
        "subType":"none",
        "text":"",
        "type":"image",
        "pageNum":[
          2
        ],
        "uniqueId":"8c651c04c72a029b4be4ed80aa57fbbd"
      }
    ],
    "version":"1.2.0",
    "requestId":"docmind-20240820-6bf3e1bc1f164f0c99b8a12cfbcbeXXX"
  },
  "requestId":"1556A10B-E31C-5B21-8A5E-2179069D2XXX",
  "id":"docmind-20240820-6bf3e1bc1f164f0c99b8a12cfbcbeXXX",
  "status":"Success"
}

具體的處理結果在Data節(jié)點中,如下為Data節(jié)點的具體格式:

Data

object

解析結果

styles

array

樣式列表(全文檔中block的去重樣式列表)。

styleId

int

樣式ID。

underline

bool

是否有下劃線。

deleteLine

bool

是否有刪除線。

bold

bool

是否加粗。

fontSize

int

字號大小。

fontName

string

字體名稱。

color

string

文字顏色。

charScale

float

對齊寬高比例尺字體高度不變的情況下,寬度會有變化,計算邏輯為寬/高。

layouts

array

版面信息列表。

uniqueId

string

版面信息唯一ID。

index

int

版面閱讀順序。

type

string

版面類型(text/table/image)。

text

string

文本內容。

markdownContent

string

markdown 文本內容(開啟參數后支持)。

alignment

string

間距枚舉。

pos

array

坐標。

pageNum

array

版面所在頁數(可能多頁)。

numCol

int

表格總列數(表格版面類型特有)。

numRow

int

表格總行數(表格版面類型特有)。

cells

string

單元格信息(類型是表格才有)。

cellId

string

單元格Id(單個版面信息中唯一)。

cellUniqueId

string

單元格Id(全局唯一)。

type

string

單元格類型。

alignment

string

單元格對齊方式。

pageNum

array

單元格所在頁數(可能多頁)。

xsc

int

起始單元格橫向是第幾列。

ysc

int

起始單元格縱向是第幾行。

xec

int

結束單元格橫向是第幾列。

yec

int

結束單元格縱向是第幾行。

pos

array

單元格坐標。

text

string

單元格文本內容。

layouts

array

內嵌版面信息。

logics

array

邏輯信息列表。

docTree

array

層級樹信息列表。

uniqueId

string

層級樹節(jié)點的唯一ID。

level

int

節(jié)點層級。

link

object

子節(jié)點。

backlink

object

父節(jié)點。

docInfo

object

文檔信息。

docType

string

文檔類型。

imageCount

int

圖片數量。

tableCount

int

表格數量。

pageCountEstimate

int

文檔頁數。

paragraphCount

int

段落數量。

tokens

long

英文單詞數,或中文字數。

docUrl

string

文檔url地址。

orignalDocName

string

用戶提供的原始文檔名稱。

originalDocUrl

string

用戶提供的原始文檔url地址。

pages

array

文檔頁面列表。

場景示例

本內容闡述獲取JSON后,場景處理使用上建議和方案。

獲取markdown信息

GetDocStructureResult設置RevealMarkdown為true,ImageStrategy為url。

import json
response = json.load(open("demo.json", "r"))
doc_json = response["Data"]

markdown_str = ""
for layout in doc_json["layouts"]:
  markdown_str += layout["markdownContent"] + "\n"
print(markdown_str)

獲取指定層級內容

SubmitDocStructureJob/SubmitDocStructureJobAdvance接口中,設置doc_tree或default,用于獲取文檔的結構信息。

yuque_diagram.jpg

import json
response = json.load(open("demo.json", "r"))
doc_json = response["Data"]
doc_tree = doc_json["logics"]["docTree"]
layout_cache: {} = {}
for layout in doc_json["layouts"]:
    layout_cache[layout["uniqueId"]] = layout
    layout["children"] = list()

for node in doc_tree:
    father = node["backlink"]["上級"][0]
    child = node["uniqueId"]
    if father in layout_cache:
        # 設置 子layout
        layout_cache[father]["children"].append(layout_cache[child])
for layout in doc_json["layouts"]:
    # 當前l(fā)ayout下的子layout
    print(layout["children"])

附錄

doc-json數據結構

VERSION(STRING: DOC-JSON版本信息)

Doc-json

styles(array:無重復的樣式集合)

layouts(array:版面信息列表,不包含坐標信息)

logics(object:邏輯信息,只含層級樹)

doclnfo(object:文檔信息)

version(string:doc-json版本信息)

版面類型

文檔智能解析返回結果中,版面的類型type及子類型subType列表如下:

type(類型)

類型描述

subType(子類型)

子類型描述

title

標題

table

表格

text

普通文字

para

段落

figure

圖表

圖片

head

頁眉

page_header

頁眉

foot_pagenum

頁腳頁碼

page

頁碼