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

Azure Form Recognizer Java SDK getValueDate()返回null问题

问题描述

通过Form Recognizer Studio构建自定义神经模型,标注训练环节已完成日期字段标注。使用com.azure:azure-ai-formrecognizer:4.0.0-beta.5版本Java SDK提取日期精确值时出现异常:
Form Recognizer Studio中预览的返回JSON如下:

"Start Date": {
    "type": "date",
    "content": "01.05.2022",
    "boundingRegions": [
        {
            "pageNumber": 1,
            "polygon": [1.6025,4.0802,2.148,4.0802,2.148,4.1613,1.6025,4.1613]
        }
    ],
    "confidence": 0.981,
    "spans": [
        {
            "offset": 910,
            "length": 10
        }
    ]
}

返回结果里Start Date字段类型标记为date,content值为01.05.2022,置信度0.981,但调用SDK的getValueDate()方法返回null,只有调用getContent()能拿到正确的字符串值。

问题原因

这是4.0.0-beta.5版本SDK的固有缺陷:

  • 该测试版本仅支持解析ISO 8601格式(yyyy-MM-dd)的日期值,对自定义神经模型返回的点分隔dd.MM.yyyy这类非标准格式日期没有做适配解析,无法将原始字符串自动转换为日期类型,因此getValueDate()直接返回null。
  • Studio端展示的type: date只是服务端识别到字段的语义类型为日期,不代表接口返回了可直接被SDK反序列化为日期对象的标准化值。
解决方法
  • 临时适配:直接通过getContent()拿到日期字符串,自行按对应格式解析,参考代码:
// 按实际返回的日期格式指定解析规则
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
LocalDate startDate = LocalDate.parse(formField.getContent(), dateFormatter);

如果业务场景中存在多种日期格式,可以配置多组格式化器做轮询匹配,避免单格式解析失败。

  • 长期修复:将SDK升级到4.0.0正式及以上版本,正式版已经补全了自定义模型下多格式日期字段的解析逻辑,升级后可直接调用getValueDate()获取正确的LocalDate类型结果,不需要额外做字符串转换。

内容的提问来源于stack exchange,提问作者Dumitru P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:27:15