Heim >Technologie-Peripheriegeräte >KI >Paligemma 2 Mix: Ein Leitfaden mit Demo OCR -Projekt

Paligemma 2 Mix: Ein Leitfaden mit Demo OCR -Projekt

Christopher Nolan
Christopher NolanOriginal
2025-02-28 16:32:11823Durchsuche

Paligemma 2 Mix ist ein von Google entwickeltes multimodales KI -Modell. Es handelt sich um eine verbesserte Version des Paligemma Vision Language Model (VLM), das erweiterte Funktionen aus dem Siglip Vision -Modell und Gemma 2 -Sprachmodellen integriert.

In diesem Tutorial erkläre ich, wie man den Paligemma 2-Mix verwendet, um einen AI-angetriebenen Billscanner und Ausgabenanalysator zu erstellen, der:

in der Lage ist,:
  • extrahieren und kategorisieren Ausgaben aus Rechnungseinnahmen.
  • optische Zeichenerkennung (OCR) zum Abrufen von Schlüsselinformationen.
  • Zusammenfassung der Ausgaben basierend auf bereitgestellten Bildern.

Während unser Fokus auf dem Erstellen eines finanziellen Insights -Tools liegt, können Sie das, was Sie in diesem Blog lernen, andere Anwendungsfälle von Paligemma 2 -Mix wie Bildsegmentierung, Objekterkennung und Beantwortung von Fragen verwenden.

Was ist eine Paligemma 2 -Mischung?

Paligemma 2 Mix ist ein erweitertes Vision-Sprach-Modell (VLM), das sowohl Bilder als auch Text als Eingabe verarbeitet und textbasierte Ausgänge generiert. Es ist für eine Vielzahl multimodaler KI -Aufgaben ausgelegt, während mehrere Sprachen unterstützt werden.

Paligemma 2 wurde für eine Vielzahl von auf Visionsprachlustern, einschließlich Bild- und Kurzvideosende, visuelle Fragenbeantwortung, optische Charaktererkennung (OCR), Objekterkennung und Segmentierung entwickelt.

. Paligemma 2 Mix: Ein Leitfaden mit Demo OCR -Projekt

Quelle der im Diagramm verwendeten Bilder: Google

    Paligemma 2 Mix -Modell ist für:
  • ausgelegt
  • Bild und kurze Videounterschrift: Generierung genauer und kontextbezogener Bildunterschriften für statische Bilder und kurze Videos.
  • visuelle Fragenbeantwortung (VQA): Analyse von Bildern und Beantwortung von textbasierten Fragen basierend auf visuellen Inhalten.
  • optische Charaktererkennung (OCR): Extrahieren und Interpretieren von Text aus Bildern, was sie für Dokumente, Einnahmen und gescannte Materialien nützlich macht.
  • Objekterkennung und -segmentierung: Identifiziert, Beschriftungen und Segmente Objekte in einem Bild für die strukturierte Analyse.
Support mit mehrsprachiger Sprache: Das Modell ermöglicht auch die Textgenerierung und das Verständnis in mehreren Sprachen für globale Anwendungen.

finden Sie im offiziellen Release -Artikel weitere Informationen zum Paligemma 2 -Mix -Modell. 

Projektübersicht: Billscanner und Ausgabenanalysator mit Paligemma 2 Mix

Lassen Sie uns die Hauptschritte skizzieren, die wir unternehmen werden:
  1. Laden und Bereiten Sie den Datensatz vor: Der Vorgang beginnt mit dem Laden und Vorbereiten von Quittungsbildern als Eingabe.
  2. Initialisieren Sie das Paligemma 2-Mixmodell: Wir konfigurieren und laden das Modell für die Verarbeitung von Visionsprachenaufgaben.
  3. Prozesseingangsbilder: Dann wandeln Sie Bilder in ein geeignetes Format (RGB) und bereiten Sie sie für die Analyse vor.
  4. Schlüsselinformationen extrahieren: Führen Sie die optische Zeichenerkennung (OCR) aus, um den Gesamtbetrag abzurufen.
  5. kategorisieren Sie Ausgaben: Klassifizieren Sie Einkäufe in Kategorien wie Lebensmittel, Kleidung, Elektronik und andere.
  6. Erzeugniserkenntnisse erzeugen: Wir fassen die kategorisierten Ausgaben zusammen und generieren ein Ausgabenverteilungsdiagramm.
  7. Erstellen Sie eine interaktive Gradio -Schnittstelle: Schließlich erstellen wir eine Benutzeroberfläche, in der Benutzer mehrere Rechnungen hochladen, Daten extrahieren und die Ausgaben visuell analysieren können.

