AI Personal Learning
und praktische Anleitung

Wertvolle Informationen aus PDF extrahieren: Gemini 2.0 Structured Output Solution

Letzte Woche.Google DeepMind veröffentlicht Gemini 2.0Dazu gehören Zwillinge 2.0 Flash (vollständig verfügbar), Gemini 2.0 Flash-Lite (neu und kostengünstig) und Gemini 2.0 Pro (experimentell). Alle Modelle unterstützen mindestens 1 Million Token des Eingabekontextfensters und unterstützt Text, Bild und Audio sowie Funktionsaufrufe/strukturierte Ausgaben. Dieses Papier dient auch als die Grenzen der LLM OCR: Herausforderungen beim Parsen von Dokumenten hinter dem Glamour Das Referenzlesematerial.

Extrahieren wertvoller Informationen aus PDF: Gemini 2.0 Structured Output Scheme-1


Dadurch ergeben sich hervorragende Anwendungsmöglichkeiten für die PDF-Verarbeitung. Die Umwandlung von PDF in strukturierten oder maschinenlesbaren Text war schon immer eine große Herausforderung. Stellen Sie sich vor, wir könnten PDF von Dokumenten in strukturierte Daten umwandeln? An dieser Stelle kommt Gemini 2.0 ins Spiel.

In diesem Tutorial lernen die Leser, wie sie mit Gemini 2.0 strukturierte Informationen wie Rechnungsnummern und Daten direkt aus PDF-Dokumenten extrahieren können:

  1. Einrichten der Umgebung und Erstellen des Reasoning-Clients
  2. Umgang mit PDF- und anderen Dokumenten
  3. Strukturierte Ausgabe mit Gemini 2.0 und Pydantic
  4. Extrahieren strukturierter Daten aus PDF mit Gemini 2.0

 

1. die Umgebung einrichten und den Reasoning-Client erstellen

Die erste Aufgabe ist die Installation von google-genai Python-SDK und den API-Schlüssel abrufen. Wenn der Leser den API-Schlüssel noch nicht hat, kann er ihn von der Seite Google AI Studio Erhalten:Gemini API-Schlüssel erhalten.

%pip installieren "google-genai>=1"

Sobald der Leser im Besitz des SDK und des API-Schlüssels ist, kann er einen Client erstellen und das zu verwendende Modell festlegen, d. h. das neue Gemini 2.0 Flash-Modell, das über eine kostenlose Stufe mit 1.500 Anfragen pro Tag verfügbar ist (ab 6. Februar 2025).

von google importieren genai
# Einen Client erstellen
api_key = "XXXXX"
client = genai.Client(api_key=api_key)

# Definieren Sie das Modell, das Sie verwenden wollen
model_id = "gemini-2.0-flash" # oder "gemini-2.0-flash-lite-preview-02-05" , "gemini-2.0-pro-exp-02-05"

Hinweis: Wenn der Leser Vertex AI verwenden möchte, muss erKlicken Sie hierErfahren Sie, wie Sie einen Kunden erstellen

 

2. die Verarbeitung von PDF- und anderen Dokumenten

Das Modell Gemini ist in der LageBilder und VideosDies kann mit einer base64-Zeichenkette oder mit der Dateien Die Python-API umfasst Upload- und Löschmethoden. Nach dem Hochladen einer Datei kann der Leser die Datei-URI direkt in den Aufruf einbeziehen.Die Python-API umfasst Upload- und Delete-Methoden.

In diesem Beispiel hat der Benutzer 2 PDF-Muster, eine einfache Rechnung und ein Formular mit handschriftlichen Werten.

!wget -q -O https://storage.googleapis.com/generativeai-downloads/data/pdf_structured_outputs/handwriting_form.pdf
!wget -q -O https://storage.googleapis.com/generativeai-downloads/data/pdf_structured_outputs/invoice.pdf

Der Leser kann nun den Client verwenden und hochladen Methode, um eine Datei hochzuladen. Versuchen wir es mit einer der Dateien.

rechnung_pdf = client.files.upload(file="rechnung.pdf", config={'display_name': 'rechnung'})

Hinweis: Die Datei-API erlaubt bis zu 20 GB an Dateien pro Projekt, mit einer maximalen Dateigröße von 2 GB pro Datei. Dateien werden 48 Stunden lang gespeichert. Während dieser Zeit kann mit dem API-Schlüssel des Nutzers auf die Dateien zugegriffen werden, sie können jedoch nicht heruntergeladen werden. Das Hochladen von Dateien ist kostenlos.

Sobald die Datei hochgeladen ist, kann der Leser überprüfen, in wie viele Token sie umgewandelt wurde, was nicht nur hilft, den Kontext zu verstehen, mit dem der Benutzer zu tun hat, sondern auch die Kosten zu verfolgen.

file_size = client.models.count_tokens(model=model_id,contents=invoice_pdf)
print(f'Datei: {Rechnung_pdf.display_name} entspricht {file_size.total_tokens} tokens')
# Datei: Rechnung ist gleich 821 Token

 

3. strukturierte Ausgabe mit Gemini 2.0 und Pydantic

Die strukturierte Ausgabe ist eine Funktion, die sicherstellt, dass Gemini immer eine Antwort erzeugt, die einem vordefinierten Format entspricht, wie z. B. einem JSON-Schema. Dies bedeutet, dass der Benutzer mehr Kontrolle über die Ausgabe und deren Integration in die Anwendung hat, da garantiert wird, dass gültige JSON-Objekte mit einem benutzerdefinierten Schema zurückgegeben werden.

Gemini 2.0 unterstützt derzeit 3 verschiedene Arten von JSON-Schema-Definitionen:

Schauen wir uns ein kurzes textbasiertes Beispiel an.

from pydantic import BaseModel, Feld

# Definieren Sie ein Pydantic-Modell
# Verwenden Sie die Klasse Field, um eine Beschreibung und einen Standardwert hinzuzufügen, um dem Modell mehr Kontext zu geben
Verwenden Sie die Klasse Field, um eine Beschreibung und einen Standardwert hinzuzufügen, um dem Modell mehr Kontext zu geben. class Topic(BaseModel).
    name: str = Field(description="Der Name des Themas")

class Person(BaseModel): first_name: str = Field(description="Der Name des Themas")
    first_name: str = Field(description="Der Vorname der Person")
    last_name: str = Field(description="Der Nachname der Person")
    last_name: str = Field(description="Der Nachname der Person") last_name: str = Field(description="Der Nachname der Person")
    work_topics: list[Topic] = Field(description="Die Interessengebiete der Person, falls nicht angegeben, bitte eine leere Liste zurückgeben")

# Definieren Sie die Eingabeaufforderung
prompt = "Philipp Schmid ist Senior AI Developer Relations Engineer bei Google DeepMind und arbeitet an Gemini, Gemma mit der Mission, jedem Entwickler zu helfen zu helfen, KI auf verantwortungsvolle Art und Weise zu entwickeln und davon zu profitieren."

# Generieren Sie eine Antwort mit dem Modell Person
response = client.models.generate_content(model=model_id, contents=prompt, config={'response_mime_type': 'application/json', 'response_ schema': Person})) schema': Person})

# gibt die Antwort als json-String aus
print(antwort.text)

# sdk konvertiert die Antwort automatisch in das pydantische Modell
philipp: Person = response.parsed

# greift auf ein Attribut der json-Antwort zu
print(f "Vorname ist {philipp.first_name}")

 

4. strukturierte Daten aus PDF mit Gemini 2.0 extrahieren

Kombinieren wir nun die Datei-API mit einer strukturierten Ausgabe, um Informationen aus der PDF-Datei zu extrahieren. Der Benutzer kann eine einfache Methode erstellen, die einen lokalen Dateipfad und ein Pydantic-Modell übernimmt und strukturierte Daten für den Benutzer zurückgibt. Die Methode wird:

  1. Hochladen von Dateien in die Datei-API
  2. ausnutzen Zwillings-API Erzeugen einer strukturierten Antwort
  3. Konvertiert die Antwort in ein Pydantic-Modell und gibt die
def extract_structured_data(file_path: str, model: BaseModel):: # Laden Sie die Datei in die Datei-API hoch.
    # Hochladen der Datei in die Datei-API
    file = client.files.upload(file=file_path, config={'display_name': file_path.split('/')[-1].split('.') [0]})
    # Generieren einer strukturierten Antwort unter Verwendung der Gemini-API
    prompt = f "Extrahiere die strukturierten Daten aus der folgenden PDF-Datei"
    response = client.models.generate_content(model=model_id, contents=[prompt, file], config={'response_mime_type': 'application/json', ' response_schema': model})
    # Konvertiert die Antwort in das pydantische Modell und gibt sie zurück
    return response.parsed

In dem Beispiel unterscheidet sich jede PDF-Datei von den anderen. Daher muss der Benutzer für jedes PDF ein eigenes Pydantic-Modell definieren, um die Leistungsfähigkeit von Gemini 2.0 zu demonstrieren. Wenn der Benutzer sehr ähnliche PDFs hat und die gleichen Informationen extrahieren möchte, kann das gleiche Modell für alle PDFs verwendet werden.

  • Rechnung.pdfExtrahiert Rechnungsnummer, Datum und alle Listenpositionen einschließlich Beschreibung, Menge, Gesamtwert und Gesamtbruttowert
  • handschriftliches_formular.pdfNummer des Entnahmeformulars, Datum des Beginns der Regelung und Verbindlichkeiten der Regelung zu Beginn und Ende des Jahres

Hinweis: Mit der Pydantic-Funktion können die Benutzer dem Modell mehr Kontext hinzufügen, um es genauer zu machen und eine gewisse Validierung der Daten vorzunehmen. Das Hinzufügen einer umfassenden Beschreibung kann die Leistung des Modells erheblich verbessern. Bibliotheken wie instructor fügen automatische Wiederholungsversuche auf der Grundlage von Validierungsfehlern hinzu, was sehr hilfreich sein kann, aber zusätzliche Anfragekosten verursacht.

