- BrainTools - https://www.braintools.ru -

Применение локальных LLM для OCR

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

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

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

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

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

 

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

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

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 [3]на dotnet 9, которое обращалось к Ollama через RestAPI.

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

 

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

https://github.com/BlackEric001/OllamaTestClient/tree/main/Images [4].

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

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

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

Модель

Результат

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

Есть ошибки [6]

Использование ресурсов (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 [7]

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 [8]

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 [9]

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 [10]

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. Поэтому мы не могли сразу найти оптимальное соотношение по ресурсам, качеству и времени распознавания.

Автор: BlackEric001

Источник [11]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/22596

URLs in this post:

[1] Ollama : https://ollama.com/

[2] https://docs.ollama.com/api/introduction: https://docs.ollama.com/api/introduction

[3] OllamaTestClient : https://github.com/BlackEric001/OllamaTestClient

[4] https://github.com/BlackEric001/OllamaTestClient/tree/main/Images: https://github.com/BlackEric001/OllamaTestClient/tree/main/Images

[5] Скоробогачева_Айвазовский.jpg: https://github.com/BlackEric001/OllamaTestClient/blob/main/Images/%D0%A1%D0%BA%D0%BE%D1%80%D0%BE%D0%B1%D0%BE%D0%B3%D0%B0%D1%87%D0%B5%D0%B2%D0%B0_%D0%90%D0%B9%D0%B2%D0%B0%D0%B7%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9.jpg

[6] ошибки: http://www.braintools.ru/article/4192

[7] Орир_Физика.jpg: https://github.com/BlackEric001/OllamaTestClient/blob/main/Images/%D0%9E%D1%80%D0%B8%D1%80_%D0%A4%D0%B8%D0%B7%D0%B8%D0%BA%D0%B0.jpg

[8] Школьник_Птицы.jpg: https://github.com/BlackEric001/OllamaTestClient/blob/main/Images/%D0%A8%D0%BA%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_%D0%9F%D1%82%D0%B8%D1%86%D1%8B.jpg

[9] Kirby_History.jpg: https://github.com/BlackEric001/OllamaTestClient/blob/main/Images/Kirby_History.jpg

[10] Ионцева_Биология.jpg: https://github.com/BlackEric001/OllamaTestClient/blob/main/Images/%D0%98%D0%BE%D0%BD%D1%86%D0%B5%D0%B2%D0%B0_%D0%91%D0%B8%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F.jpg

[11] Источник: https://habr.com/ru/articles/971842/?utm_source=habrahabr&utm_medium=rss&utm_campaign=971842

www.BrainTools.ru

Rambler's Top100