„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erstellen Sie mithilfe von KI den schnellsten und präzisesten Rechnungsdatenextraktor für die Strukturausgabe

Erstellen Sie mithilfe von KI den schnellsten und präzisesten Rechnungsdatenextraktor für die Strukturausgabe

Veröffentlicht am 01.11.2024
Durchsuche:844

Create the fastest and precise invoice data extractor for structural output using AI

Verwendung von LlamaExtract mit Pydantic-Modellen zur Extraktion von Ladenbelegen

In diesem Artikel untersuchen wir, wie man LlamaExtract in Kombination mit Schemata aus Pydantic-Modellen verwendet, um strukturierte Daten aus Ladenbelegen zu extrahieren. Dieser Ansatz hilft bei der systematischen Organisation von Beleginformationen und erleichtert so deren Analyse und Verwaltung.

Aufstellen

Stellen Sie zunächst sicher, dass die Client-Bibliothek „llama-extract“ installiert ist. Verwenden Sie den folgenden Befehl:

pip install llama-extract pydantic

Hinweis: Wenn Sie einen Hinweis zur Aktualisierung von pip sehen, können Sie ihn mit dem bereitgestellten Befehl aktualisieren.

Melden Sie sich zunächst an und erhalten Sie kostenlos einen API-Schlüssel von Llama Index Cloud

Richten Sie die Umgebungsvariable für Ihren LlamaExtract-API-Schlüssel ein:

import os

os.environ["LLAMA_CLOUD_API_KEY"] = "YOUR LLAMA INDEX CLOUD API HERE"

Daten laden

Nehmen wir für dieses Beispiel an, dass wir über einen Datensatz mit Ladenbelegen im PDF-Format verfügen. Legen Sie diese Dateien in einem Verzeichnis mit dem Namen „Rechnung“ ab.

DATA_DIR = "data/receipts"
fnames = os.listdir(DATA_DIR)
fnames = [fname for fname in fnames if fname.endswith(".pdf")]
fpaths = [os.path.join(DATA_DIR, fname) for fname in fnames]
fpaths

Die Ausgabe sollte die Dateipfade der Belege auflisten:

['data/receipts/receipt.pdf']

Definieren Sie ein pydantisches Modell

Wir definieren unser Datenmodell mit Pydantic. Dadurch wird der API mitgeteilt, welche Felder/Daten wir erwarten oder aus dem PDF extrahieren möchten. Für Ladenbelege könnten wir daran interessiert sein, den Namen des Ladens, das Datum, den Gesamtbetrag und die Liste der gekauften Artikel zu extrahieren.

from pydantic import BaseModel
from typing import List

class Item(BaseModel):
    name: str
    quantity: int
    price: float

class Receipt(BaseModel):
    store_name: str
    date: str
    total_amount: float
    items: List[Item]

Schema erstellen

Jetzt können wir das Pydantic-Modell verwenden, um ein Extraktionsschema in LlamaExtract zu definieren.

from llama_extract import LlamaExtract

extractor = LlamaExtract(verbose=True)
schema_response = await extractor.acreate_schema("Receipt Schema", data_schema=Receipt)
schema_response.data_schema

Das Ausgabeschema sollte wie folgt aussehen:

{
    'type': 'object',
    '$defs': {
        'Item': {
            'type': 'object',
            'title': 'Item',
            'required': ['name', 'quantity', 'price'],
            'properties': {
                'name': {'type': 'string', 'title': 'Name'},
                'quantity': {'type': 'integer', 'title': 'Quantity'},
                'price': {'type': 'number', 'title': 'Price'}
            }
        }
    },
    'title': 'Receipt',
    'required': ['store_name', 'date', 'total_amount', 'items'],
    'properties': {
        'store_name': {'type': 'string', 'title': 'Store Name'},
        'date': {'type': 'string', 'title': 'Date'},
        'total_amount': {'type': 'number', 'title': 'Total Amount'},
        'items': {
            'type': 'array',
            'title': 'Items',
            'items': {'$ref': '#/$defs/Item'}
        }
    }
}

Führen Sie die Extraktion aus

Nachdem das Schema definiert ist, können wir jetzt strukturierte Daten aus unseren Belegdateien extrahieren. Durch die Angabe von Receipt als Antwortmodell stellen wir sicher, dass die extrahierten Daten validiert und strukturiert sind.

responses = await extractor.aextract(
    schema_response.id, fpaths, response_model=Receipt
)

Sie können bei Bedarf auf die JSON-Rohausgabe zugreifen:

data = responses[0].data
print(data)

Beispiel für eine JSON-Ausgabe:

{
    'store_name': 'ABC Electronics',
    'date': '2024-08-05',
    'total_amount': 123.45,
    'items': [
        {'name': 'Laptop', 'quantity': 1, 'price': 999.99},
        {'name': 'Mouse', 'quantity': 1, 'price': 25.00},
        {'name': 'Keyboard', 'quantity': 1, 'price': 50.00}
    ]
}

Abschluss

In diesem Artikel haben wir gezeigt, wie man LlamaExtract mit Pydantic-Modellen verwendet, um Datenschemata zu definieren und strukturierte Daten aus Ladenbelegen zu extrahieren. Dieser Ansatz stellt sicher, dass die extrahierten Informationen gut organisiert und validiert sind, was ihre Handhabung und Analyse erleichtert.

Dies kann auch für viele Fälle, Rechnungen, Quittungen, Berichte usw. verwendet werden.

Viel Spaß beim Programmieren!!

Haben Sie ein Projekt? Wenn Sie möchten, dass ich Ihnen helfe, senden Sie mir eine E-Mail an: [email protected]

Haben Sie eine Frage oder möchten Sie als Erster von meinen Beiträgen erfahren:-
Folgen Sie ✅ mir auf LinkedIn ?
Folgen Sie ✅ mir auf Twitter/X ?

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/wmisingo/create-the-fastest-and-precise-invoice-data-extractor-for-structural-output-using-ai-pe1?1 Falls ein Verstoß vorliegt Bitte kontaktieren Sie Study_golang @163.comdelete
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3