Rechnung.pdf

Rechnung.pdf

from pydantic import BaseModel, Feld

class Item(BaseModel).
    description: str = Field(description="Die Beschreibung des Artikels")
    quantity: float = Field(description="Die Menge des Artikels")
    gross_worth: float = Field(description="Der Bruttowert des Artikels")

class Invoice(BaseModel).
    """Extrahiert die Rechnungsnummer, das Datum und alle Listenpositionen mit Beschreibung, Menge und Bruttowert sowie den Gesamtbruttowert.""""
    invoice_number: str = Field(description="Die Rechnungsnummer z.B. 1234567890")
    date: str = Field(description="Das Datum der Rechnung z.B. 2024-01-01")
    items: list[Item] = Field(description="Die Liste der Positionen mit Beschreibung, Menge und Bruttowert")
    total_gross_worth: float = Field(description="Der Gesamtbruttowert der Rechnung")

Ergebnis = extract_structured_data("Rechnung.pdf", Rechnung)
print(type(result))
print(f "Extrahierte Rechnung: {result.invoice_number} am {result.date} mit Gesamtbruttowert {result.total_gross_worth}")
for item in result.items: print(f "Artikel: {item_gross_worth}")
    print(f "Artikel: {Artikel.Beschreibung} mit Menge {Artikel.Menge} und Bruttowert {Artikel.Bruttowert}")

Fantastisch! Das Modell leistet hervorragende Arbeit bei der Extraktion von Informationen aus den Rechnungen.

handschriftliches_formular.pdf

handschriftliches_formular.pdf

class Form(BaseModel).
    """Extrahieren Sie die Formularnummer, das Datum für den Beginn und das Ende des Geschäftsjahres sowie die Planverbindlichkeiten zu Beginn und am Ende des Jahres. """"
    form_number: str = Field(description="Die Formularnummer")
    start_date: str = Field(description="Effective Date")
    beginning_of_year: float = Field(description="Die Planverbindlichkeiten zu Beginn des Jahres")
    end_of_year: float = Field(description="Die Planverbindlichkeiten am Ende des Jahres")

Ergebnis = extract_structured_data("handschriftliches_formular.pdf", Formular)

print(f'Extrahierte Formularnummer: {result.form_number} mit Startdatum {result.start_date}. \nPlanverbindlichkeiten Anfang des Jahres {result.beginning_of_year} und Ende des Jahres {result.end_of_year}')
# Extrahierte Formularnummer: CA530082 mit Beginndatum 02/05/2022.
# Planverbindlichkeiten Anfang des Jahres 40000.0 und Ende des Jahres 55000.0

 

Bewährte Verfahren und Grenzen

Wenn Sie Gemini 2.0 für die PDF-Verarbeitung verwenden, sollten Sie die folgenden Punkte beachten:

  1. Verwaltung der Dateigröße: Die Datei-API unterstützt zwar große Dateien, aber es empfiehlt sich, PDF-Dateien vor dem Hochladen zu optimieren.
  2. Token-Limits: Überprüfen Sie bei der Arbeit mit umfangreichen Dokumenten die Anzahl der Token, um sicherzustellen, dass die Benutzer die Modellgrenzen und Budgets einhalten.
  3. Strukturiertes Ausgabedesign: Das pydantische Modell des Benutzers muss sorgfältig entworfen werden, um alle notwendigen Informationen zu erfassen und gleichzeitig die Übersichtlichkeit zu wahren.
  4. Fehlerbehandlung: Implementieren Sie eine robuste Fehlerbehandlung für den Datei-Upload und den Verarbeitungsstatus, einschließlich Wiederholungsversuche und Behandlung von Fehlermeldungen von Modellen.

 

ein Urteil fällen

Die multimodalen Fähigkeiten von Gemini 2.0 in Kombination mit der strukturierten Ausgabe helfen den Benutzern bei der Verarbeitung und Extraktion von Informationen aus PDFs und anderen Dokumenten. Dadurch werden komplexe und zeitaufwändige manuelle oder halbautomatische Datenextraktionsprozesse überflüssig. Egal, ob Sie ein System zur Rechnungsverarbeitung, ein Werkzeug zur Dokumentenanalyse oder eine andere dokumentenzentrierte Anwendung entwickeln, Sie sollten Gemini 2.0 ausprobieren, da es zunächst kostenlos getestet werden kann und anschließend nur 0,1 US-Dollar pro Million Eingabe-Token kostet. Google betont, dass Gemini 2.0 zunächst kostenlos getestet werden kann und dann nur 0,1 $ pro Million Token kostet, was sicherlich die Hürde für Nutzer senkt, die neue Technologie auszuprobieren, aber die langfristige Kosteneffizienz bleibt abzuwarten.

CDN
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Wertvolle Informationen aus PDF extrahieren: Gemini 2.0 Structured Output Solution

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)