百度文件解析 Skill
基於百度智慧文件分析平臺 API,提供文件解析能力。
功能概述
- 支援對 doc、pdf、圖片、xlsx 等 18 種格式文件進行解析
- 輸出文件的版面、表格、閱讀順序、標題層級、旋轉角度等資訊
- 支援中、英、日、韓、法等 20 餘種語言型別
- 可返回 Markdown 格式內容,將非結構化資料轉化為易於處理的結構化資料
- 識別準確率可達 90% 以上
- 文件分塊(適用於 RAG 場景)
適用場景
當用戶需要:
- 解析 PDF、Word、Excel 等格式文件
- 從文件中提取文本內容
- 識別並提取表格資料
- 分析文件結構(標題層級、章節、版面佈局)
- 對掃描件進行 OCR 文字識別
- 將文件分塊用於 RAG 應用
免費資源領取和計費說明
百度智慧文件分析平臺 領取免費測試資源
百度智慧文件分析平臺計費與購買方式
| 使用者型別 |
免費額度 |
| 個人實名認證使用者 |
200 頁 |
| 企業實名認證使用者 |
1000 頁 |
API 配置
額度獲取方式
您可通過百度智慧雲平臺獲取免費額度與購買呼叫資源
環境變數(必須)
百度智慧文件分析平臺 領取免費測試資源
使用前請設定以下環境變數:
export BAIDU_DOC_AI_API_KEY="your_api_key"
export BAIDU_DOC_AI_SECRET_KEY="your_secret_key"
認證方式
通過 API Key 和 Secret Key 獲取 access_token,有效期 30 天。
支援格式
版式文件:pdf, jpg, jpeg, png, bmp, tif, tiff, ofd, ppt, pptx
流式文件:doc, docx, txt, xls, xlsx, wps, html, mhtml
支援語言
CHN_ENG(中英文)、JAP(日語)、KOR(韓語)、FRE(法語)、SPA(西班牙語)、POR(葡萄牙語)、GER(德語)、ITA(義大利語)、RUS(俄語)、DAN(丹麥語)、DUT(荷蘭語)、MAL(馬來語)、SWE(瑞典語)、IND(印尼語)、POL(波蘭語)、ROM(羅馬尼亞語)、TUR(土耳其語)、GRE(希臘語)、HUN(匈牙利語)、THA(泰語)、VIE(越南語)、ARA(阿拉伯語)、HIN(印地語)
使用方式
python3 scripts/baidu_doc_parser.py --file_data <檔案的base64編碼>
python3 scripts/baidu_doc_parser.py --file_url <檔案公網URL>
API 介面
文件解析 API 服務為非同步介面,需要先呼叫提交請求介面獲取 task_id,然後呼叫獲取結果介面進行結果輪詢。
提交請求介面
- HTTP 方法:POST
- 請求 URL:
https://aip.baidubce.com/rest/2.0/brain/online/v2/parser/task?access_token={token}
- Content-Type:
application/x-www-form-urlencoded
獲取結果介面
- HTTP 方法:POST
- 請求 URL:
https://aip.baidubce.com/rest/2.0/brain/online/v2/parser/task/query?access_token={token}
- Content-Type:
application/x-www-form-urlencoded
- 請求引數:
task_id(必填,提交請求時返回的 task_id)
請求引數
檔案引數(必選,二選一)
| 引數 |
必選 |
型別 |
說明 |
file_data |
和 file_url 二選一 |
string |
檔案 Base64 編碼資料。版式文件:pdf, jpg, jpeg, png, bmp, tif, tiff, ofd, ppt, pptx;流式文件:doc, docx, txt, xls, xlsx, wps, html, mhtml。文件大小不超過 50M,PDF 最大支援 2000 頁。若文件大小超過 50M,須從 file_url 方式上傳。優先順序:file_data > file_url |
file_url |
和 file_data 二選一 |
string |
檔案資料 URL,長度不超過 1024 位元組,支援單個 URL 傳入。PDF 文件大小不超過 300MB,非 PDF 不超過 50M,PDF 最大支援 2000 頁。請注意關閉 URL 防盜鏈 |
file_name |
是 |
string |
檔名,請保證檔名字尾正確,例如 "1.pdf" |
核心功能引數
| 引數 |
必選 |
型別 |
可選值範圍 |
說明 |
recognize_formula |
否 |
bool |
True/False |
是否對版式型別文件進行公式識別 |
analysis_chart |
否 |
bool |
True/False |
是否對統計圖表進行解析 |
angle_adjust |
否 |
bool |
True/False |
是否對圖片進行角度矯正 |
parse_image_layout |
否 |
bool |
True/False |
是否返回文件中的圖片位置資訊 |
語言與格式引數
| 引數 |
必選 |
型別 |
說明 |
language_type |
否 |
string |
識別語種類型,預設為 CHN_ENG(中英文) |
switch_digital_width |
否 |
string |
是否對數字進行全半形轉換,預設為 auto。可選:auto(不轉換)、half(半形輸出)、full(全形輸出) |
html_table_format |
否 |
bool |
是否將識別出的表格轉換為 HTML 格式返回,default=True |
文件分塊引數
return_doc_chunks 為字典型別,用於返回文件切分後的片段資料(按語義、字數、標點):
| 引數 |
必選 |
型別 |
預設值 |
說明 |
switch |
否 |
bool |
False |
是否進行文件內容切分 |
split_type |
否 |
str |
chunk |
切分方式:chunk(按 chunk_size 來切)/ mark(按 separators 來切) |
separators |
否 |
list |
['。',';','!','?',';','!','?'] |
切分標點 |
chunk_size |
否 |
int |
-1 |
切分塊的大小,-1 表示按照語義自動切分,不限定塊的大小 |
返回結構
提交請求返回
| 欄位 |
型別 |
說明 |
log_id |
uint64 |
唯一的 log id,用於問題定位 |
error_code |
int |
錯誤碼 |
error_msg |
string |
錯誤描述資訊 |
result.task_id |
string |
該請求生成的 task_id,後續使用該 task_id 獲取審查結果 |
獲取結果返回
| 欄位 |
型別 |
說明 |
log_id |
uint64 |
唯一的 log id |
error_code |
int |
錯誤碼 |
error_msg |
string |
錯誤描述資訊 |
result.task_id |
string |
任務 ID |
result.status |
string |
任務狀態:pending(排隊中)、processing(執行中)、success(成功)、failed(失敗) |
result.task_error |
string |
解析報錯資訊,包含任務失敗、額度不夠 |
result.markdown_url |
string |
文件解析結果的 Markdown 格式連結,連結有效期 30 天 |
result.parse_result_url |
string |
文件解析結果的 BOS 連結(JSON),連結有效期 30 天 |
解析結果 JSON 結構(parse_result_url)
頂層結構
| 欄位 |
型別 |
說明 |
file_name |
string |
文件名稱 |
file_id |
string |
文件 ID |
pages |
list |
檔案單頁解析內容 |
chunks |
list |
檔案內容切分結果(return_doc_chunks.switch=True 時有值) |
頁面物件(pages[])
| 欄位 |
型別 |
說明 |
page_id |
string |
頁碼 ID |
page_num |
int |
頁碼數 |
text |
string |
當前頁的所有純文字內容 |
layouts |
list |
頁面內容版式分析的結果 |
tables |
list |
頁面表格解析結果 |
images |
list |
頁面中圖片解析結果 |
meta |
dict |
頁元資訊 |
頁面元資訊(meta)
| 欄位 |
型別 |
說明 |
page_width |
int |
頁面寬度 |
page_height |
int |
頁面高度 |
is_scan |
bool |
是否掃描件 |
page_angle |
int |
頁面傾斜角度 |
page_type |
string |
頁面屬性:text(正文)、contents(目錄)、appendix(附錄)、others(其他) |
sheet_name |
string |
Excel 的 sheet 名 |
版面元素(layouts[])
| 欄位 |
型別 |
說明 |
layout_id |
string |
layout 元素唯一標誌,格式 "xxxxx-layout-{global_layout_index}" |
text |
string |
layout 對應的文本內容。注:當 type 為 table/image 時該欄位為空,需根據 type 和 layout_id 分別到 tables/images 欄位裡找到對應內容 |
position |
list |
元素在頁面中的位置 [x, y, w, h],左上角和寬高 |
type |
string |
版面元素型別(見下表) |
sub_type |
string |
版面元素子型別(見下表) |
parent |
string |
標題層級樹中父節點的 layout_id,若為一級標題則 parent 為 "root" |
children |
list |
標題層級樹中子節點的 layout_id 列表 |
版面型別(type):
| 型別 |
說明 |
para |
段落 |
table |
表格 |
image |
文件中的插圖 |
head_tail |
頁面頂部(頁首/頁尾) |
contents |
目錄 |
seal |
印章 |
title |
標題 |
formula |
公式 |
子型別(sub_type):
表格物件(tables[])
| 欄位 |
型別 |
說明 |
layout_id |
string |
與 layouts 中 type 為 table 的元素的 layout ID 對應 |
markdown |
string |
表格內容的 Markdown 形式 |
table_title_id |
list |
表格標題對應的 layout_id,預設為 null |
position |
list |
邊框資料 [x, y, w, h](以頁面座標為原點),版式格式時有效 |
cells |
list |
單元格的內版面資訊,layout 型別為表格時有值 |
matrix |
list |
二位陣列,表示表格內佈局位置資訊,每個元素對應 cells 列表中元素的索引 |
merge_table |
string |
跨頁表格標記:begin(開始)、inner(中間,超過兩頁)、end(結束);非跨頁表格該欄位為空 |
圖片物件(images[])
| 欄位 |
型別 |
說明 |
layout_id |
string |
與 layouts 中 type 為 image 的元素的 layout ID 對應 |
image_title_id |
list |
圖片標題對應的 layout_id,預設為 null |
position |
list |
邊框資料 [x, y, w, h] |
content_layouts |
list |
圖片的內版面資訊 |
data_url |
string |
圖片儲存連結 |
image_description |
string |
對統計圖表進行內容解析和描述,輸出結果為 JSON 字串 |
分塊物件(chunks[])
| 欄位 |
型別 |
說明 |
chunk_id |
string |
切片的 ID |
content |
string |
切片的內容 |
type |
string |
切片型別:text 或 table |
meta.title |
list |
chunk 所屬的多級標題內容 |
meta.position |
list |
chunk 的位置,根據分塊演算法有可能 chunk 跨多個頁 |
meta.box |
list |
chunk 的位置座標 |
meta.page_num |
int |
chunk 內容所在頁數 |
API 特性
非同步處理流程
- 呼叫提交請求介面 → 獲取
task_id
- 通過
task_id 呼叫獲取結果介面輪詢
輪詢建議
- 提交請求後 5~10 秒開始輪詢
- 輪詢間隔:5 秒
- 最大輪詢時間:300 秒
QPS 限制
- 提交請求介面:2 QPS
- 獲取結果介面:10 QPS
檔案限制
| 限制項 |
說明 |
| 檔案大小(file_data) |
≤ 50MB,超過 50M 須使用 file_url |
| 檔案大小(file_url) |
PDF ≤ 300MB,非 PDF ≤ 50MB |
| URL 長度 |
≤ 1024 位元組 |
| 頁數限制 |
PDF ≤ 2000 頁 |
| 優先順序 |
file_data > file_url(同時存在時 file_url 欄位失效) |
錯誤處理
常見錯誤碼:
| 錯誤碼 |
說明 |
解決方案 |
| 110/111 |
access_token 無效或過期 |
重新獲取 access_token |
| 216200 |
檔案或 URL 為空 |
提供 file_data 或 file_url |
| 216201 |
檔案格式錯誤 |
檢查檔案格式是否支援 |
| 216202 |
檔案大小超限 |
縮減檔案大小 |
| 282000 |
內部錯誤 |
重試或聯絡技術支援 |
| 282003 |
缺少必要引數 |
檢查必填引數 |
| 282007 |
任務不存在 |
檢查 task_id 是否正確 |
| 282018 |
服務繁忙 |
降低請求頻率 |
完整錯誤碼參見 references/error_codes.md
線上除錯
可在 示例程式碼中心 申請試該介面,可進行簽名驗證、檢視線上呼叫的請求內容和返回結果、示例程式碼的自動生成。
指令碼
scripts/baidu_doc_parser.py:文件解析主程式,支援命令列快速呼叫
參考文件
references/parameters.md:完整 API 引數與返回結構詳解
references/error_codes.md:完整錯誤碼參考
references/apikey-fetch.md:API Key 配置指南
相關連結