Ce module complémentaire permet d'obtenir des descriptions détaillées des images, des contrôles de l'interface utilisateur et d'autres contenus visuellement inaccessibles.
En tirant parti des capacités multimodales des modèles d’IA avancés et des algorithmes de vision par ordinateur, nous visons à fournir les meilleures descriptions de contenu et à accroître l’indépendance globale. Pour plus d'informations sur les modèles sous-jacents, reportez-vous à la section correspondante de ce document.
Décrivez l'objet focal, l'objet navigateur, l'intégralité de l'écran ou prenez une photo à partir de la caméra embarquée.
Décrivez toute image qui a été copiée dans le presse-papiers, qu'il s'agisse d'une image provenant d'un e-mail ou d'un chemin dans l'explorateur Windows.
Indiquez si le visage de l'utilisateur est positionné au centre du cadre à l'aide d'algorithmes de vision par ordinateur (ne nécessite pas d'accès API payant)
Prend en charge plusieurs fournisseurs (GPT4 d'OpenAI, Gemini de Google, Claude 3 d'Anthropic et lama.cpp)
Prend en charge une grande variété de formats, notamment PNG (.png), JPEG (.jpeg et .jpg), WEBP (.webp) et GIF non animé (.gif)
Met éventuellement en cache les réponses pour préserver le quota de l'API
Pour une utilisation avancée, personnalisez l'invite et le nombre de jetons pour adapter les informations à vos besoins.
Rendu Markdown pour accéder facilement aux informations structurées (intégrez simplement, par exemple, "répondre dans Markdown" à la fin de vos invites)
Il y avait quelques motivations principales derrière ce projet.
NVDA est capable d'effectuer une reconnaissance optique de caractères (OCR) dès le départ, ce qui change la donne. Si vous essayez d'extraire du texte d'une image ou d'un document PDF, c'est ce que vous recherchez.
Cependant, l'OCR n'est capable d'analyser que des données pouvant être du texte. Il ne parvient pas à prendre en compte le contexte, les objets et les relations véhiculés dans ces images. Et Internet en regorge. Logos, portraits, mèmes, icônes, graphiques, diagrammes, graphiques à barres/lignes... Vous l'appelez. Ils sont partout et généralement pas dans un format que les utilisateurs de lecteurs d'écran peuvent interpréter. Jusqu’à récemment, on comptait toujours sur les auteurs de contenu pour fournir des descriptions textuelles alternatives. Même si cela reste une nécessité, il est difficile de changer le fait qu'un niveau de qualité élevé constitue l'exception et non la règle.
Désormais, les possibilités sont presque infinies. Vous pourriez :
Visualisez le bureau ou une fenêtre spécifique pour comprendre l'emplacement des icônes lors de la formation des autres
Obtenez des informations détaillées sur l'état des jeux, des machines virtuelles, etc. lorsque le son est insuffisant ou indisponible
Déterminez ce qui est affiché dans un graphique
Démystifiez les captures d'écran ou les partages d'écran dans Zoom ou Microsoft Teams
Assurez-vous que votre visage regarde clairement la caméra et que votre expérience est professionnelle avant d'enregistrer des vidéos ou de participer à des réunions en ligne.
Vision GPT4
Offre Google Gemini
Claude 3 (Haïku, Sonett et Opus)
llama.cpp (extrêmement instable et lent en fonction de votre matériel, testé pour fonctionner avec les modèles llava-v1.5/1.6, BakLLaVA, Obsidian et MobileVLM 1.7B/3B)
Suivez les instructions fournies ci-dessous pour que chacun d’entre eux fonctionne.
Téléchargez la dernière version du module complémentaire à partir de ce lien. Cliquez sur le fichier sur un ordinateur sur lequel NVDA est installé, puis suivez les instructions ci-dessous pour obtenir une clé API auprès d'un fournisseur pris en charge. Si vous ne savez pas lequel utiliser, le consensus des développeurs et des testeurs de cet addon est que Gemini propose actuellement des prix plus raisonnables, tandis qu'Open-AI semble offrir un degré de précision plus élevé. Claude 3 haïku est l’option la moins chère et la plus rapide, mais la qualité est aléatoire. Bien entendu, ces résultats dépendent fortement de la tâche à accomplir. Nous vous recommandons donc d’expérimenter différents modèles et invites pour trouver ce qui fonctionne le mieux.
Accédez à la page des clés API d'open-AI
Si vous n'avez pas encore de compte, créez-en un. Si vous le faites, connectez-vous.
Sur la page Clés API, cliquez pour créer une nouvelle clé secrète. Copiez-le dans votre presse-papiers.
Alimenter le compte avec au moins 1 $
Dans la boîte de dialogue des paramètres de NVDA, faites défiler jusqu'à la catégorie AI Content Describer, puis choisissez "gérer les modèles (alt+m)", sélectionnez "GPT4 Vision" comme fournisseur, tapez dans le champ Clé API et collez la clé que vous venez de générer. ici.
Au moment d'écrire ces lignes, Open-AI délivre des crédits aux nouveaux comptes de développeur qui peuvent être utilisés pendant trois mois, après quoi ils sont perdus. Passé ce délai, vous devrez acheter des crédits. L'utilisation typique ne devrait jamais dépasser 5,00 $ par mois. À titre de référence, la version originale de ce module complémentaire a été développée pour un peu moins d'un dollar. Il est toujours possible de vous connecter à votre compte OpenAI et de cliquer sur « utilisation » pour obtenir votre quota.
Vous devrez d'abord créer un projet Google Workspace en accédant à Google Cloud Console. Assurez-vous que vous êtes connecté à votre compte Google.
Créez un nom entre quatre et trente caractères, comme « Gemini » ou « module complémentaire NVDA ».
Accédez à la page des clés API de Google AI Studio
Cliquez sur "créer une clé API"
Dans la boîte de dialogue des paramètres de NVDA, faites défiler jusqu'à la catégorie AI Content Describer, puis choisissez « Gérer les modèles (alt+m) », sélectionnez « Google Gemini » comme fournisseur, accédez au champ Clé API et collez la clé que vous venez de générer. ici.
Connectez-vous à la console Anthropic.
Cliquez sur votre profil -> Clés API.
Cliquez sur Créer une clé.
Entrez un nom pour la clé, comme "AIContentDescriber", puis cliquez sur "Créer une clé" et copiez la valeur qui apparaît. C'est ce que vous collerez dans le champ Clé API sous la catégorie Ai Content Describer de la boîte de dialogue des paramètres NVDA -> gérer les modèles -> Claude 3.
Si vous ne l'avez pas déjà fait, achetez au moins 5 $ de crédits sur la page des plans anthropiques.
Ce fournisseur est actuellement quelque peu bogué et votre kilométrage peut être très élevé. Cela ne devrait être tenté que par des utilisateurs avancés souhaitant exécuter des modèles locaux auto-hébergés et disposant du matériel nécessaire pour le faire.
Téléchargez lama.cpp. Au moment d'écrire ces lignes, cette pull request supprime les fonctionnalités multimodales, vous souhaiterez donc utiliser la dernière version prenant en charge cela. Si vous utilisez un adaptateur graphique Nvidia avec prise en charge CUDA, téléchargez ces binaires prédéfinis : llama-b2356-bin-win-cublas-cu12.2.0-x64.zip et cudart-llama-bin-win-cu12.2.0-x64. zip Les étapes pour travailler avec une autre carte graphique sont hors de portée, mais peuvent être trouvées dans le fichier readme de llama.cpp.
Extrayez ces deux fichiers dans le même dossier.
Localisez les formats quantifiés des modèles que vous souhaitez utiliser depuis Huggingface. Pour LLaVA 1.6 Vicuna 7B : llava-v1.6-vicuna-7b.Q4_K_M.gguf et mmproj-model-f16.gguf
Placez ces fichiers dans le dossier contenant le reste des binaires llama.cpp.
À partir d'une invite de commande, exécutez le binaire du serveur llava.cpp, en transmettant les fichiers .gguf pour le modèle et le projecteur multimodal (comme suit) :
server.exe -m llava-v1.6-vicuna-7b.Q4_K_M.gguf --mmproj mmproj-model-f16.gguf
Dans la boîte de dialogue des paramètres de NVDA, faites défiler jusqu'à la catégorie AI Content Describer, puis choisissez « gérer les modèles (alt+m) », sélectionnez « llama.cpp » comme fournisseur, accédez au champ URL de base et entrez le point de terminaison indiqué dans la console (par défaut "http://localhost:8080").
Vous pouvez également omettre certaines de ces étapes et exécuter llama.cpp sur un serveur distant avec des spécifications plus élevées que votre ordinateur local, puis saisir ce point de terminaison à la place.
Quatre raccourcis clavier sont liés par défaut :
NVDA+shift+i : affiche un menu vous demandant s'il faut décrire le focus actuel, l'objet du navigateur, la caméra physique ou l'écran entier avec l'IA.
NVDA+shift+u : Décrivez le contenu de l'objet navigateur actuel à l'aide de l'IA.
NVDA+shift+y : Décrivez l'image (ou le chemin d'accès à une image) dans le presse-papiers à l'aide de l'IA.
NVDA+shift+j : Décrivez la position de votre visage dans le cadre de la caméra sélectionnée. Si vous avez plusieurs caméras connectées, accédez au menu de description du contenu AI (NVDA+shift+i) et choisissez celle que vous souhaitez utiliser avec l'élément « sélectionner la caméra » dans le sous-menu de détection de visage.
Trois gestes sont déliés :
Décrivez le contenu de l'élément actuellement ciblé à l'aide de l'IA.
Prenez une capture d'écran, puis décrivez-la à l'aide de l'IA.
Prenez une photo à l'aide de l'appareil photo sélectionné, puis décrivez-la à l'aide de l'IA.
N'hésitez pas à les personnaliser à tout moment depuis la boîte de dialogue des gestes de saisie.
Pour créer le package complémentaire à partir des sources, vous aurez besoin de :
une distribution Python (3.7 ou version ultérieure est recommandée). Consultez le site Web Python pour les installateurs Windows. Veuillez noter qu'à l'heure actuelle, la préparation du code source de NVDA et des modules tiers inclus nécessite la version 32 bits de Python 3.7.
Scons - Site Web - version 4.3.0 ou ultérieure. Vous pouvez l'installer via PIP. pip install scons
Markdown 3.3.0 ou version ultérieure. pip install markdown
Ensuite, ouvrez le terminal de votre choix :
git clone https://github.com/cartertemm/AI-content-describer.git cd AI-content-describer scons
Une fois l'exécution de la commande scons
terminée, un fichier *.nvda-addon sera placé à la racine de ce référentiel, prêt à être testé et publié.
Si vous ajoutez des chaînes supplémentaires qui doivent être traduites, il est important de reconstruire le fichier .pot comme ceci :
scons pot
Sur une machine Windows :
télécharger le poème. C'est le logiciel que vous utiliserez pour traduire chaque message depuis l'anglais.
téléchargez le fichier .pot avec toutes les chaînes ici
Ouvrez le fichier que vous venez de télécharger dans le programme poedit. Cliquez sur « Créer une nouvelle traduction » dans la fenêtre qui apparaît, puis sélectionnez la langue cible.
Parcourez et convertissez le contenu du texte source dans la langue cible, puis collez-le dans le champ de traduction. Pour obtenir une aide supplémentaire, n'hésitez pas à cliquer avec le bouton droit sur l'élément de la liste -> occurrences de code, puis à remonter d'une ligne pour lire le commentaire commençant par « # Traducteurs : ». Ces commentaires sont en outre mis à disposition à un seul endroit dans le fichier .pot.
Une fois terminé, cliquez sur fichier -> enregistrer ou appuyez sur ctrl+s puis choisissez un emplacement pour stocker les nouveaux fichiers .mo et .po. Ce sont les fichiers qui doivent m'être envoyés par e-mail ou joints à une pull request.
Traduisez le contenu de readme.md (ce fichier). Attachez-le aussi !
Tous sont très appréciés et seront crédités. Les personnes suivantes ont travaillé sur l'addon.
Mazen : implémentation du markdown, autres contributions au code
Kostenkov-2021 : traduction en russe
Nidza07 : traduction en serbe
Heorhii Halas : traduction en ukrainien
Umut Korkmaz : traduction en turc
Platinum_Hikari : traduction française
Lukas : traduction en tchèque
Michaela : traduction en slovaque
Face à un problème ? Soumettez-le au système de suivi des problèmes
Vous avez une suggestion pour une nouvelle fonctionnalité ? Créez également un ticket pour cela, et nous pourrons parler de sa mise en œuvre. Les demandes d'extraction sans problèmes associés seront examinées, mais prendront probablement plus de temps pour tout le monde, surtout si je décide que le nouveau correctif ou la nouvelle fonctionnalité doit fonctionner différemment de ce qui a été proposé.
Les traductions sont accueillies à bras ouverts. Plus il y aura de personnes pouvant accéder à cette technologie puissante, mieux ce sera !
Si vous n'avez pas Github ou préférez ne pas l'utiliser, vous pouvez m'envoyer un e-mail - cartertemm (at) gmail (dot) com.
Merci pour le soutien !