この記事では、ショップのレシートから構造化データを抽出するために、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 を使用してデータ モデルを定義します。これにより、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 で✅私をフォローしてください?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3