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

Databricks上Apache Spark如何将Python for循环页码结果纳入输出

问题根因

你现有代码的问题有两个:

  1. 遍历页码时仅做了print输出,没有把页码和对应页的文本做关联存储
  2. 最终mydf = result.content的写法,只会拿到循环中最后一个处理完的PDF的全量无分页文本,既丢失了前面所有PDF的提取结果,也没有任何分页标记可以关联页码。

Azure Form Recognizer返回的result.pages数组中,每个page对象自带page_number页码属性,单页的文本内容可以通过拼接page下所有line的content拿到——result.content是服务端提前拼好的全文档纯文本,本身不保留分页边界,没法直接拆分出单页对应内容。

可直接运行的修正代码

核心思路是提前初始化一个列表,逐PDF、逐页收集「文件名、页码、单页文本」的结构化记录,最后一次性转成DataFrame:

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

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

# 初始化存储容器,收集所有提取结果
extract_result = []

for blob in container.list_blobs():
    blob_url = f"{container_url}/{blob.name}"
    poller = document_analysis_client.begin_analyze_document_from_url(
        "prebuilt-read", blob_url
    )
    result = poller.result()
    print(f"Scanning {blob.name}...")
    
    # 逐页关联页码和文本
    for page in result.pages:
        # 拼接当前页所有行的文本内容
        page_text = "\n".join([line.content for line in page.lines])
        print(f"----Analyzing Read from page #{page.page_number}----")
        # 写入结构化记录
        extract_result.append({
            "pdf_filename": blob.name,
            "page_num": page.page_number,
            "content": page_text
        })

# 转换为DataFrame,每行对应一个PDF的一页内容
mydf = pd.DataFrame(extract_result)
补充说明
  • 最终生成的mydf有三列:pdf_filename存PDF文件名、page_num存对应页码、content存该页提取到的全部文本,直接满足页码关联需求
  • 如果需要保留全文档维度的提取结果,可以在遍历完单个PDF的所有页之后,额外加一条记录存全量的result.content,对应页码标记为「全文档」即可
  • 如果需要提取PDF中的表格内容,可以在遍历page时额外读取page.tables字段做解析,和当前文本提取逻辑不冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:12:13