文件智慧服務版面配置模型
重要
- Document Intelligence 公開預覽版本提供早期存取作用中開發的功能。
- 根據使用者意見反應,功能、方法和流程在正式發行 (GA) 前可能有所變更。
- Document Intelligence 用戶端連結庫的公開預覽版本預設為 REST API 版本 2024-02-29-preview。
- 公開預覽版本 2024-02-29-preview 目前僅適用於下列 Azure 區域:
- 美國東部
- 美國西部 2
- 西歐
此內容適用於:v4.0 (預覽) | 舊版:v3.1 (GA)v3.0 (GA)v2.1 (GA)
此內容適用於:v2.1 | 最新版本:v4.0(預覽)
文件智慧服務版面配置模型是在文件智慧服務雲端中提供以進階機器學習為基礎的文件分析 API。 它能讓您採用各種格式的文件,然後傳回文件的結構化資料表示法。 其結合我們功能強大的進階版光學字元辨識 (OCR) 與深度學習模型,能夠擷取文字、資料表、選取標記和文件結構。
文件版面配置分析
文件結構版面配置分析是分析文件以擷取相關區域及其相互關聯性的程序。 目標是從頁面擷取文字和結構化元素,以建立更好的語意理解模型。 檔案設定中有兩種類型的角色:
- 幾何角色:文字、表格、圖形和選取標記是幾何角色的範例。
- 邏輯角色:標題、標題和頁尾是文字邏輯角色的範例。
以下圖例顯示頁面範例影像中的一般元件。
開發選項
Document Intelligence v4.0 (2024-02-29-preview, 2023-10-31-preview) 支援下列工具、應用程式和連結庫:
功能 | 資源 | Model ID |
---|---|---|
版面配置模型 | • Document Intelligence Studio • REST API • C# SDK• Python SDK • Java SDK • JavaScript SDK |
prebuilt-layout |
Document Intelligence v3.1 支援下列工具、應用程式和連結庫:
功能 | 資源 | Model ID |
---|---|---|
版面配置模型 | • Document Intelligence Studio • REST API • C# SDK• Python SDK • Java SDK • JavaScript SDK |
prebuilt-layout |
Document Intelligence v3.0 支援下列工具、應用程式和連結庫:
功能 | 資源 | Model ID |
---|---|---|
版面配置模型 | • Document Intelligence Studio • REST API • C# SDK• Python SDK • Java SDK • JavaScript SDK |
prebuilt-layout |
Document Intelligence v2.1 支援下列工具、應用程式和連結庫:
功能 | 資源 |
---|---|
版面配置模型 | • 文件智慧標籤工具 • REST API • 用戶端連結庫 SDK • Document Intelligence Docker 容器 |
輸入需求
若要得到最佳結果,請為每個文件提供一張清晰的照片或高畫質的掃描檔案。
支援的檔案格式:
模型 PDF 圖片:
JPEG/JPG、PNG、BMP、TIFF、HEIFMicrosoft 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 訂用帳戶-您可以 免費建立一個訂用帳戶。
Azure 入口網站中的 Document Intelligence 執行個體。 您可以使用免費定價層 (
F0
) 來試用服務。 部署資源後,選取 [前往資源] 以取得金鑰和端點。
注意
Document Intelligence Studio 適用於 v3.0 API 和更新版本。
使用 Document Intelligence Studio (英文) 處理的文件範例
在 [Document Intelligence Studio] 首頁上,選取 [ 版面配置]。
您可以分析範例檔或上傳您自己的檔案。
選取 [ 執行分析] 按鈕,並視需要設定 [分析] 選項:
文件智慧服務範例標籤工具
瀏覽至文件智慧服務範例工具 (英文)。
在範例工具首頁上,選取 [Use Layout to get text, tables and selection marks] (使用版面配置來取得文字、資料表和選取標記)。
在 [文件智慧服務端點] 欄位中,貼上您透過文件智慧服務訂用帳戶取得的端點。
在 [金鑰] 欄位中,貼上您從文件智慧服務資源取得的金鑰。
在 [來源] 欄位中,從下拉式功能表中選取 [URL],您可以使用我們的文件範例:
範例檔。
選取 [擷取] 按鈕。
選取 [Run Layout] (執行版面配置)。 檔智慧範例標籤工具會呼叫
Analyze Layout
API 來分析檔。檢視結果 - 查看醒目提示的擷取文字、偵測到的選取標記和偵測到的數據表。
支援的語言和地區設定
如需支援語言的完整清單,請參閱 我們的 語言支援 — 檔案分析模型 頁面。
Document Intelligence v2.1 支援下列工具、應用程式和連結庫:
功能 | 資源 |
---|---|
版面配置 API |
資料擷取
版面配置模型會從文件中擷取文字、選取項目標記、表格、段落及段落類型 (roles
)。
注意
版本 2024-02-29-preview
、 2023-10-31-preview
和更新版本支援 Microsoft Office (DOCX、XLSX、PPTX) 和 HTML 檔案。 不支援下列功能:
- 每個頁面對象沒有角度、寬度/高度和單位。
- 針對偵測到的每個對象,沒有周框多邊形或周框區域。
- 不支援頁面範圍 (
pages
) 做為參數。 - 沒有
lines
物件。
頁面
pages 集合是檔中的頁面清單。 每個頁面都會在檔中循序表示,並包含方向角度,指出頁面是否旋轉,寬度和高度(以像素為單位的維度)。 會計算模型輸出中的頁面單位,如下所示:
檔案格式 | 計算的頁面單位 | 總頁數 |
---|---|---|
圖片(JPEG/JPG、PNG、BMP、HEIF) | 每個影像 = 1 個頁面單位 | 影像總計 |
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,影像 |
pageHeader |
接近頁面上緣的文字 | pdf、image、docx |
pageFooter |
接近頁面下緣的文字 | pdf, image, docx, pptx, html |
pageNumber |
頁碼 | pdf,影像 |
{
"paragraphs": [
{
"spans": [],
"boundingRegions": [],
"role": "title",
"content": "NEWS TODAY"
},
{
"spans": [],
"boundingRegions": [],
"role": "sectionHeading",
"content": "Mirjam Nilsson"
}
]
}
文字、行和文字
文件智慧服務中的文件版面配置模型會將印刷和手寫樣式的文字擷取為 lines
和 words
。 若也偵測到指向相關文字的範圍,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
集合中。 這包含週框 polygon
、confidence
和選取項目 state
(selected/unselected
)。 文字表示法(亦即 :selected:
和 :unselected
)也包含在起始索引中,offset
而且 length
會參考包含檔中全文檢索的最上層 content
屬性。
{
"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
。
注意
如果輸入檔為 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,
)
數位
檔中的圖表(圖表、影像)在補充和增強文字內容方面扮演了重要角色,提供視覺表示法,有助於瞭解複雜的資訊。 Layout 模型偵測到的圖表物件具有索引鍵屬性,例如 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
值為止。 若要避免超過每秒要求 (RPS) 速率,請使用 3 到 5 秒的間隔。
當 [狀態] 欄位有 succeeded
值時,JSON 回應會包括已擷取的版面配置、文字、資料表和選取標記。 擷取的資料包括已擷取的文字行和字組、週框方塊、表示手寫的文字外觀、資料表,以及表示已選取/未選取的選取標記。
手寫分類的文字行 (僅適用於拉丁文)
回應會包含辨別每個文字行是否為手寫樣式的分類,以及信賴度分數。 這項功能僅支援拉丁語言。 下列範例顯示影像中文字的手寫分類。
範例 JSON 輸出
取得分析版面配置結果作業的回應是文件的結構化資料表示及擷取的所有資訊。 如需文件檔案範例及其結構化輸出的版面配置輸出範例,請參閱這裡。
JSON 輸出有兩個部分:
readResults
節點包含所有已辨識的文字和選取標記。 文字的呈現階層依序為頁面、行、個別字組。pageResults
節點包含已擷取的資料表和儲存格及其週框方塊、信賴度,以及對 [readResults] 欄位中文字行和字組的參考。
輸出範例:
Text
版面配置 API 會從具有多個文字角度和色彩的文件和影像中擷取文字。 其接受文件的相片、傳真、印刷和/或手寫 (僅限英文) 文字以及混合模式。 文字的擷取會包含所提供文字行、字組、週框方塊、信賴分數和樣式 (手寫或其他) 的相關資訊。 所有文字資訊都會包括在 JSON 輸出的 readResults
區段中。
具有標題的資料表
配置 API 在 JSON 輸出的 pageResults
區段中擷取資料表。 文件可以是掃描、拍照或數位化的文件。 資料表可能很複雜,有合併儲存格或資料行、有或沒有框線以及奇特的角度。 擷取的資料表資訊包括資料行與資料列數目、資料列範圍和資料行範圍。 每個具有其周框方塊的數據格都會輸出,以及是否將區域辨識為標頭的一部分。 模型預測的標題儲存格可以跨越多個資料列,而且不必一定是資料表中的第一個資料列。 旋轉的資料表同樣適用。 每個資料表儲存格也會包括全文,及其對 readResults
區段中個別字組的參考。
選取標記
版面配置 API 也會從文件擷取選取項目標記。 擷取的選取標記包括週框方塊、信賴度和狀態 (已選取/未選取)。 選取標記的資訊會擷取在 JSON 輸出的 readResults
區段中。
移轉指南
- 請遵循我們的文件智慧服務 v3.1 移轉指南 (部分機器翻譯),了解如何在應用程式和工作流程中使用 v3.1 版本。
下一步
瞭解如何使用 Document Intelligence Studio 處理您自己的表單和檔。
完成 Document Intelligence 快速入門,並開始以您選擇的開發語言來建立文件處理應用程式。
瞭解如何使用檔智慧範例卷標工具來處理您自己的表單和檔。
完成 Document Intelligence 快速入門,並開始以您選擇的開發語言來建立文件處理應用程式。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應