共用方式為


文件智慧服務版面配置模型

重要

  • 文件智慧服務公開預覽版本可讓您搶先存取正在積極開發的功能。
  • 根據使用者意見反應,功能、方法和流程在正式發行 (GA) 前可能有所變更。
  • 文件智慧服務用戶端程式庫的公開預覽版本預設為 REST API 版本 2024-02-29-preview
  • 公開預覽版本 2024-02-29-preview 目前僅適用於下列 Azure 區域:
  • 美國東部
  • 美國西部 2
  • 西歐

此內容適用於:勾選記號 v4.0 (預覽版) | 舊版:blue-checkmark v3.1 (GA) blue-checkmark v3.0 (GA) blue-checkmark v2.1 (GA)

此內容適用於:勾選記號 v3.1 (GA) | 最新版本:purple-checkmark v4.0 (預覽版) | 舊版:blue-checkmark v3.0 blue-checkmark v2.1

此內容適用於:勾選記號 v3.0 (GA) | 最新版本:purple-checkmark v4.0 (預覽版) purple-checkmark v3.1 | 舊版:blue-checkmark v2.1

此內容適用於:勾選記號 v2.1 | 最新版本:blue-checkmark v4.0 (預覽版)

文件智慧服務版面配置模型是在文件智慧服務雲端中提供以進階機器學習為基礎的文件分析 API。 它能讓您採用各種格式的文件,然後傳回文件的結構化資料表示法。 其結合我們功能強大的進階版光學字元辨識 (OCR) 與深度學習模型,能夠擷取文字、資料表、選取標記和文件結構。

文件版面配置分析

文件結構版面配置分析是分析文件以擷取相關區域及其相互關聯性的程序。 目標是從頁面擷取文字和結構化元素,以建立更好的語意理解模型。 文件版面配置中有兩種類型的角色:

  • 幾何角色:文字、資料表、圖文框和選取記號是幾何角色的範例。
  • 邏輯角色:標題、區段標題和頁尾是文字邏輯角色的範例。

以下圖例顯示頁面範例影像中的一般元件。

文件版面配置範例的圖例。

開發選項

文件智慧服務 v4.0 (2024-02-29-preview、2023-10-31-preview) 支援下列工具、應用程式和程式庫:

功能 資源 Model ID
版面配置模型 文件智慧服務工作室
REST API
C# SDK
Python SDK
JAVA SDK
JavaScript SDK
prebuilt-layout

文件智慧服務 v3.1 支援下列工具、應用程式和程式庫:

功能 資源 Model ID
版面配置模型 文件智慧服務工作室
REST API
C# SDK
Python SDK
JAVA SDK
JavaScript SDK
prebuilt-layout

文件智慧服務 v3.0 支援下列工具、應用程式和程式庫:

功能 資源 Model ID
版面配置模型 文件智慧服務工作室
REST API
C# SDK
Python SDK
JAVA SDK
JavaScript SDK
prebuilt-layout

文件智慧服務 v2.1 支援下列工具、應用程式和程式庫:

功能 資源
版面配置模型 文件智慧服務標記工具
REST API
用戶端程式庫 SDK
文件智慧服務 Docker 容器

