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

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.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:06:33