如何使用Custom Document Extractor发送批量处理请求?代码无输出求助
使用Custom Document Extractor发送批量处理请求及排障指南
批量处理请求实现步骤
1. 安装依赖
在Jupyter Notebook中执行以下命令安装必要的Python包:
!pip install azure-ai-formrecognizer azure-identity
2. 编写批量处理代码
下面是完整的批量处理示例代码,包含客户端初始化、作业提交、状态轮询和结果输出:
from azure.ai.formrecognizer import DocumentAnalysisClient from azure.identity import DefaultAzureCredential import time # 替换为你的资源端点和自定义模型ID endpoint = "https://<你的资源名称>.cognitiveservices.azure.com/" model_id = "<你的自定义模型ID>" # 初始化文档分析客户端 client = DocumentAnalysisClient(endpoint, DefaultAzureCredential()) # 批量文档列表(支持SAS URL或本地文件路径,本地文件需用open()读取后传入) document_urls = [ "https://<存储账户>.blob.core.windows.net/<容器>/doc1.pdf?<SAS令牌>", "https://<存储账户>.blob.core.windows.net/<容器>/doc2.pdf?<SAS令牌>", # 添加更多文档URL ] # 提交批量分析作业 poller = client.begin_analyze_document_batch(model_id, document_urls=document_urls) # 轮询作业状态,确保作业完成 while not poller.done(): print(f"当前作业状态: {poller.status()}") time.sleep(10) # 每10秒查询一次状态 # 获取并输出处理结果 batch_result = poller.result() for doc_result in batch_result: if doc_result.status == "succeeded": print(f"\n=== 文档 {doc_result.document_url} 提取结果 ===") # 遍历提取的字段(根据你的自定义模型字段调整) for field_name, field_data in doc_result.documents[0].fields.items(): print(f"{field_name}: {field_data.value} | 置信度: {field_data.confidence:.2f}") else: print(f"\n文档 {doc_result.document_url} 处理失败: {doc_result.error.message}")
Jupyter Notebook无输出的排查要点
- 依赖验证:执行
!pip list确认azure-ai-formrecognizer和azure-identity已正确安装,版本需匹配(推荐使用最新稳定版)。 - 参数正确性:检查端点URL、模型ID、文档SAS令牌是否拼写正确,确保资源处于正常运行状态。
- 权限检查:SAS令牌需包含读取权限;本地文件需确保Jupyter Notebook进程有访问权限。
- 异步作业等待:批量处理为异步操作,若未等待
poller.done()就终止代码,不会生成输出,必须等待作业完成。 - 错误捕获:添加异常捕获块排查潜在错误,示例:
try: poller = client.begin_analyze_document_batch(model_id, document_urls=document_urls) # 后续轮询和结果处理代码 except Exception as e: print(f"执行错误: {str(e)}")
- Jupyter输出设置:检查是否禁用了单元格输出,或代码中缺少
print语句(上述示例已包含状态和结果打印)。
内容的提问来源于stack exchange,提问作者Akshita Dewadwal
相关产品推荐
相关产品推荐

