C#中如何获取FormRecognizer文档分析的原始JSON响应
问题根因
你当前代码读取的result.Content属性是Form Recognizer对文档做OCR后拼接的全量纯文本,本身不包含模型识别的字段映射关系,自然拿不到「surname: SURNAME」这类带字段标识的结构化结果,也不可能输出和Form Recognizer Builder网页端一致的完整返回。
解决方案
分两种场景实现需求:
- 若需要直接获取结构化键值对结果:从
result.Documents集合的Fields属性读取,该属性存储了模型识别到的所有字段名、对应值、置信度、位置坐标信息,就是网页端展示的字段提取结果。 - 若需要获取和网页端完全一致的原始JSON输出:调用操作对象的
GetRawResponse()方法,直接读取接口返回的原始响应内容即可,不需要手动序列化SDK封装的对象。
修正后可直接运行的代码
Debug.Log("using"); using (var stream = new MemoryStream()) { var datei = File.OpenRead(filePath); datei.CopyTo(stream); stream.Seek(0, SeekOrigin.Begin); AnalyzeDocumentOperation operation = client.StartAnalyzeDocument(modelID, stream); operation.WaitForCompletion(); // 获取网页端同源的完整原始JSON var rawResponse = operation.GetRawResponse(); string fullRawJson = rawResponse.Content.ToString(); Debug.Log(fullRawJson); // 获取带字段标识的结构化结果 var result = operation.Value; StringBuilder fieldDisplayBuilder = new StringBuilder(); foreach (var analyzedDocument in result.Documents) { foreach (var field in analyzedDocument.Fields) { string fieldName = field.Key; string fieldValue = field.Value.Value?.ToString() ?? string.Empty; // 拼接为「字段名: 字段值」的格式 fieldDisplayBuilder.AppendLine($"{fieldName}: {fieldValue}"); } } // 输出结构化结果到UI text.text = fieldDisplayBuilder.ToString(); }
注意事项
- 上述逻辑兼容自定义训练模型、所有预构建模型(发票、名片、通用文档等)的结果提取。
- 如果你使用的是3.x及以上版本的Azure.AI.FormRecognizer SDK,
GetRawResponse()方法默认可用,拿到的JSON和网页端展示的原始返回完全一致,包含表格、段落、键值对、置信度等全量信息。 - 不要用遍历
result.Content的方式拿结构化结果,这个属性仅做纯文本OCR结果输出,没有任何字段映射关系。
内容的提问来源于stack exchange,提问作者Fabian H.
相关产品推荐
相关产品推荐