輸入需求

  • 若要得到最佳結果,請為每個文件提供一張清晰的照片或高畫質的掃描檔案。

  • 支援的檔案格式:

    模型 PDF 影像:
    JPEG/JPG、PNG、BMP、TIFF、HEIF
    Microsoft Office:
    Word (DOCX)、Excel (XLSX)、PowerPoint (PPTX)、HTML
    參閱
    版面配置 ✔ (2024-02-29-preview, 2023-10-31-preview)
    一般文件
    預建
    自訂擷取
    自訂分類 ✔ (2024-02-29-preview)
  • 若使用 PDF 和 TIFF,最多可處理 2000 頁 (若使用免費層訂閱,則只會處理前兩頁)。

  • 對於付費 (S0) 層,分析文件的檔案大小為 500 MB,對於免費 (F0) 層,則為 4 MB。

  • 影像維度必須介於 50 x 50 像素和 10,000 x 10,000 像素之間。

  • 如果您的 PDF 有密碼鎖定,則必須先移除鎖定才能提交。

  • 針對 1024 x 768 像素影像的擷取文字高度下限為 12 像素。 此尺寸在 150 點/英吋 (DPI) 時大約相當於 8 點文字。

  • 針對自訂模型定型,自訂範本模型的定型資料頁數上限為 500,而自訂神經網路模型的上限則為 50,000。

    • 針對自訂擷取模型定型,範本模型的定型資料大小總計為 50 MB,而神經模型的大小總計則為 1G-MB。

    • 針對自訂分類模型定型,定型資料的大小總計為 1GB (上限為 10,000 頁)。

  • 支援的檔案格式有:JPEG、PNG、PDF、TIFF。
  • 支援的頁數:若為 PDF 和 TIFF,最多可處理 2,000 頁。 若是免費層訂閱者,只會處理前兩頁。
  • 支援的檔案大小:檔案大小必須小於 50 MB,尺寸至少 50 x 50 像素,最大可到 10,000 x 10,000 像素。

開始使用版面配置模型

了解如何使用文件智慧服務,從文件中擷取包括文字、資料表、資料表標題、選取標記和結構資訊在內的資料。 您需要下列資源:

Azure 入口網站中金鑰與端點位置的螢幕擷取畫面。

注意

文件智慧服務工作室有 v3.0 API 及更新版本可供使用。

使用 Document Intelligence Studio (英文) 處理的文件範例

螢幕擷取畫面顯示在文件智慧服務工作室中處理報紙頁面的版本配置。

  1. 在文件智慧服務工作室首頁上,選取 [版面配置]

  2. 您可以分析範例文件,或上傳您自己的檔案。

  3. 選取 [執行分析] 按鈕,如有必要,設定 [分析選項]

    文件智慧服務工作室中 [執行分析] 和 [分析選項] 按鈕的螢幕擷取畫面。

文件智慧服務範例標籤工具

  1. 瀏覽至文件智慧服務範例工具 (英文)。

  2. 在範例工具首頁上,選取 [Use Layout to get text, tables and selection marks] (使用版面配置來取得文字、資料表和選取標記)

    文件智慧服務版面配置程序的連線設定螢幕擷取畫面。

  3. 在 [文件智慧服務端點] 欄位中,貼上您透過文件智慧服務訂用帳戶取得的端點。

  4. 在 [金鑰] 欄位中,貼上您從文件智慧服務資源取得的金鑰。

  5. 在 [來源] 欄位中,從下拉式功能表中選取 [URL],您可以使用我們的文件範例:

  6. 選取 [Run Layout] (執行版面配置)。 文件智慧服務範例標籤工具會呼叫 Analyze Layout API 以分析文件。

    [版面配置] 下拉式清單視窗的螢幕擷取畫面。

  7. 檢視結果:查看擷取的醒目提示文字、偵測到的選取項目標記和偵測到的資料表。

    文件智慧服務範例標籤工具的連線設定螢幕擷取畫面。

支援的語言和地區設定

如需支援語言的完整清單,請參閱我們的語言支援—文件分析模型頁面。

文件智慧服務 v2.1 支援下列工具、應用程式和程式庫:

功能 資源
版面配置 API

資料擷取

版面配置模型會從文件中擷取文字、選取項目標記、表格、段落及段落類型 (roles)。

注意

版本 2024-02-29-preview2023-10-31-preview 和更新版本支援 Microsoft Office (DOCX、XLSX、PPTX) 和 HTML 檔案。 不支援下列功能:

  • 每個頁面物件沒有角度、寬度/高度和單位。
  • 針對偵測到的每個物件,沒有週框多邊形或週框區域。
  • 不支援頁面範圍 (pages) 作為參數。
  • 沒有 lines 物件。

頁面

頁面集合是文件內的頁面清單。 每個頁面都會在文件內循序表示,並包含方向角度,指出頁面是否旋轉,以及寬度和高度 (以像素表示維度)。 會計算模型輸出中的頁面單位,如下所示:

