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

修改Python版Azure Cognitive Form Recognizer代码提取PDF页码

Azure 表单识别器提取文本附带页码修改方案

核心修改逻辑

原代码直接取result.content拿到的是全文档拼好的纯文本,不带任何分页标记。实际上Azure表单识别器返回的结果里自带pages数组,每个元素对应PDF里的单独一页,自带页码属性和当前页的全部文本,遍历这个数组就能拿到文本和页码的对应关系。
另外原代码漏了AzureKeyCredential的导入,修改的时候一并补上,不然跑的时候会报名称错误。

修改后可直接运行的代码

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

# 请提前替换为你自己的endpoint、key、存储容器相关配置
document_analysis_client = DocumentAnalysisClient(
    endpoint=endpoint, credential=AzureKeyCredential(key)
)

# 存储所有文件的分页提取结果,方便后续转DataFrame
extract_result = []

for blob in container.list_blobs():
    blob_url = container_url + "/" + blob.name
    poller = document_analysis_client.begin_analyze_document_from_url(
        "prebuilt-read", blob_url
    )
    result = poller.result()
    print(f"正在扫描文件: {blob.name} ...")
    
    # 逐页遍历提取页码和对应文本
    for page in result.pages:
        page_num = page.page_number
        page_content = page.content.strip()
        print(f"=== 第 {page_num} 页内容 ===")
        print(page_content)
        # 单页结果存入列表
        extract_result.append({
            "file_name": blob.name,
            "page_number": page_num,
            "page_content": page_content
        })

# 转换为DataFrame,后续可直接导出为csv、excel等格式
mydf = pd.DataFrame(extract_result)

补充说明

  • 返回的page_number从1开始计数,和日常PDF阅读器显示的页码完全一致,不需要手动做偏移处理
  • 如果需要定位到更细粒度的行、单个词汇的位置,还可以遍历page.lines或者page.words属性,每个行/词对象除了文本内容,还自带所在页码、坐标位置信息,可以满足更精准的提取需求
  • 如果需要保留原有的全文档文本输出,result.content依然可以正常调用,和分页提取的逻辑不冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:15:43