如何在C#中保存及后续加载Azure Document Intelligence的AnalyzeResult
C#中持久化与还原AnalyzeResult的方案
由于AnalyzeResult是Azure AI Document Intelligence SDK的内部构造类型,直接用常规JSON序列化器(比如Newtonsoft.Json或System.Text.Json)可能无法正确处理,但可以借助SDK自带的序列化工具完成持久化与还原,完全无需反射:
序列化(保存AnalyzeResult)
使用Azure.Core提供的JsonSerializer,它原生支持处理实现IJsonModel<T>接口的SDK类型,生成的JSON格式与批处理存储到容器的格式一致:
using Azure.Core.Serialization; using System.IO; // 假设已通过AnalyzeDocumentAsync获取到AnalyzeResult实例result var jsonSerializer = new JsonSerializer(); using var memoryStream = new MemoryStream(); // 将result序列化为JSON流 await jsonSerializer.SerializeAsync(memoryStream, result, typeof(AnalyzeResult), CancellationToken.None); memoryStream.Position = 0; // 读取为字符串并保存(示例为本地文件,也可存储到Blob等) string resultJson = await new StreamReader(memoryStream).ReadToEndAsync(); await File.WriteAllTextAsync("document-analysis-result.json", resultJson);
反序列化(还原AnalyzeResult)
同样使用JsonSerializer从JSON字符串/流中还原出完整的AnalyzeResult实例:
using Azure.Core.Serialization; using System.IO; using System.Text; // 从存储读取JSON(示例为本地文件) string savedJson = await File.ReadAllTextAsync("document-analysis-result.json"); using var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(savedJson)); // 反序列化回AnalyzeResult var jsonSerializer = new JsonSerializer(); AnalyzeResult restoredResult = await jsonSerializer.DeserializeAsync<AnalyzeResult>(memoryStream, CancellationToken.None); // 此时restoredResult可直接用于后续业务处理
注意事项
- 确保项目已引用
Azure.AI.DocumentIntelligence(原Azure.AI.FormRecognizer)和Azure.CoreNuGet包,版本需与SDK匹配 - 该方式生成的JSON与Azure批处理作业存储的结果格式完全兼容,可直接复用存储的批处理结果进行反序列化
内容的提问来源于stack exchange,提问作者Alan Every
相关产品推荐
相关产品推荐