檔案格式 計算的頁面單位 總頁數
影像 (JPEG/JPG、PNG、BMP、HEIF) 每個影像 = 1 個頁面單位 影像總計
PDF PDF 每頁 = 1 個頁面單位 PDF 總頁數
TIFF TIFF = 1 個頁面單位中的每個映像 TIFF 中的影像總數
Word (DOCX) 最多 3,000 個字元 = 1 個頁面單位,不支援內嵌或連結的影像 總頁數 (每頁最多 3,000 個字元)
Excel (XLSX) 每個工作表 = 1 個頁面單位,不支援內嵌或連結的影像 工作表總計
PowerPoint (PPTX) 每張投影片 = 1 個頁面單位,不支援內嵌或連結的影像 投影片總計
HTML 最多 3,000 個字元 = 1 個頁面單位,不支援內嵌或連結的影像 總頁數 (每頁最多 3,000 個字元)
"pages": [
    {
        "pageNumber": 1,
        "angle": 0,
        "width": 915,
        "height": 1190,
        "unit": "pixel",
        "words": [],
        "lines": [],
        "spans": []
    }
]
# Analyze pages.
for page in result.pages:
    print(f"----Analyzing layout from page #{page.page_number}----")
    print(
        f"Page has width: {page.width} and height: {page.height}, measured with unit: {page.unit}"
    )
# Analyze pages.
for page in result.pages:
    print(f"----Analyzing layout from page #{page.page_number}----")
    print(f"Page has width: {page.width} and height: {page.height}, measured with unit: {page.unit}")

從文件擷取選取的頁面

若為大型的多頁文件,請使用 pages 查詢參數來表示文字擷取的特定頁碼或頁面範圍。

段落

版面配置模型會擷取 paragraphs 集合中所有已識別的文字區塊,以做為 analyzeResults 底下的最上層物件。 此集合中的每個輸入都代表一個文字區塊,並包含做為 content 的擷取文字和週框 polygon 座標。 span 資訊會指向包含文件全文檢索的最上層 content 屬性的文字片段。


"paragraphs": [
    {
        "spans": [],
        "boundingRegions": [],
        "content": "While healthcare is still in the early stages of its Al journey, we are seeing pharmaceutical and other life sciences organizations making major investments in Al and related technologies.\" TOM LAWRY | National Director for Al, Health and Life Sciences | Microsoft"
    }
]

段落角色

頁面物件偵測以新的機器學習為基礎,擷取如標題、區段標題、頁首、頁尾等邏輯角色。 文件智慧服務版面配置模型會指派 paragraphs 集合中的特定文字區塊搭配模型所預測的特殊角色或類型。 最適合使用具有非結構化文件的段落角色,以協助瞭解已擷取內容的版面配置來進行更豐富的語意分析。 下列段落角色受到支援:

預測的角色 說明 支援的檔案類型
title 頁面中的主要標題 pdf,image,docx,pptx,xlsx,html
sectionHeading 頁面上的一或多個子標題 pdf,image,docx,xlsx,html
footnote 接近頁面底部的文字 pdf,image
pageHeader 接近頁面上緣的文字 pdf,image,docx
pageFooter 接近頁面下緣的文字 pdf,image,docx,pptx,xlsx,html
pageNumber 頁碼 pdf,image
{
    "paragraphs": [
                {
                    "spans": [],
                    "boundingRegions": [],
                    "role": "title",
                    "content": "NEWS TODAY"
                },
                {
                    "spans": [],
                    "boundingRegions": [],
                    "role": "sectionHeading",
                    "content": "Mirjam Nilsson"
                }
    ]
}

文字,行和字

文件智慧服務中的文件版面配置模型會將印刷和手寫樣式的文字擷取為 lineswords。 若也偵測到指向相關文字的範圍,styles 集合便會包含任何手寫樣式的文字行。 此功能適用於支援的手寫語言

對於 Microsoft Word、Excel、PowerPoint 和 HTML,文件智慧服務 2024-02-29-preview 和 2023-10-31-preview 版面配置模型會依目前方式擷取所有內嵌文字。 文字會擷取為單字和段落。 不支援內嵌的影像。

