使用布局解析器处理文档
布局解析器会提取文档内容元素(例如文本、表格和列表),并创建内容感知数据块,以便生成式 AI 和发现应用从中检索信息。
布局解析器功能
解析文档布局。您可以向布局解析器输入 HTML 或 PDF 文件,以识别文本块、表格、列表等内容元素,以及标题和标题等结构元素。这些元素有助于定义文档的组织和层次结构,通过丰富的内容和结构元素为信息检索和发现创建更多情境。
分块文档。布局解析器可以将文档拆分为多个分块,这些分块会保留与原始文档的布局层次结构相关的上下文信息。生成回答的 LLM 可以使用分块来提高相关性并减少计算负载。
在分块过程中考虑文档的布局有助于提高语义一致性,并在内容用于检索和 LLM 生成时减少内容中的噪声。分块中的所有文本都来自同一布局实体,例如标题、副标题或列表。
限制
存在以下限制:
- 在线处理:
- 所有文件类型的输入文件大小上限为 20 MB
- 每个 PDF 文件的页数上限为 15 页
- 批处理:
- PDF 文件的单个文件大小上限为 40 MB
- 每个 PDF 文件的页数上限为 500 页
按文件类型进行布局检测
下表列出了布局解析器可按文档文件类型检测的元素。
文件类型 | 检测到的元素 | 限制 |
---|---|---|
HTML | 段落、表格、列表、标题、标题、页眉、页脚 | 请注意,解析在很大程度上依赖于 HTML 标记,因此可能无法捕获基于 CSS 的格式。 |
段落、表格、标题、标题、页眉、页脚 | 跨多个页面的表格可能会拆分为两个表格。 | |
DOCX(预览版) | 段落、跨多个页面的表格、列表、标题、标题元素 | 不支持嵌套表。 |
PPTX(预览版) | 段落、表格、列表、标题、标头元素 | 为了准确识别标题,应在 PowerPoint 文件中将其标记为标题。不支持嵌套表格和隐藏幻灯片。 |
XLSX/XLSM(预览版) | Excel 电子表格中的表格,支持 INT 、FLOAT 和 STRING 值 |
不支持多表检测。隐藏的工作表、行或列也可能会影响检测。 |
准备工作
如需开启布局解析器,请按以下步骤操作:
使用布局解析器发送在线处理请求
将文档输入布局解析器以进行解析和分块。
请按照发送处理请求中有关批处理请求的说明操作。
在
ProcessDocumentRequest
的ProcessOptions.layoutConfig
中配置字段。REST
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:处理器的位置,例如:
us
- 美国eu
- 欧盟
- PROJECT_ID:您的 Google Cloud 项目 ID。
- PROCESSOR_ID:自定义处理器的 ID。
- MIME_TYPE:布局解析器支持
application/pdf
和text/html
。 - DOCUMENT:要拆分为分块的内容。布局解析器接受原始 PDF 或 HTML 文档,或布局解析器输出的解析文档。
- CHUNK_SIZE:可选。分割文档时使用的分块大小(以令牌为单位)。
- INCLUDE_ANCESTOR_HEADINGS:可选。布尔值。在拆分文档时是否要包含祖先标题。
HTTP 方法和网址:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process
请求 JSON 正文:
// Sample for inputting raw documents such as PDF or HTML { "rawDocument": { "mimeType": "MIME_TYPE", "content": "DOCUMENT" }, "processOptions": { "layoutConfig": { "chunkingConfig": { "chunkSize": "CHUNK_SIZE", "includeAncestorHeadings": "INCLUDE_ANCESTOR_HEADINGS", } } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process"PowerShell
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process" | Select-Object -Expand ContentDocument.documentLayout
和Document.chunkedDocument
)。Python
如需了解详情,请参阅 Document AI Python API 参考文档。
如需向 Document AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
- LOCATION:处理器的位置,例如:
使用布局解析器批量处理文档
请按照以下步骤在单个请求中解析和分块多个文档。
将文档输入布局解析器以进行解析和分块。
请按照发送处理请求中有关批处理请求的说明操作。
发出
batchProcess
请求时,在ProcessOptions.layoutConfig
中配置字段。输入
以下 JSON 示例会配置
ProcessOptions.layoutConfig
。"processOptions": { "layoutConfig": { "chunkingConfig": { "chunkSize": "CHUNK_SIZE", "includeAncestorHeadings": "INCLUDE_ANCESTOR_HEADINGS_BOOLEAN" } } }
替换以下内容:
CHUNK_SIZE
:分割文档时使用的最大分块大小(以令牌数表示)。INCLUDE_ANCESTOR_HEADINGS_BOOLEAN
:在拆分文档时是否要包含祖先标题。祖先标题是原始文档中子标题的父级。它们可以为某个区块提供有关其在原始文档中位置的更多背景信息。一个分块最多可包含两级标题。
后续步骤
- 查看处理器列表。
- 创建自定义分类器。
- 使用 Enterprise Document OCR 检测和提取文本。