recherche
MaisonPériphériques technologiquesIAPaligemma 2 Mix: un guide avec un projet de démo OCR

Le mélange Paligemma 2 est un modèle d'IA multimodal développé par Google. Il s'agit d'une version améliorée du modèle de langage de vision Paligemma (VLM), intégrant les capacités avancées du modèle Siglip Vision et des modèles de langue Gemma 2.

Dans ce tutoriel, je vais expliquer comment utiliser Paligemma 2 Mix pour construire un scanner de factures et un analyseur de dépenses alimenté par AI capable de:

  • Extraction et catégoriser les dépenses des reçus de facture.
  • Effectuer la reconnaissance des caractères optiques (OCR) pour récupérer les informations clés.
  • résumer les dépenses basées sur des images fournies.

Bien que nous nous concentrons sur la création d'un outil d'insistance financière, vous pouvez utiliser ce que vous apprenez dans ce blog pour explorer d'autres cas d'utilisation de mix Paligemma 2, tels que la segmentation de l'image, la détection d'objets et la réponse aux questions.

Qu'est-ce que Paligemma 2 Mix?

Le mix Paligemma 2 est un modèle avancé de vision-langage (VLM) qui traite à la fois les images et le texte en entrée et génère des sorties de texte. Il est conçu pour gérer une gamme diversifiée de tâches d'IA multimodales tout en prenant en charge plusieurs langues.

Paligemma 2 est conçu pour un large éventail de tâches de langue visuelle, y compris l'image et le sous-titrage vidéo court, la réponse à la question visuelle, la reconnaissance des caractères optiques (OCR), la détection d'objets et la segmentation.

Paligemma 2 Mix: un guide avec un projet de démo OCR

Source des images utilisées dans le diagramme: Google

Le modèle de mélange Paligemma 2 est conçu pour:

  • Image et bref sous-titrage vidéo: générer des légendes précises et consacrées au contexte pour les images statiques et les courtes vidéos.
  • Réponse de question visuelle (VQA): analyse des images et réponse aux questions basées sur le texte basées sur le contenu visuel.
  • Reconnaissance optique des caractères (OCR): extraire et interpréter le texte des images, ce qui le rend utile pour les documents, les reçus et les matériaux numérisés.
  • Détection et segmentation des objets: il identifie, étiquette et segments des objets dans une image d'analyse structurée.
  • Prise en charge multi-langues: le modèle permet également la génération de texte et la compréhension dans plusieurs langues pour les applications globales.

Vous pouvez trouver plus d'informations sur le modèle de mix Paligemma 2 dans l'article de version officielle. 

Présentation du projet: Scanner de factures et analyseur de dépenses avec Paligemma 2 Mix

Décrivons les principales étapes que nous allons prendre:

  1. Chargez et préparez l'ensemble de données: le processus commence par charger et préparer des images de réception en entrée.
  2. Initialiser le modèle de mix Paligemma 2: nous configurons et chargeons le modèle pour traiter les tâches de langue visuelle.
  3. Traitez les images d'entrée: ensuite, convertissez les images en format approprié (RVB) et préparez-les à l'analyse.
  4. Extraire Informations clés: effectuer la reconnaissance des caractères optiques (OCR) pour récupérer le montant total.
  5. Catégoriser les dépenses: classer les achats dans des catégories comme l'épicerie, les vêtements, l'électronique et autres.
  6. Générer des informations sur les dépenses: nous résumons les dépenses catégorisées et générons un tableau de distribution de dépenses.
  7. Créer une interface Gradio interactive: Enfin, nous créons une interface utilisateur où les utilisateurs peuvent télécharger plusieurs factures, extraire des données et analyser les dépenses visuellement.

Étape 1: Prérequis

Avant de commencer, assurez-vous que nous avons installé les outils et bibliothèques suivants:

  • python 3.8
  • torche
  • Transformers
  • pil
  • matplotlib
  • Gradio

Exécutez les commandes suivantes pour installer les dépendances nécessaires:

pip install gradio -U bitsandbytes -U transformers -q

Une fois les dépendances ci-dessus installées, exécutez les commandes d'importation suivantes:

import gradio as gr
import torch
import pandas as pd
import matplotlib.pyplot as plt
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor, BitsAndBytesConfig
from transformers import BitsAndBytesConfig
from PIL import Image
import re

Étape 2: Initialisation du modèle