"words": [
    {
        "content": "While",
        "polygon": [],
        "confidence": 0.997,
        "span": {}
    },
],
"lines": [
    {
        "content": "While healthcare is still in the early stages of its Al journey, we",
        "polygon": [],
        "spans": [],
    }
]
# Analyze lines.
for line_idx, line in enumerate(page.lines):
    words = line.get_words()
    print(
        f"...Line # {line_idx} has word count {len(words)} and text '{line.content}' "
        f"within bounding polygon '{format_polygon(line.polygon)}'"
    )

    # Analyze words.
    for word in words:
        print(
            f"......Word '{word.content}' has a confidence of {word.confidence}"
        )
# Analyze lines.
if page.lines:
    for line_idx, line in enumerate(page.lines):
    words = get_words(page, line)
    print(
        f"...Line # {line_idx} has word count {len(words)} and text '{line.content}' "
        f"within bounding polygon '{line.polygon}'"
    )

    # Analyze words.
    for word in words:
        print(f"......Word '{word.content}' has a confidence of {word.confidence}")

手寫樣式的文字行

回應會包含辨別每個文字行是否為手寫樣式的分類,以及信賴度分數。 如需詳細資訊, 請參閱 手寫語言支援 (部分機器翻譯) 下列範例顯示 JSON 程式碼片段範例。

