如何将JSON转回Azure Form Recognizer支持的数据类型且避免重复分析
解决Azure Form Recognizer JSON转原生对象的问题
你当前的问题出在调用from_dict的方式错误——它是AnalyzeResult的类方法,不能通过实例调用,必须直接用类本身来调用,这样就能不用重新分析文档,直接从JSON/字典转回SDK支持的原生数据类型。
修正后的完整代码
首先是文档分析的基础代码:
from azure.core.credentials import AzureKeyCredential from azure.ai.formrecognizer import DocumentAnalysisClient # 新增导入AnalyzeResult类,用于逆向转换 from azure.ai.formrecognizer import AnalyzeResult endpoint = "你的endpoint" key = "你的key" # 创建客户端实例 document_analysis_client = DocumentAnalysisClient(endpoint=endpoint, credential=AzureKeyCredential(key)) # 分析文档 with open("file.pdf", "rb") as f: poller = document_analysis_client.begin_analyze_document("prebuilt-document", document=f) result = poller.result()
然后是JSON与原生对象的互转代码(修正了from_dict的调用方式):
import json # 将原生分析结果转成JSON d = result.to_dict() json_string = json.dumps(d) # 将JSON转回原生AnalyzeResult对象(无需重新调用API分析文档) data = json.loads(json_string) restored_result = AnalyzeResult.from_dict(data) # 验证:可以像使用原result一样调用属性或方法 print(restored_result.pages[0].content)
关键注意事项
- 必须确保用于逆向转换的字典/JSON结构和
to_dict()输出的完全一致,不要随意修改字段或结构,否则会导致from_dict解析失败。 - 如果是从本地存储的JSON文件读取数据,直接加载后传入
AnalyzeResult.from_dict()即可完成转换。
内容的提问来源于stack exchange,提问作者saul santos
相关产品推荐
相关产品推荐

