А мы все видим. 1С.. 1С. искусственный интеллект.. 1С. искусственный интеллект. распознавание изображений.

В библиотеке искусственного интеллекта для 1С появилась опция анализа изображения. Можно попросить большую языковую модель (LLM) выдать информацию на основании того, что она видит. Будет полезно познакомиться с тем, как это работает и что является best practice при работе с изображениями и LLM

Добавив опцию загрузки изображения в библиотеку, я стал экспериментировать. Как и положено 1С-нику, экспериментировал я ни с чем иным, как с УПД. Взял первый попавшийся документ в демонстрационной  базе Управление Торговлей ред. 11. Вывел на экран и сфотографировал, немного наклонив.

А мы все видим - 1

Изображение передается модели в формате base64. При этом, сначала идет префикс вида: “data:image/png;base64,”, а затем собственно строка base64. В префиксе указывается формат изображения. Поддерживаются форматы PNG (.png), JPEG (.jpeg and .jpg), WEBP (.webp), non-animated GIF (.gif).

В расширении, содержащем библиотеку, есть также обработка “Библиотека искусственного интеллекта пример”. Воспользуемся ею для экспериментов. Укажем путь к файлу изображения и зададим простой вопрос.

А мы все видим - 2

Теперь спросим что-нибудь сложнее

А мы все видим - 3

Что здесь считать строкой разобрались без проблем. Попробуем теперь получить ИНН продавца.

А мы все видим - 4

В общем ИИ неплохо ориентируется. Не путается в терминах “продавец”/”поставщик”, ИНН от КПП отличает. Попробуем преобразовать это изображение в заданную нами структуру

А мы все видим - 5

В принципе, это работает, но до практического применения еще далеко. Если вы попробуете воспользоваться этим вот так просто, что называется “в лоб”, тогда вам надо будет написать парсер для полученного ответа. Это только кажется относительно простой задачей. На деле, она почти не решаемая. ИИ будет вам выдавать правильные по сути структуры. Но по форме они будут время от времени “плавать”, например так:

А мы все видим - 6

В state-of-art моделях предусмотрена опция response_format для того, чтобы задавать фиксированный формат ответа. Я добавил поддержку этой опции в версию 14 библиотеки. Зададим JSON-схему ответа.

{
  "name": "Universal_Transfer_Document",
  "strict": true,
  "schema": {
    "type": "object",
    "properties": {
      "DocumentNumber": {
        "type": "string"
      },
      "DocumentDate": {
        "type": "string"
      },
      "Seller_INN_KPP": {
        "type": "string"
      },
      "DocumentItems": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "Code": {
              "type": "string"
            },
            "Quantity": {
              "type": "number"
            },
            "Price": {
              "type": "number"
            }
          },
          "required": [
            "Code",
            "Quantity",
            "Price"
          ],
          "additionalProperties": false
        }
      }
    },
    "additionalProperties": false,
    "required": [
      "DocumentNumber",
      "DocumentDate",
      "Seller_INN_KPP",
      "DocumentItems",
    ]
  }
}
А мы все видим - 7

Посмотрим, что у нас получится в ответе. Обратите внимание на то, что я оставил вопрос пользователя пустым. В данной ситуации он не нужен. Модели и так понятно, что надо преобразовать картинку в JSON. Что бы вы ни написали в поле “вопрос” результат будем один и тот, же. Поэтому не будем зря тратить входные токены.

А мы все видим - 8

 Вот мы и получили на выходе JSON структуру, соответствующий заданной нами схеме. Дальше можете делать с ней что хотите. Например, создавать документы в базе данных (ПТиУ или РТиУ).

Превращение потока в структуру, будь то голос, письменная речь или картинка — одна из важнейших, если не самая важная способность больших языковых моделей. А умение правильно использовать данную способность — одно из важнейших, если не самое важное сейчас качество разработчика.

Автор: exwill

Источник

Rambler's Top100