"styles": [
{
    "confidence": 0.95,
    "spans": [
    {
        "offset": 509,
        "length": 24
    }
    "isHandwritten": true
    ]
}

如果您啟用 字型/樣式附加元件功能,也會取得 styles 物件的字型/樣式結果。

選取標記

版面配置模型也會從文件擷取選取標記。 擷取的選取項目標記會出現在每個頁面的 pages 集合中。 這包含週框 polygonconfidence 和選取項目 state (selected/unselected)。 文字表示法 (亦即,:selected::unselected) 也包含在起始索引 (offset)和參考包含文件全文最上層的 content 屬性的 length

{
    "selectionMarks": [
        {
            "state": "unselected",
            "polygon": [],
            "confidence": 0.995,
            "span": {
                "offset": 1421,
                "length": 12
            }
        }
    ]
}
# Analyze selection marks.
for selection_mark in page.selection_marks:
    print(
        f"Selection mark is '{selection_mark.state}' within bounding polygon "
        f"'{format_polygon(selection_mark.polygon)}' and has a confidence of {selection_mark.confidence}"
    )
# Analyze selection marks.
if page.selection_marks:
    for selection_mark in page.selection_marks:
        print(
            f"Selection mark is '{selection_mark.state}' within bounding polygon "
            f"'{selection_mark.polygon}' and has a confidence of {selection_mark.confidence}"
        )

資料表

對於處理包含大量資料 (通常是資料表格式) 的文件,擷取資料表是一大關鍵需求。 版面配置模型會將資料表擷取在 JSON 輸出的 pageResults 區段中。 擷取的資料表資訊包括資料行與資料列數目、資料列範圍和資料行範圍。 每個儲存格及其週框多邊形會連同此區域是否辨識為 columnHeader 的資訊一起輸出。 模型支援擷取旋轉的資料表。 每個資料表儲存格都包含資料列和資料行索引,以及週框多邊形座標。 針對儲存格文字,模型會輸出包含起始索引 (offset) 的 span 資訊。 模型也會輸出包含文件全文的最上層內容 length

以下是要在使用 Document Intelligence bale 擷取功能時考慮的幾個因素:

  • 您要擷取以資料表形式呈現的資料嗎?資料表結構是否有意義?

  • 如果資料不是資料表格式,則資料是否可以放入二維方格中?

  • 您的資料表是否跨越多個頁面? 如果是的話,為避免將所有頁面加上標籤,請先將 PDF 分割成多個頁面,然後再將其傳送至文件智慧服務。 分析之後,再將頁面處理成單一資料表。

  • 如果您要建立自訂模型,則請參閱標記為資料表。 動態資料表中每個資料行的資料列數目可變動。 固定資料表中每個資料行的資料列數目不可變動。

注意

如果輸入檔為 XLSX,則不支援資料表。

{
    "tables": [
        {
            "rowCount": 9,
            "columnCount": 4,
            "cells": [
                {
                    "kind": "columnHeader",
                    "rowIndex": 0,
                    "columnIndex": 0,
                    "columnSpan": 4,
                    "content": "(In millions, except earnings per share)",
                    "boundingRegions": [],
                    "spans": []
                    },
            ]
        }
    ]
}

# Analyze tables.
for table_idx, table in enumerate(result.tables):
    print(
        f"Table # {table_idx} has {table.row_count} rows and "
        f"{table.column_count} columns"
    )
    for region in table.bounding_regions:
        print(
            f"Table # {table_idx} location on page: {region.page_number} is {format_polygon(region.polygon)}"
        )
    for cell in table.cells:
        print(
            f"...Cell[{cell.row_index}][{cell.column_index}] has text '{cell.content}'"
        )
        for region in cell.bounding_regions:
            print(
                f"...content on page {region.page_number} is within bounding polygon '{format_polygon(region.polygon)}'"
            )
if result.tables:
    for table_idx, table in enumerate(result.tables):
        print(f"Table # {table_idx} has {table.row_count} rows and " f"{table.column_count} columns")
        if table.bounding_regions:
            for region in table.bounding_regions:
                print(f"Table # {table_idx} location on page: {region.page_number} is {region.polygon}")
        # Analyze cells.
        for cell in table.cells:
            print(f"...Cell[{cell.row_index}][{cell.column_index}] has text '{cell.content}'")
            if cell.bounding_regions:
                for region in cell.bounding_regions:
                print(f"...content on page {region.page_number} is within bounding polygon '{region.polygon}'")

註釋 (僅在 2023-02-28-preview API 中可供使用。)

版面配置模型會擷取文件中的註釋,例如打勾和打叉記號。 回應包含註釋類型,以及信賴度分數和週框多邊形。

    {
    "pages": [
    {
        "annotations": [
        {
            "kind": "cross",
            "polygon": [...],
            "confidence": 1
        }
        ]
    }
    ]
}

輸出為 Markdown 格式

版面配置 API 可以輸出 Markdown 格式的擷取文字。 使用 outputContentFormat=markdown 指定輸出格式為 Markdown。 Markdown 內容會輸出為 content 區段的一部分。

document_intelligence_client = DocumentIntelligenceClient(endpoint=endpoint, credential=AzureKeyCredential(key))
poller = document_intelligence_client.begin_analyze_document(
    "prebuilt-layout",
    AnalyzeDocumentRequest(url_source=url),
    output_content_format=ContentFormat.MARKDOWN,
)

圖文框

文件中的圖文框 (圖表、影像) 在補充和增強文字內容上扮演著重要的角色,提供有助於了解複雜資訊的視覺效果表示法。 版面配置模型所偵測到的圖文框物件具有關鍵屬性,例如 boundingRegions (圖文框在文件頁面上的空間位置,包括頁碼和勾勒圖形邊界的多邊形座標)、spans (詳細說明與圖文框相關的文字範圍,指定它們在文件文字中的偏移量和長度。此關係有助於將圖形與其相關文字內容相關聯)、elements (文件中與圖形相關或描述圖形的文字元素或段落的識別碼) 和 caption (如果有的話)。

# Analyze figures.
if result.figures:                    
    for figures_idx,figures in enumerate(result.figures):
        print(f"Figure # {figures_idx} has the following spans:{figures.spans}")
        for region in figures.bounding_regions:
            print(f"Figure # {figures_idx} location on page:{region.page_number} is within bounding polygon '{region.polygon}'")                    

區段

階層式文件結構分析對於組織、理解及處理大量的文件十分重要。 這種方法對於對長文件進行語意分段以增強理解、輔助瀏覽和改進資訊檢索非常重要。 文件生成式 AI 中的檢索增強式生成 (RAG) 的出現突顯出階層式文件結構分析的重要性。 版面配置模型支援輸出中的區段和子區段,其可識別每個區段內區段和物件的關聯性。 階層式結構會在每個區段的 elements 中維護。 您可以使用 輸出為 markdown 格式 以輕鬆地取得 Markdown 的區段和子區段。

document_intelligence_client = DocumentIntelligenceClient(endpoint=endpoint, credential=AzureKeyCredential(key))
poller = document_intelligence_client.begin_analyze_document(
    "prebuilt-layout",
    AnalyzeDocumentRequest(url_source=url),
    output_content_format=ContentFormat.MARKDOWN,
)

自然讀取順序輸出 (僅適用於拉丁文)

您可以使用 readingOrder 查詢參數,指定輸出文字行的順序。 使用 natural 可以取得更容易閱讀的讀取順序輸出,如下列範例所示。 這項功能僅支援拉丁語言。

螢幕擷取畫面顯示版面配置模型的讀取順序處理。

選取頁碼或頁面範圍以進行文字擷取

若為大型的多頁文件,請使用 pages 查詢參數來表示文字擷取的特定頁碼或頁面範圍。 以下範例顯示有 10 頁的文件,並提供兩種文字擷取案例,分別是所有頁面 (1-10 頁) 和選取的頁面 (3-6 頁)。

螢幕擷取畫面顯示版面配置模型的選取頁面輸出。

取得分析版面配置結果作業

第二個步驟是呼叫取得分析版面配置結果作業。 此作業接受 Analyze Layout 作業所建立的結果識別碼輸入。 其會傳回包含 [狀態] 欄位的 JSON 回應,包含以下可能的值。

欄位 類型 可能值
status 字串 notStarted:分析作業未啟動。

running:分析作業正在進行中。

failed:分析作業失敗。

succeeded:分析作業成功。

反覆呼叫此作業,直到傳回 succeeded 值為止。 請使用 3 至 5 秒的間隔,以避免超過每秒要求數 (RPS) 的速率。

當 [狀態] 欄位有 succeeded 值時,JSON 回應會包括已擷取的版面配置、文字、資料表和選取標記。 擷取的資料包括已擷取的文字行和字組、週框方塊、表示手寫的文字外觀、資料表,以及表示已選取/未選取的選取標記。

手寫分類的文字行 (僅適用於拉丁文)

回應會包含辨別每個文字行是否為手寫樣式的分類,以及信賴度分數。 這項功能僅支援拉丁語言。 下列範例顯示影像中文字的手寫分類。

螢幕擷取畫面顯示版面配置模型的手寫分類程序。

範例 JSON 輸出

取得分析版面配置結果作業的回應是文件的結構化資料表示及擷取的所有資訊。 如需文件檔案範例及其結構化輸出的版面配置輸出範例,請參閱這裡。

JSON 輸出有兩個部分:

  • readResults 節點包含所有已辨識的文字和選取標記。 文字的呈現階層依序為頁面、行、個別字組。
  • pageResults 節點包含已擷取的資料表和儲存格及其週框方塊、信賴度,以及對 [readResults] 欄位中文字行和字組的參考。

輸出範例:

Text

版面配置 API 會從具有多個文字角度和色彩的文件和影像中擷取文字。 其接受文件的相片、傳真、印刷和/或手寫 (僅限英文) 文字以及混合模式。 文字的擷取會包含所提供文字行、字組、週框方塊、信賴分數和樣式 (手寫或其他) 的相關資訊。 所有文字資訊都會包括在 JSON 輸出的 readResults 區段中。

具有標題的資料表

配置 API 在 JSON 輸出的 pageResults 區段中擷取資料表。 文件可以是掃描、拍照或數位化的文件。 資料表可能很複雜,有合併儲存格或資料行、有或沒有框線以及奇特的角度。 擷取的資料表資訊包括資料行與資料列數目、資料列範圍和資料行範圍。 每個儲存格與其週框方塊,連同此區域是否辨識為標題之部分的資訊,都會一同輸出。 模型預測的標題儲存格可以跨越多個資料列,而且不必一定是資料表中的第一個資料列。 旋轉的資料表同樣適用。 每個資料表儲存格也會包括全文,及其對 readResults 區段中個別字組的參考。

資料表範例

選取標記

版面配置 API 也會從文件擷取選取項目標記。 擷取的選取標記包括週框方塊、信賴度和狀態 (已選取/未選取)。 選取標記的資訊會擷取在 JSON 輸出的 readResults 區段中。

移轉指南

下一步