Heim >Backend-Entwicklung >Python-Tutorial >Erstellen Sie mithilfe von KI den schnellsten und präzisesten Rechnungsdatenextraktor für die Strukturausgabe
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.
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"
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
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 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 )
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 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!