概述

构造良好的 schema 可以确保抽取结果更符合预期,且便于下游使用,本文分享的最佳实践包括:
  • 如何定义清晰的字段
  • 使用枚举与描述
  • 避免不必要的嵌套
  • 聚焦于原文档中的关键信息,引导抽取引擎准确理解抽取意图和解读文档
通过应用这些实践,您可以减少抽取错误、提高输出信息完整度,并利于下游更容易接入。

JSON schema 建议

您的抽取 schema 对输出质量起着至关重要的作用。您可以在 schema 结构、描述(description)以及类型约束上多做尝试,以取得最佳抽取效果。 1. 使用与原文档内容高度匹配的字段名,并为每个字段提供清晰的描述。 采用与原文档中信息呈现方式一致的字段名和描述,有助于抽取引擎更容易识别并提取正确的值。例如从表格中抽取数据,可以直接使用表头作为字段名。 2. 如果要抽取的数据是少量有限值的集合,可以使用枚举类型约束。 如果某个字段有可预测的一组取值(例如“是/否”或预定义的类别),使用枚举(enum)类型来约束输出并提升一致性。
"properties": {
      "币种": {
         "type": ["enum", "null"],
          "enum": [
            "USD",
            "EUR",
            "JPY",
            "CAD",
            "AUD",
            "Other"
          ],
          "description": "国际货币种类代码"
      }
  }
3. 避免在 schema 中创造新数据,将数据处理放到下游完成。
# 通过 schema 抽取原文档中的月消费值
"properties": {
      "monthly_cost": { 
          "type": ["number", "null"],
          "description": "服务月度消费总计" 
      },
}
.
.
.
# 下游计算年消费值
total_annual_price = 
  extract_result.json()["result"][0]["monthly_cost"] * 12

4. 对于长列表使用数组类型。 如果你需要抽取一个较长的项目列表(例如发票表格中的订单列表),请在 schema 中使用数组类型(array)。这有助于引擎完整获取列表中的每一项,避免遗漏末尾的数据。