> ## Documentation Index
> Fetch the complete documentation index at: https://docs.textin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 最佳实践

> 关于如何创建高质量 JSON schema 的建议

## 概述

构造良好的 schema 可以确保抽取结果更符合预期，且便于下游使用，本文分享的最佳实践包括：

* 如何定义清晰的字段
* 使用枚举与描述
* 避免不必要的嵌套
* 聚焦于原文档中的关键信息，引导抽取引擎准确理解抽取意图和解读文档

通过应用这些实践，您可以减少抽取错误、提高输出信息完整度，并利于下游更容易接入。

## JSON schema 建议

您的抽取 schema 对输出质量起着至关重要的作用。您可以在 schema 结构、描述（description）以及类型约束上多做尝试，以取得最佳抽取效果。

**1. 使用与原文档内容高度匹配的字段名，并为每个字段提供清晰的描述。**

采用与原文档中信息呈现方式一致的字段名和描述，有助于抽取引擎更容易识别并提取正确的值。例如从表格中抽取数据，可以直接使用表头作为字段名。

**2. 如果要抽取的数据是少量有限值的集合，可以使用枚举类型约束。**

如果某个字段有可预测的一组取值（例如“是/否”或预定义的类别），使用枚举（enum）类型来约束输出并提升一致性。

```json theme={null}
"properties": {
      "币种": {
         "type": ["enum", "null"],
          "enum": [
            "USD",
            "EUR",
            "JPY",
            "CAD",
            "AUD",
            "Other"
          ],
          "description": "国际货币种类代码"
      }
  }
```

**3. 避免在 schema 中创造新数据，将数据处理放到下游完成。**

```python theme={null}
# 通过 schema 抽取原文档中的月消费值
"properties": {
      "monthly_cost": { 
          "type": ["number", "null"],
          "description": "服务月度消费总计" 
      },
}
.
.
.
# 下游计算年消费值
total_annual_price = 
  extract_result.json()["result"][0]["monthly_cost"] * 12

```

**4. 对于长列表使用数组类型。**

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