AI搜索開放平臺支持通過API的方式調用文檔解析服務,您可以將服務集成到您的業務處理鏈路中,將非結構化數據解析為結構化數據并應用于業務。
服務名稱 | 服務ID | 服務描述 |
文檔解析服務-001 | ops-document-analyze-001 | 支持從非結構化文檔中提取出標題、分段等邏輯層級結構,以及文本、表格、圖片等信息,并以結構化的格式輸出。 |
前提條件
獲取身份鑒權信息
通過API調用AI搜索開放平臺服務時,需要對調用者身份進行鑒權,如何獲取鑒權信息請參見獲取API-KEY。
獲取服務調用地址
支持通過公網和VPC兩種方式調用服務,詳情請參見獲取服務接入地址。
公共說明
請求body最大不能超過8MB。
概述
文檔內容解析提供了同步、異步兩類接口。同步接口因存在HTTP超時風險,不建議生產環境中使用,可用于調試接口。生產環境建議使用異步接口,共分為兩步,首先通過創建異步提取任務拿到task_id,然后調用獲取異步任務接口不斷查詢狀態直至任務完成。
創建異步提取任務
請求方式
POST
URL
{host}/v3/openapi/workspaces/{workspace_name}/document-analyze/{service_id}/async
host:調用服務的地址,支持通過公網和VPC兩種方式調用API服務,可參見獲取服務接入地址。
workspace_name:工作空間名稱,例如default。
service_id: 系統內置服務id,例如ops-document-analyze-001。
請求參數
Header參數
API-KEY認證
參數 | 類型 | 必填 | 描述 | 示例值 |
Content-Type | String | 是 | 請求類型:application/json | application/json |
Authorization | String | 是 | API-Key | Bearer OS-d1**2a |
Body參數
參數 | 類型 | 必填 | 描述 | 示例值 |
service_id | String | 是 | 系統內置服務ID。 | ops-document-analyze-001 |
document.url | String | 否 | 文檔URL地址,支持HTTP、HTTPS協議(保證可以外網無狀態下載) 與document.content二選一即可。 | http://opensearch-shanghai.oss-cn-shanghai.aliyuncs.com/chatos/***/file-parser/samples/GB10767.pdf |
document.content | String | 否 | 文檔內容,用Base64Encode編碼 與document.url二選一即可。 | "aGVsbG8gd29ybGQ=" |
document.file_name | String | 否 | 文件名,如果為空通過URL推斷,如果URL也為空,則需要顯式指定。 | test.pdf |
document.file_type | String | 否 | 文件類型,如果為空從file_name的后綴推斷,如果無法推斷需要顯式指定,如:pdf、doc、docx。 | |
output.image_storage | String | 否 | 圖片存儲方式
| url |
strategy.enable_semantic | Boolean | 否 | 是否開啟語義層級結構提取:
| false |
如下圖中的文檔目錄與正文沒有明顯區分,在開啟該功能后,返回結果中層級結構更加準確。
未開啟語義結果提取功能:
開啟語義結果提取功能后,可以看到開啟后返回的結果層級結構更加準確(截圖中的“##”表示識別出的二級目錄)。
說明usage.semantic_token_count有返回值表示語義結構提取成功,則收取此計費項產生的Token費用,若無返回值則表示語義提取未成功,則不涉及此計費項。
您可參照以下表格預估開啟語義結果提取后的用時及產生的語義Token數。
PDF頁數 | Token | 未開啟語義層級結構提取 | 開啟語義層級結構提取 | |
耗時(秒) | 耗時(秒) | 語義Token | ||
7 | 11504 | 2 | 49 | 36243 |
25 | 10375 | 1 | 33 | 59332 |
42 | 41435 | 5 | 68 | 130717 |
返回參數
參數 | 類型 | 描述 | 示例值 |
result.task_id | String | 文檔解析異步任務ID。 | d5a4019e-853a-****-b5b6-8053d9f5a9fc |
Curl請求示例
curl --location 'http://****shanghai.opensearch.aliyuncs.com/v3/openapi/workspaces/default/document-analyze/ops-document-analyze-001/async/' \
--header 'Authorization: Bearer 您的API Key' \
--header 'Content-Type: application/json' \
--data '{
"document":{
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241018/jahnyn/%E8%A7%A3%E6%9E%90%E6%B5%8B%E8%AF%95.doc"
},
"output" :{
"image_storage":"base64"
},
"strategy": {
"enable_semantic":true
}
}'
響應示例
正常響應示例
{
"request_id": "D5A4019E-853A-4E20-****-8053D9F5A9FC",
"latency": 5.0,
"http_code": 200,
"result": {
"task_id": "d5a4019e-853a-****-b5b6-8053d9f5a9fc"
}
}
異常響應示例
在訪問請求出錯的情況下,輸出的結果中會通過code和message指明出錯原因。
{
"request_id": "590A7EB8-AA84-****-AF31-8C35DC965972",
"latency": 0.0,
"code": "InvalidParameter",
"http_code": 400,
"message": "document.file_name required"
}
獲取異步提取任務
請求方式
GET
URL
{host}/v3/openapi/workspaces/{workspace_name}/document-analyze/{service_id}/async/task-status?task_id=${task_id}
host:調用服務的地址,支持通過公網和VPC兩種方式調用API服務,可參見獲取服務接入地址。
workspace_name:工作空間名稱,例如default。
service_id: 系統內置服務id,例如ops-document-analyze-001。
task_id:創建文檔解析響應中返回的異步任務 ID,例如d5a4019e-853a-****-b5b6-8053d9f5a9fc。
請求參數
Header參數
API-KEY認證
參數 | 類型 | 必填 | 描述 | 示例值 |
Content-Type | String | 是 | 請求類型:application/json | application/json |
Authorization | String | 是 | API-Key | Bearer OS-d1**2a |
返回參數
參數 | 類型 | 描述 | 示例值 |
result.task_id | String | 文檔解析異步任務ID。 | 24c3ad59-****-40cf-974b-b63d63e0571 |
result.status | String | 任務狀態:
| PENDING |
result.error | String | status=FAIL時的錯誤信息內容,正常情況為空。 | 文檔解密失敗 |
result.data | Object | 文檔解析的結果。 | markdown |
result.data.content | String | 文檔解析結果-文檔內容
| "XXX" |
result.data.content_type | String | 文檔解析結果-內容格式
| markdown |
result.data.page_num | Int | 文檔解析結果-文檔頁數。 | 15 |
request_id | String | 系統對一次API調用賦予的唯一標識。 | B4AB89C8-B135-****-A6F8-2BAB8018688 |
latency | Float/Int | 請求耗時,單位ms。 | 10 |
usage | Object | 本次調用產生的計量信息。 | "usage": { "token_count": 123, "table_count": 5, "image_count": 6, "semantic_token_count":3068 } |
usage.token_count | Int | 文檔中字符個數。 | 1234 |
usage.table_count | Int | 文檔中表格個數。 | 5 |
usage.image_count | Int | 文檔中圖片個數。 | 6 |
usage.semantic_token_count | Int | 語義提取模型輸入字符個數。 | 3068 |
Curl請求示例
curl -XGET -H"Content-Type: application/json"
"http://****-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/document-analyze/ops-document-analyze-001/async/task-status?task_id=110d6349-2e51-****-8bfb-25e5de434686"
-H "Authorization: Bearer 您的API-KEY"
響應示例
正常響應示例
{
"request_id": "27F9CEC3-9052-****-83FF-E7957B680492",
"latency": 13.0,
"http_code": 200,
"result": {
"status": "SUCCESS",
"data": {
"content": "Provided proper attribution is provided, Alibaba hereby grants permission to reproduce the tables and figures in this paper solely for use in journalistic or scholarly works....",
"content_type": "markdown",
"page_num": 15
},
"task_id": "24c3ad59-b196-****-974b-b63d63e05895"
},
"usage": {
"token_count": 31867,
"table_count": 4,
"image_count": 8,
"semantic_token_count":3068
}
}
異常響應示例
在訪問請求出錯的情況下,輸出的結果中會通過code和message指明出錯原因。
{
"request_id": "0F94BD89-989C-****-963C-6E4F3FF99445",
"latency": 3.0,
"code": "BadRequest.TaskNotExist",
"http_code": 404,
"message": "task[2fda34f5-40b4-****-a9a2-3e2c1e807361] not exist"
}
創建同步提取任務
請求方式
POST
URL
{host}/v3/openapi/workspaces/{workspace_name}/document-analyze/{service_id}/sync
參數說明
host:調用服務的地址,支持通過公網和VPC兩種方式調用API服務,可參見獲取服務接入地址。
workspace_name:工作空間名稱,例如default。
service_id: 系統內置服務id,例如ops-document-analyze-001。
請求參數
Header參數
API-KEY認證
參數 | 類型 | 必填 | 描述 | 示例值 |
Content-Type | String | 是 | 請求類型:application/json | application/json |
Authorization | String | 是 | API-Key | Bearer OS-d1**2a |
Body參數
參數 | 類型 | 必填 | 描述 | 示例值 |
document.url | String | 否 | 文檔URL地址,支持HTTP、HTTPS協議(保證可以外網無狀態下載) 與document.content二選一即可。 | http://opensearch-shanghai.oss-cn-shanghai.aliyuncs.com/chatos/***/file-parser/samples/GB10767.pdf |
document.content | String | 否 | 文檔內容,用Base64Encode編碼 與document.url二選一即可。 | "aGVsbG8gd29ybGQ=" |
document.file_name | String | 否 | 文件名,如果為空從URL推斷,如果URL為空需要顯式指定。 | test.pdf |
document.file_type | String | 否 | 文件類型,如果為空從file_name的后綴推斷,如果無法推斷需要顯式指定,如:pdf、doc、docx。 | |
output.image_storage | String | 否 | 圖片存儲方式
| url |
strategy.enable_semantic | Boolean | 否 | 是否開啟語義結構提取,默認為false;開啟后返回的markdown層次結構更準確,但是耗時會大幅提升,usage計費項會多出semantic_token_count項。默認超時400s,超長文檔(>100頁)可能會超時并降級為關閉結構提取。不支持html、ppt及pptx格式輸入。 | false |
返回參數
參數 | 類型 | 描述 | 示例值 |
result.status | String | 任務狀態:
| PENDING |
result.error | String | status=FAIL時的錯誤信息內容,正常情況為空。 | 文檔解密失敗 |
result.data | Object | 文檔解析的結果。 | markdown |
result.data.content | String | 文檔解析結果-文檔內容
| "XXX" |
result.data.content_type | String | 文檔解析結果-內容格式
| markdown |
result.data.page_num | Int | 文檔解析結果-文檔頁數。 | 15 |
request_id | String | 系統對一次API調用賦予的唯一標識。 | B4AB89C8-B135-****-A6F8-2BAB801A2CE4 |
latency | Float/Int | 請求耗時,單位ms。 | 10 |
usage | Object | 本次調用產生的計量信息。 | "usage": { "token_count": 123, "table_count": 5, "image_count": 6, "semantic_token_count":3068 } |
usage.token_count | Int | 文檔中字符個數。 | 1234 |
usage.table_count | Int | 文檔中表格個數。 | 5 |
usage.image_count | Int | 文檔中圖片個數。 | 6 |
usage.semantic_token_count | Int | 語義提取模型輸入字符個數。 | 3068 |
Curl請求示例
curl --location 'http://****shanghai.opensearch.aliyuncs.com/v3/openapi/workspaces/default/document-analyze/ops-document-analyze-001/sync/' \
--header 'Authorization: Bearer 您的API Key' \
--header 'Content-Type: application/json' \
--data '{
"document":{
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241018/jahnyn/%E8%A7%A3%E6%9E%90%E6%B5%8B%E8%AF%95.doc"
},
"output" :{
"image_storage":"base64"
},
"strategy": {
"enable_semantic":true
}
}'
響應示例
正常響應示例
{
"request_id": "27F9CEC3-9052-****-83FF-E7957B689D04",
"latency": 13.0,
"http_code": 200,
"result": {
"status": "SUCCESS",
"data": {
"content": "Provided proper attribution is provided, Alibaba hereby grants permission to reproduce the tables and figures in this paper solely for use in journalistic or scholarly works....",
"content_type": "markdown",
"page_num": 15
}
},
"usage": {
"token_count": 31867,
"table_count": 4,
"image_count": 8,
"semantic_token_count":3068
}
}
異常響應示例
在訪問請求出錯的情況下,輸出的結果中會通過code和message指明出錯原因。
{
"request_id": "6F33AFB6-A35C-****-AFD2-9EA16CCF4383",
"latency": 2.0,
"code": "InvalidParameter",
"http_code": 400,
"message": "JSON parse error: Cannot deserialize value of type `ImageStorage` from String \\"xxx\\"
}
狀態碼說明
HTTP 狀態碼 | 錯誤碼 | 描述 |
200 | - | 請求成功,包括任務失敗場景,實際任務狀態需從result.status中判斷 |
404 | BadRequest.TaskNotExist | 任務不存在 |
400 | InvalidParameter | 不合法請求 |
500 | InternalServerError | 內部錯誤 |
更多狀態碼說明,請參見狀態碼說明。