Table des matières
Qu'est-ce que Paligemma 2 Mix?
Présentation du projet: Scanner de factures et analyseur de dépenses avec Paligemma 2 Mix
Étape 1: Prérequis
Étape 2: Initialisation du modèle
Étape 3: Traitement d'images
Étape 4: Inférence avec Paligemma
Étape 5: Extraction d'informations clés
Étape 6: Analyse des informations
Étape 6: Analyser plusieurs factures simultanément
Étape 7: Construisez l'interface Gradio
Conclusion
Maison Périphériques technologiques IA Paligemma 2 Mix: un guide avec un projet de démo OCR

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

Feb 28, 2025 pm 04:32 PM

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
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

É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!")
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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()
Copier après la connexion
Copier après la connexion

É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
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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!")
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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()
Copier après la connexion
Copier après la connexion

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 de ce site Web
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

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

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Meilleurs générateurs d'art AI (gratuit & amp; payé) pour des projets créatifs Meilleurs générateurs d'art AI (gratuit & amp; payé) pour des projets créatifs Apr 02, 2025 pm 06:10 PM

L'article passe en revue les meilleurs générateurs d'art AI, discutant de leurs fonctionnalités, de leur aptitude aux projets créatifs et de la valeur. Il met en évidence MidJourney comme la meilleure valeur pour les professionnels et recommande Dall-E 2 pour un art personnalisable de haute qualité.

Début avec Meta Llama 3.2 - Analytics Vidhya Début avec Meta Llama 3.2 - Analytics Vidhya Apr 11, 2025 pm 12:04 PM

META'S LLAMA 3.2: un bond en avant dans l'IA multimodal et mobile Meta a récemment dévoilé Llama 3.2, une progression importante de l'IA avec de puissantes capacités de vision et des modèles de texte légers optimisés pour les appareils mobiles. S'appuyer sur le succès o

Meilleurs chatbots AI comparés (Chatgpt, Gemini, Claude & amp; plus) Meilleurs chatbots AI comparés (Chatgpt, Gemini, Claude & amp; plus) Apr 02, 2025 pm 06:09 PM

L'article compare les meilleurs chatbots d'IA comme Chatgpt, Gemini et Claude, en se concentrant sur leurs fonctionnalités uniques, leurs options de personnalisation et leurs performances dans le traitement et la fiabilité du langage naturel.

Assistants d'écriture de l'IA pour augmenter votre création de contenu Assistants d'écriture de l'IA pour augmenter votre création de contenu Apr 02, 2025 pm 06:11 PM

L'article traite des meilleurs assistants d'écriture d'IA comme Grammarly, Jasper, Copy.ai, WireSonic et Rytr, en se concentrant sur leurs fonctionnalités uniques pour la création de contenu. Il soutient que Jasper excelle dans l'optimisation du référencement, tandis que les outils d'IA aident à maintenir le ton

Vendre une stratégie d'IA aux employés: le manifeste du PDG de Shopify Vendre une stratégie d'IA aux employés: le manifeste du PDG de Shopify Apr 10, 2025 am 11:19 AM

La récente note du PDG de Shopify Tobi Lütke déclare hardiment la maîtrise de l'IA une attente fondamentale pour chaque employé, marquant un changement culturel important au sein de l'entreprise. Ce n'est pas une tendance éphémère; C'est un nouveau paradigme opérationnel intégré à P

AV Bytes: Meta & # 039; S Llama 3.2, Google's Gemini 1.5, et plus AV Bytes: Meta & # 039; S Llama 3.2, Google's Gemini 1.5, et plus Apr 11, 2025 pm 12:01 PM

Le paysage de l'IA de cette semaine: un tourbillon de progrès, de considérations éthiques et de débats réglementaires. Les principaux acteurs comme Openai, Google, Meta et Microsoft ont déclenché un torrent de mises à jour, des nouveaux modèles révolutionnaires aux changements cruciaux de LE

10 extensions de codage générateur AI dans le code vs que vous devez explorer 10 extensions de codage générateur AI dans le code vs que vous devez explorer Apr 13, 2025 am 01:14 AM

Hé là, codant ninja! Quelles tâches liées au codage avez-vous prévues pour la journée? Avant de plonger plus loin dans ce blog, je veux que vous réfléchissiez à tous vos malheurs liés au codage - les énumérez. Fait? - Let & # 8217

Choisir le meilleur générateur de voix d'IA: les meilleures options examinées Choisir le meilleur générateur de voix d'IA: les meilleures options examinées Apr 02, 2025 pm 06:12 PM

L'article examine les meilleurs générateurs de voix d'IA comme Google Cloud, Amazon Polly, Microsoft Azure, IBM Watson et Descript, en se concentrant sur leurs fonctionnalités, leur qualité vocale et leur aptitude à différents besoins.

See all articles