Schritt 1: Voraussetzungen

Bevor wir beginnen, stellen wir sicher, dass die folgenden Tools und Bibliotheken installiert sind:

  • Python 3.8
  • Fackel
  • Transformators
  • pil
  • Matplotlib
  • Gradio

Führen Sie die folgenden Befehle aus, um die erforderlichen Abhängigkeiten zu installieren:

pip install gradio -U bitsandbytes -U transformers -q

Sobald die obigen Abhängigkeiten installiert sind, führen Sie die folgenden Importbefehle aus:

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

Schritt 2: Modellinitialisierung

Wir konfigurieren und laden das Paligemma 2 -Mixmodell mit Quantisierung, um die Leistung zu optimieren. Für diese Demo verwenden wir das 10B -Parametermodell mit 448 x 448 Eingangsbildauflösung. Sie benötigen ein Minimum von T4 GPU mit 40 GB Speicher (Colab -Konfiguration), um dieses Modell auszuführen. 

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!")

BitsandBytes Quantisierung hilft bei der Verringerung des Speicherverbrauchs gleichzeitig die Leistung und ermöglicht es, große Modelle für begrenzte GPU -Ressourcen durchzuführen. In dieser Implementierung verwenden wir die 4-Bit-Quantisierung, um die Speichereffizienz weiter zu optimieren.

Wir laden das Modell mit der Paligemmaforconditionalgenerationsklasse aus der Transformers -Bibliothek, indem Sie die Modell -ID und die Quantisierungskonfiguration übergeben. In ähnlicher Weise laden wir den Prozessor, der die Eingänge in Tensoren vorbereitet, bevor wir sie an das Modell übergeben.

Schritt 3: Bildverarbeitung

Sobald die Modellscherben geladen sind, verarbeiten wir die Bilder, bevor wir sie an das Modell weitergeben, um die Kompatibilität des Bildformates aufrechtzuerhalten und Gleichmäßigkeit zu gewinnen. Wir konvertieren Bilder in das RGB -Format:

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

Jetzt sind unsere Bilder bereit für die Schlussfolgerung.

Schritt 4: Inferenz mit Paligemma

Jetzt richten wir die Hauptfunktion für die Ausführung von Inferenz mit dem Modell ein. Diese Funktion nimmt Inputbilder und Fragen auf, integriert sie in Eingabeaufforderungen und übergibt sie über den Prozessor für Inferenz an das Modell.

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()

Schritt 5: Schlüsselinformationen extrahieren

Jetzt, da wir die Hauptfunktion bereit haben, werden wir als nächstes daran arbeiten, die Schlüsselparameter aus dem Bild zu extrahieren - in unserem Fall sind dies die Gesamtmenge und die Kategorie der Ware.

pip install gradio -U bitsandbytes -U transformers -q

Die Funktion extract_total_amount () verarbeitet ein Bild, um die Gesamtmenge aus einer Quittung mit OCR zu extrahieren. Es konstruiert eine Abfrage (Frage), die das Modell anweist, nur numerische Werte zu extrahieren, und ruft dann die Funktion Ask_Model () auf, um eine Antwort aus dem Modell zu generieren. 

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

Die Funktion categorize_goods () klassifiziert die Art von Waren in einem Bild, indem das Modell mit einer vordefinierten Frage auflistet, mögliche Kategorien: Lebensmittelgeschäft, Kleidung, Elektronik oder andere. Die Funktion Ask_Model () verarbeitet dann das Bild und gibt eine Textantwort zurück. Wenn die verarbeitete Antwort einer der vordefinierten gültigen Kategorien entspricht, wird diese Kategorie zurückgegeben - andernfalls werden sie standardmäßig in die Kategorie "Andere" eingestuft.

Schritt 6: Analyse von Informationen

Wir haben alle wichtigen Funktionen bereit, also analysieren wir die Ausgänge.

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!")

