Вдруг кому-то будет полезно. Возникла задача быстрого распознавания данных с фотографий и получения из них структурированной информации. Так же важно было отсутствие требовательного к ресурсам ПО и легкость разворачивания системы. Поэтому было решено попробовать использовать в качестве подключаемого модуля мультимодальные LLM запускаемые под Ollama, т.к. у неё есть REST API по которому удобно обращаться к модели.

В последних версиях Ollama появился графический интерфейс, но он неудобен. Модели в ollama проще всего загрузить из командной строки. Например: ollama pull codellama.

В этом случае на экране должно быть выведено что-то вроде:

Загрузка модели в Ollama
Загрузка модели в Ollama

 

Документацию по Rest Api Ollama можно найти на их сайте: https://docs.ollama.com/api/introduction

Все тесты производились на следующем железе:

M/B Asus Prime B450M-A, ЦП Ryzen 5 2400G, 32GB ОЗУ, Видеокарта KFA 2 RTX 3060 12 GB. OC Win10 установлена на M2 SSD FX900 Plus, на ней же расположены участвующие в тестах модели. К сожалению, материнская плата, в отличие от видеокарты, поддерживает только PCI-E 3, поэтому потенциал карты остался не раскрыт.

В сравнении участвовали следующие модели:

Модель

Размер ollama list

Размер ollama ps

qwen3-vl:8b

6.1 GB

11 GB

qwen2.5vl:32b

21 GB

24 GB

gemma3:27b

17 GB

20 GB

llava:latest

4.7 GB

4.9 GB

 

Для проведения тестирования и выбора модели было написано тестовое приложение OllamaTestClient на dotnet 9, которое обращалось к Ollama через RestAPI.

Сравнение проводилось на фотографиях титульных страниц книг со следующим промтом:

 

Файлы на каких проводились тесы можно найти в репозитории на гитхабе:

https://github.com/BlackEric001/OllamaTestClient/tree/main/Images.

При работе нужно учитывать, что при первом запуске ollama загружает модель, поэтому время первого ответа будет больше. В таблице везде время второго запуска.

В результате получилась следующая картина:

Файл: Скоробогачева_Айвазовский.jpg

Модель

Результат

Время распознавания

Есть ошибки

Использование ресурсов (ollama ps)

llava:latest

{"Автор": "Стефан Иванов", "Название": "Абдulбакир Абдулрахман", "Год издания": 2019, "Издательство": "Московский университет", "Гoрод издания": null}

00:06.0577822

Совсем неверно.

Каждый раз дру��ой вывод.

100% GPU

gemma3:27b

{

  "Автор": "Екатерина Скоробогатова",

  "Название": "Айвазовский",

  "Год издания": null,

  "Издательство": "Молодая гвардия",

  "Город издания": "Москва"

}

00:42.9661306

Да. Ошибка в фамилии автора

48%/52% CPU/GPU

qwen2.5vl:32b

{

  "Автор": "Екатерина Скоробогачева",

  "Название": "Айвазововский",

  "Год издания": 2021,

  "Издательство": "Молодая Гвардия",

  "Город издания": "Москва"

}

01:08.2151583

Нет

55%/45% CPU/GPU

qwen3-vl:8b

{"Автор": "Екатерина Скоробогачева", "Название": "АЙВАЗОВСКИЙ", "Год издания": 2021, "Издательство": "МОЛОДАЯ ГВАРДИЯ", "Город издания": "МОСКВА"}

00:10.6235716

Нет

18%/82% CPU/GPU

llava:latest дальше не тестировали, т.к. совсем не работает.

Файл: Орир_Физика.jpg

gemma3:27b

{

  "Автор": "Джей Орир",

  "Название": "ФИЗИКА. ПОЛНЫЙ КУРС. примеры, задачи, решения",

  "Год издания": null,

  "Издательство": null,

  "Город издания": null

}

00:41.5113788

Нет

48%/52% CPU/GPU

qwen2.5vl:32b

