ExtractStructuredPage
文字、擷取、結構化資料
描述
擷取單一 PDF 頁面,並把它的結構化文字模型序列化為 schema 2 JSON、語意 XHTML 或表格 CSV
模型結合真實結構樹順序與屬性、明確的幾何後備、段落、帶樣式的 span,以及含空白或合併儲存格的表格
語法
Delphi
Function TPDFlib.ExtractStructuredPage(Page, Format,
Options: Integer): WideString;ActiveX
Function PDFlib::ExtractStructuredPage(Page As Long, Format As Long,
Options As Long) As StringDLL
const wchar_t* DLExtractStructuredPage(int InstanceID, int Page,
int Format, int Options);
const char* DLExtractStructuredPageA(int InstanceID, int Page,
int Format, int Options);參數
| Page | 頁碼(1 起算) |
|---|---|
| Format | PDF_STRUCTURED_TEXT_JSON (0)、PDF_STRUCTURED_TEXT_XHTML (1) 或 PDF_STRUCTURED_TEXT_CSV (2) |
| Options | 零,或 PDF_STRUCTURED_TEXT_INCLUDE_STYLES (1),在 JSON 與 XHTML 中包含字型、大小、顏色與垂直對齊 |
JSON 層級結構
{
"version": 2,
"page": 1,
"width": 612,
"height": 792,
"readingOrderSource": "tagged",
"structureComplete": true,
"warnings": [],
"blocks": [
{
"type": "paragraph",
"nodeId": 3,
"source": "tagged",
"confidence": 1,
"furniture": "none",
"furnitureSource": "",
"bbox": [
40,
50,
300,
70
],
"text": "Example paragraph",
"lines": [
{
"spans": []
}
]
}
],
"semantics": []
}頁面中繼資料包括 readingOrderSource、structureComplete 與 warnings;讀取來源有 tagged、mixed、geometric 或 geometric-columns
區塊包含 nodeId、source、confidence、furniture、furnitureSource 與 bbox;span 在輸出文字之外保留 originalText、contentEvent、nodeId 與 artifact
表格中繼資料包括 logicalTable、logicalTableId、fragment 與接續旗標;列帶有 logicalRow 與 repeatedHeader
每個儲存格記錄 rowSpan、columnSpan、anchorRow、anchorColumn、covered、header、mergeSource 與 confidence;空白的標記儲存格會保留,未知的儲存格邊界為 null
semantics 陣列保留有序的完整樹 begin、content 與 end 事件、穩定的節點與父節點 ID、已解析與原始角色、命名空間、語言、替代文字、ActualText 存在與否、儲存格屬性,以及頁面、串流、MCID 或物件參照
structureComplete 描述走訪與內容繫結的涵蓋情形;它不是標記或無障礙認證
傳回值
JSON 與 XHTML 傳回完整獨立的文件;XHTML 以表格 span 表示合併儲存格,並公開區塊來源中繼資料
CSV 只回傳表格儲存格,頁面沒有表格時為空;合併儲存格把文字放在錨點儲存格,被涵蓋的儲存格留空
請求無效或萃取失敗時傳回空字串
備註
分析使用 SetStructuredTextOptions,與各格式專屬的 Options 分開;讀取來源與後備警告請看 GetLastStructuredTextDiagnostics
內容繫結完整時,真實標籤樹順序優先;未解析或不明確的內容會以 mixed 或 geometric 後備保留萃取文字,未知自訂角色不會從名稱猜測
marked-content 繫結會區分頁面串流與巢狀 Form XObject 呼叫路徑;共用標記 Form 出現次數的語意順序不明確時會予以揭露,而不是編造順序
ActualText 取代會在 JSON span 中保留來源文字;物件參照保留為語意中繼資料,不會從中萃取註解文字
幾何表格偵測要求對齊的多儲存格列;選配的合併推論與分欄偵測仍屬啟發式方法
外接框使用 PDF 點的左上角頁面座標;片段可保留其完整的來源文字執行邊界
擷取會保留所選頁面與開啟中的寫入器標籤堆疊;目前未儲存的寫入器標籤會在不關閉標籤、不結束文件的狀態下納入輸出
DLL 傳回指標在下一次同一執行個體的字串傳回呼叫之前保持有效
LastErrorCode 為 111 表示頁面、格式或選項無效,515 表示萃取失敗
另請參閱
ExtractStructuredDocument, ExtractPageTextBlocks, GetPageText