Die obige Funktion erstellt ein Kreisdiagramm zur Visualisierung der Ausgabenverteilung über verschiedene Kategorien hinweg. Wenn keine gültigen Ausgabendaten vorhanden sind, generiert sie eine leere Figur mit einer Meldung, die "keine Ausgabendaten" angibt. Andernfalls erstellt es ein Kreisdiagramm mit Kategoriebezeichnungen und Prozentwerten, um eine proportionale und gut ausgerichtete Visualisierung zu gewährleisten.

Schritt 6: Analysieren mehrerer Rechnungen gleichzeitig

Wir haben normalerweise mehrere Rechnungen zu analysieren. Erstellen wir also eine Funktion, um alle unsere Rechnungen gleichzeitig zu verarbeiten.
def ensure_rgb(image: Image.Image) -> Image.Image:
    if image.mode != "RGB":
        image = image.convert("RGB")
    return image

Für die Analyse mehrerer Rechnungen gleichzeitig führen wir die folgenden Schritte aus:
  1. Speicher initialisieren: Wir erstellen Listen zum Speichern von Ergebnissen und Bildern, setzen Total_Spending auf 0 und definieren ein Wörterbuch für die Kategorie.
  2. jede Rechnung verarbeiten:
  • Öffnen und konvertieren Sie das Bild in RGB.
  • das Bild an die Liste anhängen.
  • extrahieren Sie den Gesamtbetrag aus der Quittung.
  • kategorisieren Sie die Waren in der Quittung.
  • Aktualisieren Sie die Gesamtausgaben und die Kategorie in Bezug auf die Gesamtzahl.
  • Speichern Sie die extrahierten Daten in einer Ergebnisliste.
  1. Erkenntnisse erstellen: Wir erstellen ein Kreisdiagramm für die Ausgabenverteilung zusammen mit einer Zusammenfassung der Gesamtausgaben.
  2. Rückgabergebnisse: Schließlich geben wir die Liste der Bilder, einen Datenrahmen für Rechnungsfassungen, die Gesamtausgabenzusammenfassung und das Ausgabendiagramm zurück.
.

Schritt 7: Erstellen Sie die Gradio -Schnittstelle

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()
Jetzt haben wir alle wichtigen Logikfunktionen. Als nächstes arbeiten wir daran, eine interaktive Benutzeroberfläche mit Gradio zu bauen.

Der obige Code erstellt eine strukturierte UI mit einem Datei -Uploader für mehrere Bilder und eine Schaltfläche Senden, um die Verarbeitung auszulösen. Bei der Einreichung werden in einer Galerie hochgeladene Billbilder angezeigt, extrahierte Daten in einer Tabelle angezeigt, die Gesamtausgaben werden im Text zusammengefasst und ein Kreisdiagramm für Ausgabenverteilungen erstellt. 

Die Funktion verbindet Benutzereingänge mit der Funktion process_multiple_bills () und stellt die nahtlose Datenextraktion und Visualisierung sicher. Schließlich startet die Demo.launch () -Funktion die Gradio-App für Echtzeitinteraktion.

Paligemma 2 Mix: Ein Leitfaden mit Demo OCR -Projekt

Ich habe diese Demo auch mit zwei bildbasierten Rechnungen (Amazon Shopping-Rechnung) ausprobiert und die folgenden Ergebnisse erzielt.

HINWEIS: VLMS fällt es schwierig, Zahlen zu extrahieren, was manchmal zu falschen Ergebnissen führen kann. Zum Beispiel hat es den falschen Gesamtbetrag für die zweite Rechnung unten extrahiert. Dies ist durch die Verwendung größerer Modelle oder einfach die vorhandenen Einstimmen korrigierbar.

Paligemma 2 Mix: Ein Leitfaden mit Demo OCR -Projekt

Paligemma 2 Mix: Ein Leitfaden mit Demo OCR -Projekt

Schlussfolgerung

In diesem Tutorial haben wir einen KI-angetriebenen Multiple-Bill-Scanner mit einem Paligemma 2-Mix erstellt, mit dem wir unsere Ausgaben aus Quittungen extrahieren und kategorisieren können. Wir haben Paligemma 2 Mixs Vision-Sprache-Funktionen für OCR und Klassifizierung verwendet, um die Ausgabenerkenntnisse mühelos zu analysieren. Ich ermutige Sie, dieses Tutorial an Ihren eigenen Anwendungsfall anzupassen. 

Das obige ist der detaillierte Inhalt vonPaligemma 2 Mix: Ein Leitfaden mit Demo OCR -Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn