首頁  >  文章  >  後端開發  >  使用 AI 創建最快、最精確的發票資料提取器以進行結構輸出

使用 AI 創建最快、最精確的發票資料提取器以進行結構輸出

WBOY
WBOY原創
2024-08-07 06:36:13719瀏覽

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

使用 LlamaExtract 和 Pydantic 模型提取商店收據

在本文中,我們將探索如何使用 LlamaExtract 與 Pydantic 模型中的模式結合,以便從商店收據中提取結構化資料。這種方法有助於系統地組織收據訊息,使其更易於分析和管理。

設定

首先,請確保您安裝了 llama-extract 用戶端程式庫。使用以下指令:

pip install llama-extract pydantic

注意:如果您看到有關更新 pip 的通知,您可以使用提供的命令進行更新。

首先,登入並從 Llama Index Cloud 免費取得 api-key

為您的 LlamaExtract API 金鑰設定環境變數:

import os

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

載入數據

對於此範例,假設我們有一個 PDF 格式的商店收據資料集。將這些檔案放在名為receipts 的目錄中。

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

輸出應列出收據的檔案路徑:

['data/receipts/receipt.pdf']

定義 Pydantic 模型

我們將使用 Pydantic 定義資料模型,這將告訴 API 我們期望或想要從 PDF 中提取哪些欄位/資料。對於商店收據,我們可能有興趣提取商店名稱、日期、總金額和購買的商品清單。

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]

創建架構

現在,我們可以使用 Pydantic 模型在 LlamaExtract 中定義擷取模式。

from llama_extract import LlamaExtract

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

輸出架構應類似下列內容:

{
    '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'}
        }
    }
}

運行提取

定義模式後,我們現在可以從收據文件中提取結構化資料。透過指定收據作為回應模型,我們確保提取的資料經過驗證和結構化。

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

如果需要,您可以存取原始 JSON 輸出:

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

JSON 輸出範例:

{
    '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}
    ]
}

結論

在本文中,我們示範如何將 LlamaExtract 與 Pydantic 模型結合使用來定義資料模式並從商店收據中提取結構化資料。這種方法可確保提取的資訊組織良好且經過驗證,從而更易於處理和分析。

這也可用於許多案例、發票、收據、報告等

編碼快樂! !

你有專案嗎?您希望我協助您寄電子郵件給我嗎? :wilbertmisingo@gmail.com

有疑問或想成為第一個了解我的貼文的人:-
在 LinkedIn 上關注 ✅ 我?
在 Twitter/X 上關注 ✅ 我?

以上是使用 AI 創建最快、最精確的發票資料提取器以進行結構輸出的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn