DataWizardess 2025-06-29 13:25 采纳率: 98.5%
浏览 2
已采纳

如何提取Azure AI Document Intelligence中的表格数据?

**如何从Azure AI Document Intelligence中提取复杂嵌套表格的数据?** 在使用Azure AI Document Intelligence(之前称为Form Recognizer)处理包含嵌套结构的表格文档时,开发者常遇到无法准确提取嵌套单元格内容或结构错位的问题。尽管该服务支持对自定义表单进行训练和识别,但在面对多行合并、跨页表格或非均匀列数的复杂表格时,API返回的数据结构可能不完整或层级混乱。你是否在实际项目中也遇到了此类问题?又是如何通过调整模型训练策略、解析逻辑或后处理代码来解决这些挑战的?欢迎分享你的经验和最佳实践。
  • 写回答

1条回答 默认 最新

  • fafa阿花 2025-10-21 22:51
    关注

    一、引言:Azure AI Document Intelligence 的表格提取挑战

    Azure AI Document Intelligence 是微软提供的文档分析服务,能够从扫描文档或PDF中提取文本、键值对以及表格数据。然而,在处理包含嵌套结构的复杂表格时,开发者常遇到以下问题:

    • 单元格跨行或跨列合并导致层级混乱
    • 表格内容分布在多个页面上
    • 列数不一致或非均匀布局
    • 嵌套子表结构识别失败

    这些问题往往导致API返回的数据结构无法直接使用,需要通过模型训练优化与后处理逻辑来修复。

    二、理解 Azure AI Document Intelligence 表格输出结构

    在开始处理之前,必须深入理解其输出格式。Document Intelligence 返回的 JSON 包含如下关键字段:

    
    {
      "tables": [
        {
          "rows": number,
          "columns": number,
          "cells": [
            {
              "rowIndex": number,
              "columnIndex": number,
              "text": string,
              "boundingBox": [x1,y1,x2,y2,...],
              "isHeader": boolean
            },
            ...
          ]
        }
      ]
    }
      

    每个单元格(cell)记录了所在行和列的位置信息,但没有显式表示“嵌套”结构。因此,解析器需要根据这些原始数据重建嵌套关系。

    三、训练策略优化:提升模型识别精度

    为了提高嵌套表格的识别准确率,可以采用以下训练策略:

    1. 标注高质量样本:确保训练集中包含大量嵌套表格的真实示例,并正确标注所有单元格位置。
    2. 使用多页文档进行训练:避免只用单页表格训练模型,以增强跨页连续识别能力。
    3. 强制定义表格边界:使用自定义模型训练中的标签工具明确标出表格范围,减少干扰。
    4. 启用 Layout 模型预处理:在训练前先运行 Layout 模型,帮助识别文档结构并辅助标注。

    训练过程中,应持续验证模型在不同复杂度表格上的表现,并调整训练参数如迭代次数、学习率等。

    四、解析逻辑重构:构建嵌套表格结构

    即使模型输出完整,仍需编写逻辑代码将扁平化的 cells 转换为嵌套结构。以下是常见步骤:

    
    function buildNestedTable(cells) {
      const rows = {};
      cells.forEach(cell => {
        if (!rows[cell.rowIndex]) rows[cell.rowIndex] = [];
        rows[cell.rowIndex][cell.columnIndex] = cell.text;
      });
      return Object.values(rows);
    }
      

    对于嵌套子表,可基于单元格内容特征判断是否为“容器”,然后递归解析其中的新表格。

    例如,如果某单元格内容包含“子表”字样,则尝试在其内部再次调用表格解析函数。

    五、后处理技巧:修复错位与缺失结构

    由于 OCR 和模型识别误差,部分单元格可能未被正确识别或位置偏移。以下是常见的后处理方法:

    问题类型解决方法
    跨行/跨列未合并基于 boundingBox 计算相邻单元格距离,自动合并接近区域
    遗漏单元格使用图像处理技术检测空白区域是否存在文字
    结构错乱基于行列索引重新排序并填充空缺位置

    此外,也可以引入 NLP 技术识别表头含义,从而更智能地组织数据结构。

    六、流程图展示:整体解决方案架构

    graph TD
    A[上传文档] --> B{是否为复杂嵌套表格?}
    B -- 是 --> C[运行Layout模型预处理]
    C --> D[人工标注训练集]
    D --> E[训练自定义模型]
    E --> F[调用模型识别]
    F --> G[解析JSON输出]
    G --> H{是否结构正确?}
    H -- 否 --> I[应用后处理算法]
    H -- 是 --> J[输出结构化数据]
    I --> J
        

    该流程图展示了从文档输入到最终输出结构化数据的全过程,强调了训练、解析与后处理的重要性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 6月29日