{

  "Автор": "Джей Орир",

  "Название": "Физика. Полный курс. Примеры, задачи, решения",

  "Год издания": null,

  "Издательство": "Учебник",

  "Город издания": null

}

00:59.6325552

Да. Неверно указано издательство

55%/45% CPU/GPU

qwen3-vl:8b

{"Автор": "Джей Орир", "Название": "ФИЗИКА полный курс примеры, задачи, решения", "Год издания": null, "Издательство": "Университет", "Город издания": null}

00:06.0786742

Нет

18%/82% CPU/GPU

 

Файл: Школьник_Птицы.jpg

gemma3:27b

{

  "Автор": "null",

  "Название": "Птицы. Полная энциклопедия",

  "Год издания": "2007",

  "Издательство": "Эксмо",

  "Город издания": "Москва"

}

00:37.9917091

Да. Потерян автор

48%/52% CPU/GPU

qwen2.5vl:32b

{

  "Автор": "Юлия Школьник",

  "Название": "Птицы",

  "Год издания": 2007,

  "Издательство": "Эксмо",

  "Город издания": "Москва"

}

00:57.0005204

Нет. Отсутствие в выводе «Полная энциклопедия» не критично

57%/43% CPU/GPU

qwen3-vl:8b

{"Автор": "Юлия Школьник", "Название": "Птицы. Полная энциклопедия", "Год издания": 2007, "Издательство": "ЭКСМО", "Город издания": "Москва"}

00:06.2948445

Нет

18%/82% CPU/GPU

 

Файл: Kirby_History.jpg

gemma3:27b

{

  "Автор": "RICHARD SHELTON KIRBY, SIDNEY WITHINGTON, ARTHUR BURR DARLING, FREDERICK GRIDLEY KILGOUR",

  "Название": "ENGINEERING IN HISTORY",

  "Год издания": null,

  "Издательство": null,

  "Город издания": null

}

00:46.2798199

Нет

48%/52% CPU/GPU

qwen2.5vl:32b

{

  "Автор": "Richard Shelton Kirby, Sidney Withington, Arthur Burr Darling, Frederick Gridley Kilgour",

  "Название": "Engineering History",

  "Год издания": null,

  "Издательство": null,

  "Город издания": null

}

00:55.4729723

Да. Пропущено In в названии

55%/45% CPU/GPU

qwen3-vl:8b

{"Автор": "RICHARD SHELTON KIRBY, SIDNEY WITHINGTON, ARTHUR BURR DARLING, FREDERICK GRIDLEY KILGOUR", "Название": "ENGINEERING IN HISTORY", "Год издания": null, "Издательство": null, "Город издания": null}

00:06.8475652

Нет

18%/82% CPU/GPU

 

Файл: Ионцева_Биология.jpg

gemma3:27b

{

  "Автор": "А.Ю. Ионцева",

  "Название": "БИОЛОГИЯ. ВЕСЬ ШКОЛЬНЫЙ КУРС В СХЕМАХ И ТАБЛИЦАХ",

  "Год издания": "2019",

  "Издательство": null,

  "Город издания": "Москва"

}

00:53.5258399

Нет

48%/52% CPU/GPU

qwen2.5vl:32b

{

  "Автор": "А.Ю. Ионцева",

  "Название": "Биология",

  "Год издания": "2019",

  "Издательство": null,

  "Город издания": "Москва"

}

00:54.0656173

Нет

57%/43% CPU/GPU

qwen3-vl:8b

{"Автор": "А.Ю. Ионцева", "Название": "Биология", "Год издания": 2019, "Издательство": null, "Город издания": "Москва"}

00:08.5062277

Нет. Считаем, что эмблему издательства можно не распознавать. Название только «Биология»

18%/82% CPU/GPU

 

Ollama Test Client
Ollama Test Client

 

Qwen3-vl:8b оказался оптимальным для этой задачи. Собственно, все эти сравнения проводились еще летом, незадолго до выхода qwen3. Поэтому мы не могли сразу найти оптимальное соотношение по ресурсам, качеству и времени распознавания.

Комментарии (0)