如何使用AnalyzeForm power skill将数值数据索引至Azure Search并解决返回null问题
问题结论
该现象不属于Power Skill的代码Bug,是Azure Form Recognizer SDK的字段取值逻辑导致的:field.value属性仅在SDK成功将识别内容解析为对应类型值时才会赋值,若解析失败就会返回null,但字段原始识别文本会保存在field.text属性中。
修复方案
修改赋值逻辑,增加对数值类型字段的降级处理,优先尝试解析field.text为数值:
# 替换原逻辑 recognized[v] = field.value if field.value is not None: recognized[v] = field.value # 处理number类型字段value为空的场景 elif field.type == "number" and field.text: try: # 根据业务需要选择转换为浮点型或整型 recognized[v] = float(field.text.strip()) # 若需要整型可改为:recognized[v] = int(float(field.text.strip())) except ValueError: # 转换失败时可根据业务需求选择赋值原始文本或置空 recognized[v] = field.text else: recognized[v] = None
可选适配方案
如果你的搜索索引中TotalCredit字段无需参与数值计算、过滤或排序,也可以直接将索引中该字段类型修改为字符串类型,赋值时直接取field.text即可,无需做类型转换。
内容的提问来源于stack exchange,提问作者Mr. code
相关产品推荐
相关产品推荐

