You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python借助Azure Form Recognizer提取PDF结构并生成DataFrame

使用Azure Form Recognizer提取PDF内容并转换为DataFrame

问题修正与实现

你之前的代码仅处理了页面行、单词和表格的基础输出,未利用prebuilt-layout模型提供的页眉、页脚、段落识别能力,也未做DataFrame转换。以下是完整实现代码:

import pandas as pd
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.core.credentials import AzureKeyCredential

endpoint = "<你的Azure端点>"
key = "<你的Azure密钥>"

def extract_pdf_to_dataframe():
    # 替换为目标PDF的URL或本地文件路径(本地文件请使用begin_analyze_document方法)
    target_pdf = "<你的PDF地址>"

    document_analysis_client = DocumentAnalysisClient(
        endpoint=endpoint, credential=AzureKeyCredential(key)
    )

    # 启动文档分析任务
    poller = document_analysis_client.begin_analyze_document_from_url(
        "prebuilt-layout", target_pdf)
    analysis_result = poller.result()

    # 初始化数据存储列表
    page_data_list = []

    for page in analysis_result.pages:
        page_number = page.page_number
        
        # 匹配当前页的页眉
        page_headers = [h.content for h in analysis_result.headers 
                       if any(reg.page_number == page_number for reg in h.bounding_regions)]
        # 匹配当前页的页脚
        page_footers = [f.content for f in analysis_result.footers 
                       if any(reg.page_number == page_number for reg in f.bounding_regions)]
        # 匹配当前页的段落
        page_paragraphs = [p.content for p in analysis_result.paragraphs 
                          if any(reg.page_number == page_number for reg in p.bounding_regions)]
        # 匹配当前页的表格并结构化
        page_tables = []
        for table in analysis_result.tables:
            if any(reg.page_number == page_number for reg in table.bounding_regions):
                table_cells = []
                for cell in table.cells:
                    table_cells.append({
                        "行索引": cell.row_index,
                        "列索引": cell.column_index,
                        "单元格内容": cell.content
                    })
                page_tables.append(table_cells)
        
        # 整合单页数据
        page_data = {
            "页码": page_number,
            "页眉": "\n".join(page_headers) if page_headers else "",
            "页脚": "\n".join(page_footers) if page_footers else "",
            "段落": "\n".join(page_paragraphs) if page_paragraphs else "",
            "表格": page_tables if page_tables else []
        }
        page_data_list.append(page_data)
    
    # 转换为DataFrame
    result_df = pd.DataFrame(page_data_list)
    print(result_df)
    return result_df

if __name__ == "__main__":
    extract_pdf_to_dataframe()

核心要点

  • 直接调用analysis_result.headers/footers/paragraphs属性获取对应内容,通过绑定区域的页码匹配到当前页
  • 表格数据整理为结构化的单元格列表,便于后续处理
  • 所有页数据整合后批量转换为Pandas DataFrame,符合预期输出格式

内容的提问来源于stack exchange,提问作者Niranjanp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:22:22