Описувач ввмісту за допомогою ШІ для NVDA
Цей додаток дозволяє отримати докладні описи для зображень та іншого візуально недоступного вмісту.
Використовуючи мультимодальні можливості передових моделей штучного інтелекту та алгоритмів комп'ютерного зору, ми прагнемо надавати найкращі у своєму класі описи контенту та підвищити загальну незалежність. Для отримання додаткової інформації про моделі, що лежать в основі, зверніться до відповідного розділу цього документа.
Особливості
- Опис об'єкта у фокусі, об'єкта навігатора, всього екрана або фотографії з вебкамери
- Опис будь-якого зображення, яке було скопійовано до буфера обміну — чи то зображення з електронного листа, чи шлях у провіднику Windows
- Визначає, чи обличчя користувача розташоване в центрі кадру, використовуючи алгоритми комп'ютерного зору (не потребує доступу до платного API).
- Початково безкоштовно , за бажанням додайте свій API ключ для інших моделей
- Підтримує кілька постачальників (GPT4 OpenAI, Gemini Google, Mistral Pixtral Large, Anthropic Claude 3 Ollama та llama.cpp)
- Підтримує широкий спектр форматів, включаючи PNG (.png), JPEG (.jpeg і .jpg), WEBP (.webp) і неанімований GIF (.gif)
- Додатково кешує відповіді, щоб зберегти ліміт API
- Для розширеного використання налаштуйте підказку та кількість токенів, щоб адаптувати інформацію до ваших потреб
- Ставити уточнюючі запитання та додавати додаткові зображення
- Відтворення Markdown для легкого доступу до структурованої інформації (просто увімкніть налаштування "відкривати результат у діалозі, доступному для огляду ( і вставте, наприклад, «відповідай в Markdown» у кінці підказки)
Варіант використання
За цим проектом стояло кілька основних мотивів.
NVDA початково здатна виконувати оптичне розпізнавання символів (OCR), що змінює правила гри. Якщо ви намагаєтеся витягти текст із зображення або PDF-документа, це те, що вам потрібно.
Однак OCR здатний аналізувати лише ті дані, які «можуть» бути текстом. Він не здатен врахувати контекст, об'єкти та взаємозв'язки, передані в цих зображеннях. А в інтернеті їх повно. Логотипи, портрети, меми, іконки, графіки, діаграми, гістограми... Все, що завгодно. Вони всюди, і, як правило, не в тому форматі, який користувачі екранних читачів можуть інтерпретувати.
Донедавна існувала непохитна довіра до авторів вмісту, які надавали альтернативні текстові описи. Хоча це все ще є обов'язковим, важко змінити той факт, що високий стандарт якості є скоріше винятком, ніж правилом.
Тепер можливості майже безмежні. Ви можете:
- Візуалізувати робочий стіл або конкретне вікно, щоб зрозуміти розміщення іконок під час навчання інших
- Отримати детальну інформацію про стан ігор, віртуальних машин тощо, коли звук недостатній або недоступний
- Зрозуміти, що відображається на графіку
- Розпізнати знімки екрана
- Переконатись, що ваше обличчя чітко дивиться на камеру, перш ніж записувати відео або брати участь в онлайн-зустрічі
Моделі
- GPT-4.1: GPT-4.1 чудово справляється з виконанням інструкцій та запуском інструментів, володіючи широкими знаннями в різних сферах. Має контекстне вікно розміром 1 млн токенів та низьку затримку без етапу міркування. Потрібен ключ API OpenAI. У діалозі конфігурації моделі показується як «GPT-4.1». Підтримує додаткові запитання та всі формати, що підтримуються GPT-4o.
- GPT-5 chat: найновіша мультимодальна модель OpenAI, що підтримує зображення та текст через API Чат. Потрібен ключ API OpenAI. У діалозі налаштуваннь моделі показується як «GPT-5 chat». Залиште поле підказки порожнім, щоб використовувати початкову підказку, або вкажіть власну. Підтримує додаткові запитання та всі формати, що підтримуються GPT-4o.
- GPT4 vision, включаючи 4O, O1, O3 та похідні
- Google Gemini, включаючи моделі 2.5 Flash, 2.5 Flash-Lite, 2.5 Pro, 3 Flash Preview, 3.1 Flash-Lite Preview та 3.1 Pro Preview.
- Claude 3 та 4 (Haiku, Sonett та Opus)
- Pixtral Large
- Grok-2
- Ollama (нестабільна)
- llama.cpp (дуже нестабільна і повільна залежно від вашого обладнання, перевірено на сумісність з моделями llava-v1.5/1.6, BakLLaVA, Obsidian та MobileVLM 1.7B/3B)
- LiteLLM Proxy: Доступ до декількох моделей ШІ через єдиний проксі-сервер. Потрібен URL проксі-сервера LiteLLM, а також, залежно від конфігурації проксі, ключ API. У діалозі конфігурації моделі показується як «LiteLLM Proxy». Підтримує динамічний вибір моделі та додаткові запитання. Сумісний з усіма форматами (PNG, JPEG, WEBP, GIF).
Дотримуйтеся наведених нижче інструкцій, щоб кожна з них працювала.
Початок роботи
Завантажте останню версію додатка за цим посиланням. Клацніть файл на комп’ютері з інстальованою NVDA та слідуйте підказкам:
Починаючи з версії 2025.06.05, використання GPT4 є безкоштовним завдяки щедрості спільноти, що стоїть за PollinationsAI.
Якщо у вас є ресурси та інтерес до вивчення додаткових моделей, ви завжди можете використати власний ключ API і зменшити кількість запитів до їхніх серверів. Якщо ви цього не зробите, просто перейдіть до розділу Використання в цьому документі.
Дотримуйтесь наведених нижче інструкцій, щоб отримати ключ API від підтримуваного постачальника.
Яку модель використовувати?
Раніше ми надавали рекомендації щодо найдешевших і найякісніших варіантів, але ситуація змінюється настільки стрімко, що неможливо встигати за цими змінами.
Коротка відповідь така: більшість сучасних моделей досягли рівня, коли вони забезпечують достатню точність для більшості повсякденних завдань, тому обирайте того постачальника, з яким ви вже знайомі.
Більшість людей хочуть знайти баланс між точністю та вартістю. Таблиця лідерів LLM arena (зокрема категорія візуальних моделей) вимірює правильність, а калькулятор цін на LLM показує ціни.
Отримання ключа API від OpenAI:
- Перейдіть на сторінку https://platform.openai.com/account/api-keys
- Якщо у вас ще немає облікового запису, створіть його. Якщо маєте, увійдіть.
- На сторінці ключів API натисніть (Створити новий секретний ключ). Скопіюйте його в буфер обміну.
- Поповніть рахунок принаймні на 1 дол
- У діалозі налаштувань NVDA прокрутіть вниз до категорії «Описувач вмісту за допомогою ШІ», потім перейдіть до поля Ключ API і вставте туди щойно згенерований ключ.
На момент написання цієї статті OpenAI видає кредити на нові акаунти розробників, які можна використовувати протягом трьох місяців, після чого вони втрачаються. Після цього періоду вам потрібно буде придбати кредити. Звичайне використання не повинно перевищувати $5.00 на місяць. Для порівняння, оригінальна версія цього додатка була розроблена за трохи менше долара. Ви завжди можете увійти до свого облікового запису OpenAI і натиснути на "використання", щоб дізнатись свій ліміт.
Отримання ключа API від Google
- Спочатку вам потрібно створити проект у робочому просторі Google, перейшовши за посиланням нижче. Переконайтеся, що ви увійшли до свого облікового запису. https://console.cloud.google.com/projectcreate
- Створіть назву від чотирьох до тридцяти символів, як-от «gemini» або «NVDA add-on»
- Перейдіть за цією URL-адресою: https://makersuite.google.com/app/apikey
- Натисніть «створити ключ API»
- У діалозі налаштувань NVDA прокрутіть вниз до категорії Описувач вмісту за допомогою ШІ, потім виберіть "керувати моделями (alt+m)", виберіть "Google Gemini" як постачальника, перейдіть до поля "Ключ API" і вставте сюди щойно згенерований ключ.
Отримання ключа API від Anthropic
- Увійдіть до Anthropic console.
- Натисніть на свій профіль -> Ключі API.
- Натисніть Створити ключ.
- Введіть назву для ключа, наприклад "AIContentDescriber", потім натисніть "Створити ключ" і скопіюйте значення, що з'явиться. Це те, що ви вставите у поле ключа API під категорією Описувач вмісту за допомогою ШІ діалогу налаштувань NVDA -> керувати моделями -> Клод 3.
- Якщо ви ще цього не зробили, придбайте кредитів щонайменше на 5 доларів США на сторінці планів за адресою https://console.anthropic.com/settings/plans.
Отримання ключа API від Mistral
- Увійдіть або створіть обліковий запис MistralAI, перейшовши на сторінку входу в MistralAI.
- Якщо ви створюєте обліковий запис або входите в нього вперше, додайте робочу область відповідно до запиту, вказавши ім'я та прийнявши умови та положення.
- Після входу в систему виберіть «API ключі» з меню.
- Натисніть «створити новий ключ» і скопіюйте його в буфер обміну. Це значення буде вставлено у поле «Ключ API» в категорії «Описувач вмісту за допомогою ШІ» у діалозі налаштувань NVDA -> Керування моделями -> Pixtral.
- Поповніть рахунок, якщо це необхідно.
Активація моделі розпізнавання VIVO BlueLM через NVDA-CN
Ця послуга надається безкоштовно завдяки партнерству між компанією VIVO (vivo.com.cn) та китайською спільнотою NVDA (NVDACN). Вона забезпечує високоякісне мультимодальне розпізнавання і є рекомендованою моделлю для всіх користувачів, особливо для початківців.
Щоб скористатися цією моделлю, вам знадобиться лише безкоштовний обліковий запис NVDA-CN.
- Створіть обліковий запис: перейдіть на сторінку реєстрації NVDA-CN: https://nvdacn.com/admin/register.php.
- Примітка: Наразі сторінка доступна лише китайською мовою. Для заповнення форми рекомендуємо скористатися вбудованою функцією перекладу вашого браузера.
- Вам буде запропоновано ввести ім'я користувача, пароль та дійсну адресу електронної пошти. Обов'язково збережіть свій пароль у безпечному місці, оскільки автоматичне відновлення пароля ще не реалізовано.
- Підтвердьте свою електронну пошту: Перевірте свою поштову скриньку на наявність листа з підтвердженням та натисніть на посилання в ньому, щоб активувати свій обліковий запис.
- Налаштуйте додаток:
- Відкрийте діалог налаштувань NVDA та перейдіть до категорії «Описувач вмісту за допомогою ШІ».
- Натисніть кнопку «Керувати моделями».
- У списку постачальників виберіть «vivo BlueLM Vision (NVDA-CN)».
- Введіть своє ім’я користувача та пароль NVDA-CN у відповідні поля.
- Натисніть «OK», щоб зберегти свої облікові дані.
Тепер ви готові до використання моделі VIVO. З будь-яких питань, пов’язаних з обліковим записом, ви можете звернутися до команди NVDA-CN за адресою support@nvdacn.com.
Налаштування Ollama
Наразі це найкращий варіант для локального налаштування.
Хоча інтеграція Ollama була протестована більш широко, ніж llama.cpp, вона все ще менш стабільна, ніж виклик API, і, як відомо, поводиться дивно в деяких конфігураціях, аж до збоїв на комп'ютерах, які не мають необхідних специфікацій
Щонайменше, коли пробуєте це вперше, збережіть усі документи та важливі дані перед тим, як продовжити, щоб бути готовими у випадку, якщо це станеться з вами.
Почніть з перевірки можливості взаємодії з вашою моделлю, здатною до технічного зору, використовуючи інтерфейс командного рядка. Кроки для цього такі:
- Завантажте інсталяційний файл Ollama для Windows зі сторінки Завантаження Ollama.
- Запустіть цей файл налаштування. Він автоматично завантажить усі залежності, необхідні для вашого компьютера.
- Знайдіть модель, яку ви хочете використовувати. Список можна знайти на ollama.com -> models -> vision, або безпосередньо тут.
- Завантажте і запустіть цю модель, відкривши командний рядок і набравши
ollama run [назва_моделі], звичайно, замінивши «[назва_моделі]» на ту, яку ви вибрали на кроці 3. Наприклад, ollama run llama3.2-vision.
- Якщо процес завершився успішно, ви потрапите в інтерактивну оболонку, де зможете вводити запити та отримувати відповіді від моделі, подібно до локалізованого (та обмеженого) ChatGPT. Перевірте це, задавши будь-яке питання, щоб перевірити, чи працює воно, а потім введіть "/bye", щоб вийти з цього інтерфейсу.
- Повернувшись до діалогу консолі, введіть
ollama list. У першому стовпчику буде вказано назву на зразок «llama3.2-vision:latest».
- Перейдіть до налаштувань Описувач вмісту за допомогою ШІ -> керувати моделями -> Ollama. У полі «Назва моделі» введіть це значення і натисніть «ОК» -> «ОК». Все готово! Перейдіть на Ollama в підменю моделі, і через деякий час вона має запрацювати.
Налаштування llama.cpp
Наразі цей провайдер є дещо нестабільним, і ваш досвід може значно варіюватися. Насправді його варто використовувати лише досвідченим користувачам, які зацікавлені у використанні локальних саморозміщених моделей і мають для цього відповідне апаратне забезпечення.
- Завантажте llama.cpp. На момент написання цієї статті цей pull request вилучає мультимодальні можливості, тому вам краще використовувати останню версію з підтримкою цього.
Якщо ви працюєте на графічному адаптері Nvidia з підтримкою CUDA, завантажте ці готові двійкові файли:
llama-b2356-bin-win-cublas-cu12.2.0-x64.zip та cudart-llama-bin-win-cu12.2.0-x64.zip
Кроки для роботи з іншим графічним адаптером винесено за рамки цієї статті, але їх можна знайти у файлі readme llama.cpp.
- Розпакуйте обидва файли до однієї теки.
- Знайдіть у Huggingface квантовані формати моделей, які ви хочете використовувати. Для LLaVA 1.6 Vicuna 7B: llava-v1.6-vicuna-7b.Q4_K_M.gguf та mmproj-model-f16.gguf
- Покладіть ці файли до теки з рештою двійкових файлів llama.cpp.
- З командного рядка запустіть двійковий файл сервера llava.cpp, передавши файли .gguf для моделі та мультимодального проектора (як показано нижче):
server.exe -m llava-v1.6-vicuna-7b.Q4_K_M.gguf --mmproj mmproj-model-f16.gguf.
- У діалозі налаштувань NVDA прокрутіть вниз до категорії Описувач вмісту за допомогою ШІ, потім виберіть "керувати моделями (alt+m)", виберіть "llama.cpp" як постачальника, перейдіть до поля базової URL-адреси і введіть кінцеву точку, показану в консолі (початково "http://localhost:8080").
- Крім того, ви можете пропустити деякі з цих кроків і запустити llama.cpp на віддаленому сервері з вищими характеристиками, ніж на вашій локальній машині, а потім ввести ту саму кінцеву точку.
Налаштування проксі-сервера LiteLLM
Проксі-сервер LiteLLM надає єдиний інтерфейс для доступу до декількох моделей штучного інтелекту через одну кінцеву точку, що спрощує управління моделями та дозволяє легко перемикатися між постачальниками.
- Налаштуйте проксі-сервер LiteLLM, дотримуючись документації проксі-сервера LiteLLM. Ви можете запустити проксі локально або використовувати віддалений сервер.
- Якщо ви запускаєте локально, найшвидший спосіб розпочати роботу:
pip install “litellm[proxy]”
litellm --model gpt-4o
Це запустить проксі-сервер за адресою http://localhost:4000, який переадресовує запити до GPT-4o від OpenAI.
- Для використання у виробничому середовищі створіть файл
config.yaml, щоб налаштувати кілька моделей та автентифікацію. Детальніше дивіться у посібнику з налаштування LiteLLM.
- У діалозі налаштувань NVDA прокрутіть вниз до категорії «Описувач вмісту за допомогою ШІ», потім виберіть "керувати моделями (alt+m)" і виберіть «LiteLLM Proxy» як свого постачальника.
- Введіть URL вашого проксі-сервера в поле «базова URL» (наприклад, «http://localhost:4000» для локального або URL вашого віддаленого сервера).
- Якщо ваш проксі вимагає автентифікації, введіть ключ API у поле Ключ API. Якщо ні, залиште його порожнім.
- Натисніть кнопку «Список моделей», щоб завантажити доступні моделі з вашого проксі, а потім виберіть модель, яку ви хочете використовувати, зі списку.
- Налаштуйте інші параметри, такі як підказка, максимальна кількість токенів та час очікування, за потреби, а потім натисніть OK.
Примітка: Доступні моделі та їхні можливості залежать від конфігурації вашого проксі-сервера LiteLLM. Переконайтеся, що ваш проксі-сервер налаштований з моделями, здатними обробляти зображення, для опису зображень.
Використання
Початково призначено п'ять гарячих клавіш:
- NVDA+shift+i: відкриває спливаюче меню із запитом, чи потрібно описати поточний фокус, об’єкт навігатора чи весь екран за допомогою ШІ.
- NVDA+shift+u: Описати вміст поточного об'єкта навігатора за допомогою ШІ.
- NVDA+shift+y: Описати зображення (або шлях до файлу зображення) у буфері обміну за допомогою ШІ.
- NVDA+shift+j: описати положення вашого обличчя в кадрі вибраної камери. Якщо у вас під’єднано кілька камер, перейдіть до меню описувача вмісту за допомогою ШІ (NVDA+shift+i) і виберіть ту, яку ви бажаєте використати, за допомогою пункту «Виберіть камеру» у підменю визначення обличчя.
- NVDA+shift+c: Відкриває діалог з ШІ для подальших запитань та мультимодального чату.
Три жести не призначені:
- Описати вміст об'єкта, на якому перебуває фокус, використовуючи ШІ.
- Зробити знімок екрана, а потім описати його за допомогою ШІ.
- Зробити знімок за допомогою вибраної камери, а потім описати його за допомогою ШІ.
Ви можете налаштувати їх у будь-який час за допомогою діалогу «Жести вводу».
Подальші кроки щодо попереднього опису
Іноді відповідь, яку ви отримуєте від штучного інтелекту, буває недостатньою. Можливо, зображення низької якості, неповне або містить небажані деталі. Можливо, ви хочете зосередитися на певній ділянці або зробити чіткіше фото без втрати контексту.
Отримавши опис, ви можете натиснути NVDA+shift+c або вибрати «Подальші кроки щодо попереднього опису» у контекстному меню Описувач вмісту за допомогою ШІ (NVDA+shift+i). Початково фокус встановлюється на полі повідомлення.
Щоб додати додаткове зображення, просто тримайте діалог розмови відкритим і використовуйте додаток, як ви зазвичай робите. Коли буде зроблено знімок (будь то з камери, скріншот і т.д.), вас запитають, чи хочете ви прикріпити її до поточної сесії чи почати нову.
Внески
Усі вони високо оцінені та будуть зараховані.
Над додатком працювали наступні люди.
Виникла проблема? Надішліть її в систему відстеження проблем
Маєте пропозицію щодо нової функції? Створіть для цього також обговорення, і ми зможемо обговорити його реалізацію. Запити без супутніх проблем будуть розглянуті, але, ймовірно, займуть більше часу для всіх, особливо якщо я вирішу, що нове виправлення або функціонал повинен працювати інакше, ніж було запропоновано.
Якщо у вас немає Github або ви не бажаєте ним користуватися, ви можете написати мені листа - cartertemm@gmail.com
Дякую за підтримку!