能力介绍:
电子文档解析接口可用于电子文档的解析,从文档本身的半结构化内容中解析出所包含的信息,提供包括pdf、word、excel、html、epub、mobi、markdown、txt的电子解析能力,生成文档智能中支持的结构化对象。电子文档解析接口为同步接口,调用SubmitDigitalDocStructureJob或者SubmitDigitalDocStructureJobAdvance 均可进行同步接口提交,等待超时时间可设置为5分钟。
调用提交服务
同步提交服务支持本地文件和URL文件两种方式:
URL上传的同步提交服务接口为:SubmitDigitalDocStructureJob接口。
本地文件上传的同步提交服务接口为:SubmitDigitalDocStructureJobAdvance接口。
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
FileUrl | string | 是 |
| https://example.com/example.xlsx |
FileUrlObject | stream | 是 |
| 本地文件生成的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参数用于控制markdown内图片存储方式,base64适合较小文件,推荐使用url,但注意url会有时效期。
如果上传的文件较大 或者文件内容较多 ,建议开启UseUrlResponseBody,可以有效避免接口超时等问题,但注意url会有时效期。
返回参数
名称 | 类型 | 描述 | 示例值 |
RequestId | string | 请求唯一ID。 | 43A29C77-405E-4CC0-BC55-EE694AD0**** |
Id | String | 订单Id | docmind-20220712-b15f**** |
Status | String | 同步任务处理完成的状态,最终处理结束后的状态。Success为处理成功,Fail为处理失败。 | Success |
Data | map | 返回数据,电子解析的解析结果,输出包括文档内容及样式、文档逻辑信息(层级树)的JSON数据结构返回。 | |
Code | string | 状态码。 | 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 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();
SubmitDigitalDocStructureJobAdvanceRequest request = new SubmitDigitalDocStructureJobAdvanceRequest();
File file = new File("D:\\example.xlsx");
advanceRequest.fileUrlObject = new FileInputStream(file);
advanceRequest.fileName = "example.xlsx";
// 发起请求并处理应答或异常。
SubmitDigitalDocStructureJobResponse response = client.submitDigitalDocStructureJobAdvance(request, runtimeOptions);
}
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
def submit_file():
# 使用默认凭证初始化Credentials Client。
cred=CredClient()
config = open_api_models.Config(
# 通过credentials获取配置中的AccessKey ID
access_key_id=cred.get_access_key_id(),
# 通过credentials获取配置中的AccessKey Secret
access_key_secret=cred.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',
# 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.data)
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,
}
// 创建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 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";
SubmitDigitalDocStructureJobResponse response = client.submitDigitalDocStructureJob(request);
}
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
def submit_url():
# 使用默认凭证初始化Credentials Client。
cred=CredClient()
config = open_api_models.Config(
# 通过credentials获取配置中的AccessKey ID
access_key_id=cred.get_access_key_id(),
# 通过credentials获取配置中的AccessKey Secret
access_key_secret=cred.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',
# file_name_extension : 文件后缀格式。与文件名二选一
file_name_extension='xlsx'
)
try:
# 复制代码运行请自行打印 API 的返回值
response = client.submit_digital_doc_structure_job(request)
# API返回值格式层级为 body -> data -> 具体属性。
print(response.body.data)
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());
}
正常返回示例
JSON
格式
{
"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"
}
处理成功后Status字段会返回Success,表示处理成功。具体的处理结果在Data节点中,接下来介绍下Data节点的具体格式:
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 | 层级树节点的唯一ID |
+++ level | int | 节点层级 |
+++ link | object | 子节点 |
+++ backlink | object | 父节点 |
+ 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 接口中,设置doctree或default,用于获取文档的结构信息
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"]:
# 当前layout下的子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 | 页码 |