Nous configurons et chargeons le modèle de mélange Paligemma 2 avec la quantification pour optimiser les performances. Pour cette démo, nous utiliserons le modèle de paramètre 10b avec une résolution d'image d'entrée 448 x 448. Vous avez besoin d'un minimum de GPU T4 avec une mémoire de 40 Go (configuration Colab) pour exécuter ce modèle. 

device = "cuda" if torch.cuda.is_available() else "cpu"
# Model setup
model_id = "google/paligemma2-10b-mix-448" 
bnb_config = BitsAndBytesConfig(
    load_in_8bit=True,  # Change to load_in_4bit=True for even lower memory usage
    llm_int8_threshold=6.0,
)

# Load model with quantization
model = PaliGemmaForConditionalGeneration.from_pretrained(
    model_id, quantization_config=bnb_config
).eval()

# Load processor
processor = PaliGemmaProcessor.from_pretrained(model_id)
# Print success message
print("Model and processor loaded successfully!")

La quantification des bitsandbytes aide à réduire l'utilisation de la mémoire tout en maintenant les performances, ce qui permet d'exécuter de grands modèles sur des ressources GPU limitées. Dans cette implémentation, nous utilisons la quantification 4 bits pour optimiser davantage l'efficacité de la mémoire.

Nous chargeons le modèle à l'aide de la classe PaligemMaforConditionAlGeneration de la bibliothèque Transformers en transmettant l'ID du modèle et la configuration de quantification. De même, nous chargeons le processeur, qui prépare les entrées dans les tenseurs avant de le passer au modèle.

Étape 3: Traitement d'images

Une fois les éclats du modèle chargés, nous traitons les images avant de les transmettre au modèle pour maintenir la compatibilité du format d'image et gagner l'uniformité. Nous convertissons les images au format RVB:

def ensure_rgb(image: Image.Image) -> Image.Image:
    if image.mode != "RGB":
        image = image.convert("RGB")
    return image

Maintenant, nos images sont prêtes à l'inférence.

Étape 4: Inférence avec Paligemma

Maintenant, nous avons configuré la fonction principale pour exécuter l'inférence avec le modèle. Cette fonction prend en place des images et des questions d'entrée, les intègre dans des invites et les transmet au modèle via le processeur pour l'inférence.

def ask_model(image: Image.Image, question: str) -> str:
    prompt = f"<image> answer en {question}"
    inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
    with torch.inference_mode():
        generated_ids = model.generate(
            **inputs,
            max_new_tokens=50,
            do_sample=False
        )
    result = processor.batch_decode(generated_ids, skip_special_tokens=True)
    return result[0].strip()</image>

Étape 5: Extraction d'informations clés

Maintenant que nous avons la fonction principale prête, nous travaillerons ensuite sur l'extraction des paramètres clés de l'image - dans notre cas, ce sont la catégorie totale de montants et de marchandises.

pip install gradio -U bitsandbytes -U transformers -q

La fonction extract_total_amount () traite une image pour extraire la quantité totale d'un reçu en utilisant OCR. Il construit une requête (question) demandant au modèle d'extraire uniquement des valeurs numériques, puis il appelle la fonction ASK_MODEL () pour générer une réponse à partir du modèle. 

import gradio as gr
import torch
import pandas as pd
import matplotlib.pyplot as plt
from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor, BitsAndBytesConfig
from transformers import BitsAndBytesConfig
from PIL import Image
import re

La fonction catégorize_goods () classe le type de biens dans une image en invitant le modèle avec une question prédéfinie énumérant les catégories possibles: épicerie, vêtements, électronique ou autre. La fonction ASK_MODEL () traite ensuite l'image et renvoie une réponse textuelle. Si la réponse traitée correspond à l'une des catégories valides prédéfinies, elle renvoie cette catégorie - autrement, elle par défaut la catégorie "autre".

Étape 6: Analyse des informations

Nous avons toutes les fonctions clés prêtes, alors analysons les sorties.

device = "cuda" if torch.cuda.is_available() else "cpu"
# Model setup
model_id = "google/paligemma2-10b-mix-448" 
bnb_config = BitsAndBytesConfig(
    load_in_8bit=True,  # Change to load_in_4bit=True for even lower memory usage
    llm_int8_threshold=6.0,
)

# Load model with quantization
model = PaliGemmaForConditionalGeneration.from_pretrained(
    model_id, quantization_config=bnb_config
).eval()

# Load processor
processor = PaliGemmaProcessor.from_pretrained(model_id)
# Print success message
print("Model and processor loaded successfully!")

