Поделиться через


Функция ai_parse_document

Область применения:Отмечено «Да» Databricks SQL Отмечено «Да» Databricks Runtime

Это важно

Эта функция доступна в бета-версии.

Функция ai_parse_document() вызывает модель генерированного искусственного интеллекта из API модели Databricks Foundation для извлечения структурированного содержимого из неструктурированных документов.

Требования

Это важно

Модель, обеспечивающая эту функцию, является частью семейства моделей Ламы и доступна через API Mosaic AI Model Serving Foundation. Для получения информации о том, какие модели Llama доступны на Databricks и о лицензионных условиях и политиках, регулирующих использование этих моделей, см. раздел Лицензии и условия разработчика применимых моделей. Если модели появляются в будущем, которые лучше работают в соответствии с внутренними тестами Databricks, Databricks может изменить модели и обновить документацию.

  • Рабочая область в одном из поддерживаемых регионов: eastus, , eastus2westusили centralusnorthcentralus.
  • Включено бета-версия агента ИИ Мозаики.
  • Databricks Runtime 16.4 LTS или более поздней версии.
  • При использовании бессерверных вычислений также требуется следующее:
    • Должен быть совместим с Databricks Runtime 16.4 или более поздней версии.
    • Версия бессерверной среды должна иметь значение 2, так как это обеспечивает такие VARIANTфункции.
    • Должен использовать Python или SQL. Дополнительные бессерверные функции и ограничения см. в разделе об ограничениях бессерверных вычислений.
  • Эта ai_parse_document функция доступна с помощью записных книжек Databricks, редактора SQL, рабочих процессов Databricks, заданий или декларативных конвейеров Lakeflow.
  • Сведения о выставлении счетов см. на странице цен на бета-продукты .

Безопасность данных

Данные документа обрабатываются в периметре безопасности Databricks. Databricks не сохраняет параметры, передаваемые в ai_parse_document function вызовы, но сохраняет сведения о выполнении метаданных, например используемую версию databricks Runtime.

Поддерживаемые форматы входных файлов

Входные файлы данных должны храниться в виде BLOB-данных в байтах, то есть в столбце двоичного типа в фрейме данных или в таблице Delta. Если исходные документы хранятся в томе каталога Unity, столбец двоичного типа можно создать с помощью средства чтения формата Spark binaryFile .

Поддерживаются следующие форматы файлов:

  • Формат pdf
  • JPG / JPEG
  • PNG

Синтаксис

ai_parse_document(content)
ai_parse_document(content, Map("version" -> "1.0"))

Аргументы

  • content BINARY: выражение, представляющее входные данные массива байтов.
  • version: версия выходной схемы, поддерживаемая: "1.0".

Возвраты

Функция ai_parse_document извлекает метаданные контекстного макета из документа, например page_number, header. footer Он также извлекает содержимое документа, например текстовые абзацы или таблицы, и представляет его в markdown. Выходные данные являются типом VARIANT .

Это важно

Схема выходных данных функции версионируется с использованием основного и дополнительного формата, например "1.0". Databricks может обновить поддерживаемую или по умолчанию версию, чтобы отразить улучшенные представления на основе текущих исследований.

  • Дополнительные обновления версий являются обратно совместимыми и могут вводить только новые поля.
  • Обновления основных версий могут включать критические изменения, такие как дополнения полей, удаление или переименование.

Ниже приведена схема выходных данных:

{
  "document": {
    "pages": [
      {
        "id": INT,                 // 0-based page index
        "page_number": STRING,     // Extracted page number (NULL if not found)
        "header": STRING,          // Extracted page header (NULL if not found)
        "footer": STRING,          // Extracted page footer (NULL if not found)
        "content": STRING          // Text content (markdown) of the entire page
      }
    ],
    "elements": [
      {
        "id": INT,                 // 0-based element index
        "type": STRING,            // Supported: text, table, figure
        "content": STRING,         // Text content (markdown) of the target element
        "page_id": INT             // 0-based page index where the element appears
      }
    ],
  },
  "corrupted_data": [
    {
      "malformed_response": STRING  // The response in malformed json format
      "page_id": INT                // 0-based page index
    }
  ],
  "error_status": [
    {
      "error_message": STRING       // The detailed error message
      "page_id": INT                // 0-based page index
    }
  ],
  "metadata": {
    "version": STRING,              // The version of the output schema
    "backend_id": STRING            // The backend id where the document is parsed
  }
}

Примеры

В следующем примере используется ai_parse_document для извлечения макетов документов в качестве VARIANT выходных данных.

SQL

SELECT
  path,
  ai_parse_document(content)
FROM READ_FILES('/Volumes/path/to/source/file.pdf', format => 'binaryFile');

Питон

from pyspark.sql.functions import *


df = spark.read.format("binaryFile") \
  .load("/Volumes/path/to/source/file.pdf") \
  .withColumn(
    "parsed",
    ai_parse_document("content"))
display(df)

язык программирования Scala

import org.apache.spark.sql.functions._


val df = spark.read.format("binaryFile")
  .load("/Volumes/path/to/source/file.pdf")
  .withColumn(
    "parsed",
    ai_parse_document($"content"))
display(df)

В следующем примере используется ai_parse_document для разделения каждого поля верхнего уровня выходных данных, например, document.pages, document.elements, corrupted_data, error_status и metadata в отдельные столбцы.

SQL

WITH corpus AS (
  SELECT
    path,
    ai_parse_document(content) AS parsed
  FROM
    READ_FILES('/Volumes/path/to/source/file.pdf', format => 'binaryFile')
)
SELECT
  path,
  parsed:document:pages,
  parsed:document:elements,
  parsed:corrupted_data,
  parsed:error_status,
  parsed:metadata
FROM corpus;

Питон

from pyspark.sql.functions import *


df = spark.read.format("binaryFile") \
 .load("/Volumes/path/to/source/file.pdf") \
 .withColumn(
   "parsed",
   ai_parse_document("content")) \
 .withColumn(
   "parsed_json",
   parse_json(col("parsed").cast("string"))) \
 .selectExpr(
   "path",
   "parsed_json:document:pages",
   "parsed_json:document:elements",
   "parsed_json:corrupted_data",
   "parsed_json:error_status",
   "parsed_json:metadata")
display(df)

язык программирования Scala


import com.databricks.sql.catalyst.unstructured.DocumentParseResultV1_0
import org.apache.spark.sql.functions._


val df = spark.read.format("binaryFile")
 .load("/Volumes/path/to/source/file.pdf")
 .withColumn(
   "parsed",
   ai_parse_document($"content").cast(DocumentParseResultV1_0.SCHEMA))
 .select(
   $"path",
   $"parsed.*")
display(df)

Ограничения

  • Хотя Databricks постоянно работает над улучшением всех его возможностей, LLM являются новыми технологиями и могут привести к ошибкам.
  • Функция ai_parse_document может занять некоторое время для извлечения содержимого документа при сохранении структурных сведений, особенно для документов, содержащих очень плотное содержимое или содержимое с низким разрешением. В некоторых случаях для выполнения функции может потребоваться некоторое время, или она может игнорировать содержимое. Databricks постоянно работает над улучшением задержки.
  • См. поддерживаемые форматы входных файлов. Databricks приветствует отзывы о том, какие дополнительные форматы наиболее важны для вашей организации.
  • Настройка модели, которая используется в ai_parse_document, или использование модели, предоставленной клиентом для ai_parse_document, не поддерживается.
  • Базовая модель может не работать оптимально при работе с изображениями с текстом из не латинских алфавитов, таких как японский или корейский.
  • Документы с цифровыми подписями могут не обрабатываться точно.