Распознавание сканов накладных локальной моделью Qwen2.5‑VL‑32B‑Instruct: пример результата

Введение

Недавно я протестировал локальную модель Qwen2.5‑VL‑32B‑Instruct на задаче распознавания сканов товарных накладных. Результат выглядит довольно убедительно, хотя я пока не проверял его точность в полном объёме.

Модель Qwen2.5‑VL‑32B‑Instruct

Qwen2.5‑VL‑32B‑Instruct – это большая визуально‑текстовая модель (VL), способная обрабатывать изображения и генерировать структурированные ответы. Она обучена на широком спектре задач, включая OCR, и может работать полностью локально без обращения к облачным сервисам.

Результат распознавания

Ниже приведён пример JSON‑вывода, полученный после обработки скана товарной накладной. Вы видите, как модель выделила тип документа, номер, дату, реквизиты получателя и список товаров с артикулами.

{
  "document_type": "Товарная накладная",
  "number": "923",
  "date": "02.06.2017",
  "recipient": {
    "recipient_name": "Частное лицо: Коршунова Мария",
    "recipient_address": "109044, Россия, Москва, 8-я улица Сокольной горы, д.22, кв/оф.203",
    "recipient_phone": "+79629978695"
  },
  "products": [
    {
      "product_name": "Трансмиссионное масло HONDA ATF-DW1 для АКПП, 5л, 0.49",
      "article_number": "082009008"
    },
    {
      "product_name": "Моторное масло HONDA Motor Oil ULTRA LTD SN 5W30 4L Япония (полусинтетика)",
      "article_number": "0621899974"
    },
    {
      "product_name": "Фильтр масляный",
      "article_number": "15400RTA003"
    },
    {
      "product_name": "Фильтр воздушный",
      "article_number": "17220RNAY00"
    },
    {
      "product_name": "Фильтр салонный",
      "article_number": "802927V1E01"
    },
    {
      "product_name": "Шайба уплотнительная сливного отверстия масла двигателя ММПП (14мм)",
      "article_number": "9410914000"
    }
  ]
}

Как использовать локальную модель

Для запуска модели локально понадобится:

  • Python 3.10+ с установленными библиотеками torch, transformers и datasets.
  • Установленный пакет qwen-vl-instruct (или аналогичный, предоставляющий доступ к Qwen2.5‑VL‑32B‑Instruct).
  • Графический процессор (GPU) с достаточным объёмом видеопамяти (минимум 16 GB).

Пример кода для инференса:

from qwen_vl_instruct import QwenVLInstruct

model = QwenVLInstruct.from_pretrained("Qwen/Qwen2.5-VL-32B-Instruct")
image_path = "path/to/scan.jpg"
result = model.run_instruct(image_path, prompt="Extract structured data from the invoice.")
print(result)

Вывод

Модель Qwen2.5‑VL‑32B‑Instruct демонстрирует хорошие результаты при распознавании сканов накладных, выдавая полностью структурированный JSON. Это открывает возможности для автоматизации обработки документов в локальной среде без необходимости обращения к облачным сервисам. Дальнейшая проверка точности и настройка под конкретные типы документов могут повысить надёжность решения.