docs
UAEN

JSON Schema — витягування структурованих даних

Визначте JSON-схему, і Rekognita витягне саме ті дані, які вам потрібні — з будь-якого документа. Ідеально для автоматизації обробки інвойсів, медичних записів, контрактів тощо.

Як це працює

  1. Ви визначаєте JSON-схему з полями, які хочете витягнути
  2. Rekognita аналізує документ і знаходить відповідні дані
  3. Повертає структуровані дані у вашому форматі + координати (bounding box) кожного поля

Приклад: Інвойс

Схема

{
  "invoice_number": "string",
  "date": "string",
  "due_date": "string",
  "vendor": {
    "name": "string",
    "address": "string"
  },
  "total_amount": "number",
  "currency": "string",
  "line_items": [
    {
      "description": "string",
      "quantity": "number",
      "unit_price": "number",
      "amount": "number"
    }
  ]
}

Результат

{
  "data": {
    "invoice_number": "INV-2847",
    "date": "2024-12-15",
    "due_date": "2025-01-14",
    "vendor": {
      "name": "Acme Corporation",
      "address": "123 Business Ave, Suite 400, New York, NY 10001"
    },
    "total_amount": 848.00,
    "currency": "USD",
    "line_items": [
      {
        "description": "Document Processing API — Pro Plan",
        "quantity": 1,
        "unit_price": 499.00,
        "amount": 499.00
      },
      {
        "description": "Additional API calls (10,000)",
        "quantity": 10,
        "unit_price": 25.00,
        "amount": 250.00
      }
    ]
  },
  "citations": {
    "invoice_number": { "page": 1, "bbox": [350, 42, 480, 58] },
    "total_amount": { "page": 1, "bbox": [400, 320, 490, 338] }
  },
  "confidence": 0.97
}

SDK

from rekognita import RekognitaClient

client = RekognitaClient()

result = client.documents.extract(
    file="invoice.pdf",
    schema={
        "invoice_number": "string",
        "total_amount": "number",
        "line_items": [{
            "description": "string",
            "quantity": "number",
            "price": "number"
        }]
    },
    model="rekognita-accurate"
)

print(result.data["invoice_number"])  # "INV-2847"
print(result.data["total_amount"])    # 848.00
print(result.confidence)              # 0.97

# Координати кожного поля для аудиту
for field, citation in result.citations.items():
    print(f"{field}: page {citation.page}, bbox {citation.bbox}")

Підтримувані типи полів

ТипОписПриклад
stringТекстове значення"INV-2847"
numberЧислове значення848.00
booleanТак/Ніtrue
dateДата (ISO 8601)"2024-12-15"
arrayМасив об'єктів[{...}, {...}]
objectВкладений об'єкт{"name": "...", "address": "..."}
enumОдне з визначених значень"paid" | "pending" | "overdue"

Citations & Аудит

Кожне витягнуте поле має citation — координати (bounding box) на оригінальній сторінці. Це дозволяє:

  • Верифікувати результати візуально
  • Будувати аудит-trail для compliance
  • Показувати джерело даних користувачам