「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > AI を使用して構造的な出力のための最速かつ正確な請求書データ抽出ツールを作成する

AI を使用して構造的な出力のための最速かつ正確な請求書データ抽出ツールを作成する

2024 年 11 月 1 日に公開
ブラウズ:826

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

Pydantic モデルで LlamaExtract を使用してショップのレシートを抽出する

この記事では、ショップのレシートから構造化データを抽出するために、Pydantic モデルのスキーマを組み込んだ LlamaExtract を使用する方法を検討します。このアプローチは、領収書情報を体系的に整理するのに役立ち、分析と管理が容易になります。

設定

まず、llama-extract クライアント ライブラリがインストールされていることを確認します。次のコマンドを使用します:

pip install llama-extract pydantic

注: pip の更新に関する通知が表示された場合は、提供されているコマンドを使用して更新できます。

まず、ログインして Llama Index Cloud から API キーを無料で取得します

LlamaExtract API キーの環境変数を設定します:

import os

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

データのロード

この例では、PDF 形式の店舗レシートのデータセットがあると仮定します。これらのファイルを、receipations.
という名前のディレクトリに配置します。

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 を使用してデータ モデルを定義します。これにより、PDF からどのフィールド/データを期待している、または抽出したいかを API に指示します。店のレシートの場合、店名、日付、合計金額、購入した商品のリストを抽出することに興味があるかもしれません。

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

抽出の実行

スキーマが定義されたので、レシート ファイルから構造化データを抽出できるようになりました。応答モデルとして Receipt を指定することで、抽出されたデータが検証され、構造化されていることを確認します。

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

結論

この記事では、Pydantic モデルで LlamaExtract を使用してデータ スキーマを定義し、ショップのレシートから構造化データを抽出する方法を説明しました。このアプローチにより、抽出された情報が適切に整理および検証され、取り扱いと分析が容易になります。

請求書、領収書、レポートなど、さまざまなケースにも使用できます。

ハッピーコーディング!!

プロジェクトはありますか?手伝ってほしいのでメールしてください??: [email protected]

質問がある場合、または私の投稿について誰よりも早く知りたい場合:-
LinkedIn で ✅ をフォローしてください ?
Twitter/X で✅私をフォローしてください?

リリースステートメント この記事は次の場所に転載されています: https://dev.to/wmisingo/create-the-fastest-and-precise-invoice-data-extractor-for-structural-output-using-ai-pe1?1 侵害がある場合、study_golang @163.comdelete までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3