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

WBOY
Freigeben: 2024-08-07 06:36:13
Original
760 Leute haben es durchsucht

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 die 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
Nach dem Login kopieren

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"
Nach dem Login kopieren

Daten laden

Für dieses Beispiel gehen wir davon aus, dass wir einen Datensatz mit Ladenbelegen im PDF-Format haben. 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
Nach dem Login kopieren

Die Ausgabe sollte die Dateipfade der Belege auflisten:

['data/receipts/receipt.pdf']
Nach dem Login kopieren

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]
Nach dem Login kopieren

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
Nach dem Login kopieren

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'}
        }
    }
}
Nach dem Login kopieren

Führen Sie die Extraktion aus

Nachdem das Schema definiert ist, können wir nun 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
)

Nach dem Login kopieren

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

data = responses[0].data
print(data)
Nach dem Login kopieren

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}
    ]
}
Nach dem Login kopieren

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 die 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: wilbertmisingo@gmail.com

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 ?

Das obige ist der detaillierte Inhalt vonErstellen Sie mithilfe von KI den schnellsten und präzisesten Rechnungsdatenextraktor für die Strukturausgabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!