La fonction ci-dessus crée un graphique à secteurs pour visualiser la distribution des dépenses entre différentes catégories. Si aucune données de dépenses valides n'existe, elle génère un chiffre vide avec un message indiquant «pas de données de dépenses». Sinon, il crée un graphique à secteurs avec des étiquettes de catégorie et des valeurs de pourcentage, garantissant une visualisation proportionnelle et bien alignée.

Étape 6: Analyser plusieurs factures simultanément

Nous avons généralement plusieurs factures à analyser, alors créons une fonction pour traiter toutes nos factures simultanément.

def ensure_rgb(image: Image.Image) -> Image.Image:
    if image.mode != "RGB":
        image = image.convert("RGB")
    return image

Pour analyser plusieurs factures à la fois, nous effectuons les étapes suivantes:

  1. Initialiser le stockage: nous créons des listes pour le stockage des résultats et des images, définissez Total_spending sur 0 et définissons un dictionnaire pour les totaux de catégorie.
  2. traiter chaque facture:
  • ouvrir et convertir l'image en RGB.
  • Ajoutez l'image à la liste.
  • Extraire le montant total de la réception.
  • Catégorisez les marchandises dans la réception.
  • Mettez à jour les dépenses totales et les totaux par catégorie.
  • Stockez les données extraites dans une liste de résultats.
  1. Générons des informations: nous créons un graphique à secteurs de distribution de dépenses ainsi qu'un résumé des dépenses totales.
  2. Retour Résultats: Enfin, nous renvoyons la liste des images, un dataframe des résumés de factures, le résumé des dépenses totales et le tableau des dépenses.

Étape 7: Construisez l'interface Gradio

Maintenant, nous avons toutes les fonctions de logique clés en place. Ensuite, nous travaillons sur la construction d'une interface utilisateur interactive avec Gradio.

def ask_model(image: Image.Image, question: str) -> str:
    prompt = f"<image> answer en {question}"
    inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
    with torch.inference_mode():
        generated_ids = model.generate(
            **inputs,
            max_new_tokens=50,
            do_sample=False
        )
    result = processor.batch_decode(generated_ids, skip_special_tokens=True)
    return result[0].strip()</image>

Le code ci-dessus crée une interface utilisateur de gradio structurée avec un téléchargeur de fichiers pour plusieurs images et un bouton de soumission pour déclencher le traitement. Lors de la soumission, les images de factures téléchargées sont affichées dans une galerie, les données extraites sont affichées dans un tableau, les dépenses totales sont résumées dans le texte et un graphique à secteurs de distribution de dépenses est généré. 

La fonction connecte les entrées utilisateur à la fonction process_multiple_bills (), assurant une extraction et une visualisation de données transparentes. Enfin, la fonction démo.launch () démarre l'application Gradio pour l'interaction en temps réel.

Paligemma 2 Mix: un guide avec un projet de démo OCR

J'ai également essayé cette démo avec deux factures basées sur l'image (Amazon Shopping Facture) et j'ai obtenu les résultats suivants.

Remarque: les VLM ont du mal à extraire des nombres, ce qui peut parfois entraîner des résultats incorrects. Par exemple, il a extrait le mauvais montant total pour le deuxième projet de loi ci-dessous. Ceci est corrigeable avec l'utilisation de modèles plus grands ou tout simplement affiner ceux existants.

Paligemma 2 Mix: un guide avec un projet de démo OCR

Paligemma 2 Mix: un guide avec un projet de démo OCR

Conclusion

Dans ce didacticiel, nous avons construit un scanner de factures multiples alimenté en AI à l'aide de Paligemma 2 Mix, qui peut nous aider à extraire et classer nos dépenses à partir de reçus. Nous avons utilisé les capacités de langue visuelle de Paligemma 2 Mix pour l'OCR et la classification pour analyser les informations sur les dépenses sans effort. Je vous encourage à adapter ce tutoriel à votre propre cas d'utilisation. 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Le nouvel assistant AI de Meta: booster de productivité ou puits de temps?Le nouvel assistant AI de Meta: booster de productivité ou puits de temps?May 01, 2025 am 11:18 AM

