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.
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"
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']
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]
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'} } } }
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} ] }
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 ?
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