Meta s'est associé à des partenaires tels que NVIDIA, IBM et Dell pour étendre l'intégration de déploiement de niveau d'entreprise de la pile de lama. En termes de sécurité, Meta a lancé de nouveaux outils tels que Llama Guard 4, Llafirewall et Cyberseceval 4, et a lancé le programme Llama Defenders pour améliorer la sécurité de l'IA. En outre, Meta a distribué 1,5 million de dollars de subventions d'impact LLAMA à 10 institutions mondiales, y compris des startups travaillant pour améliorer les services publics, les soins de santé et l'éducation. La nouvelle application Meta Ai propulsée par Llama 4, conçue comme Meta Ai

80% de la génération Zers épouserait une IA: étudie80% de la génération Zers épouserait une IA: étudieMay 01, 2025 am 11:17 AM

Joi AI, une entreprise pionnière de l'interaction humaine-AI, a introduit le terme "Ai-Lations" pour décrire ces relations en évolution. Jaime Bronstein, thérapeute relationnelle chez JOI AI, précise que ceux-ci ne sont pas censés remplacer l'homme C humain

L'IA aggrave le problème du bot d'Internet. Cette startup de 2 milliards de dollars est en première ligneL'IA aggrave le problème du bot d'Internet. Cette startup de 2 milliards de dollars est en première ligneMay 01, 2025 am 11:16 AM

Les fraudes en ligne et les attaques de bot posent un défi important pour les entreprises. Les détaillants combattent des bots de thésaurisation, les banques de banques se battaient les prises de contrôle et les plateformes de médias sociaux ont du mal avec les imitateurs. La montée de l'IA exacerbe ce problème, rendez-vous

Vendre aux robots: la révolution marketing qui fera ou déferlera votre entrepriseVendre aux robots: la révolution marketing qui fera ou déferlera votre entrepriseMay 01, 2025 am 11:15 AM

Les agents de l'IA sont sur le point de révolutionner le marketing, dépassant potentiellement l'impact des changements technologiques antérieurs. Ces agents, représentant une progression importante de l'IA générative, ne traitent pas seulement des informations comme Chatgpt, mais prennent également Actio

Comment la technologie de la vision par ordinateur transforme les éliminatoires de la NBA officiantComment la technologie de la vision par ordinateur transforme les éliminatoires de la NBA officiantMay 01, 2025 am 11:14 AM

L'impact de l'IA sur les décisions cruciales du match NBA 4 Deux matchs pivots du match 4 de la NBA ont présenté le rôle révolutionnaire de l'IA dans la officier. Dans le premier, Nikola Jokic de Denver, à trois points, a conduit à une ruelle de dernière seconde d'Aaron Gordon. Haw de Sony

Comment l'IA accélère l'avenir de la médecine régénérativeComment l'IA accélère l'avenir de la médecine régénérativeMay 01, 2025 am 11:13 AM

Traditionnellement, l'expansion de l'expertise en médecine régénérative a exigé des voyages approfondis, une formation pratique et des années de mentorat. Maintenant, l'IA transforme ce paysage, surmontant les limites géographiques et accélèrent les progrès à travers EN

Les principaux plats à retenir d'Intel Foundry Direct Connect 2025Les principaux plats à retenir d'Intel Foundry Direct Connect 2025May 01, 2025 am 11:12 AM

Intel travaille à retourner son processus de fabrication à la position principale, tout en essayant d'attirer des clients Fab Semiconductor pour faire des puces à ses Fabs. À cette fin, Intel doit renforcer plus de confiance dans l'industrie, non seulement pour prouver la compétitivité de ses processus, mais aussi pour démontrer que les partenaires peuvent fabriquer des puces dans un flux de travail familier et mature, cohérent et très fiable. Tout ce que j'entends aujourd'hui me fait croire qu'Intel se dirige vers cet objectif. Le discours d'ouverture du nouveau PDG Tan Libai a lancé la journée. Tan Libai est simple et concis. Il décrit plusieurs défis dans les services de fonderie d'Intel et les mesures que les entreprises ont prises pour relever ces défis et planifier un itinéraire réussi pour les services de fonderie d'Intel à l'avenir. Tan Libai a parlé du processus de mise en œuvre du service OEM d'Intel pour rendre les clients davantage

L'IA a mal tourné? Maintenant, il y a une assurance pour celaL'IA a mal tourné? Maintenant, il y a une assurance pour celaMay 01, 2025 am 11:11 AM

Répondant aux préoccupations croissantes concernant les risques d'IA, Chaucer Group, une entreprise mondiale de réassurance de spécialité, et l'AI d'Armilla ont uni leurs forces pour introduire un nouveau produit d'assurance responsabilité civile (TPL). Cette politique sauvegarde les entreprises contre

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !