Neste artigo, exploraremos como usar LlamaExtract incorporado a esquemas de modelos Pydantic para extrair dados estruturados de recibos de loja. Essa abordagem auxilia na organização sistemática das informações de recebimento, facilitando sua análise e gerenciamento.
Primeiro, certifique-se de ter a biblioteca cliente llama-extract instalada. Use o seguinte comando:
pip install llama-extract pydantic
Nota: Se você vir um aviso sobre a atualização do pip, você pode atualizá-lo usando o comando fornecido.
Primeiro, faça login e obtenha uma chave de API gratuitamente no Llama Index Cloud
Configure a variável de ambiente para sua chave de API LlamaExtract:
import os os.environ["LLAMA_CLOUD_API_KEY"] = "YOUR LLAMA INDEX CLOUD API HERE"
Para este exemplo, vamos supor que temos um conjunto de dados de recibos de compras em formato PDF. Coloque esses arquivos em um diretório chamado recibos.
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
A saída deve listar os caminhos dos arquivos dos recibos:
['data/receipts/receipt.pdf']
Definiremos nosso modelo de dados usando Pydantic, isso informaria à API quais campos/dados esperamos ou queremos extrair do PDF. Para recibos de lojas, podemos estar interessados em extrair o nome da loja, data, valor total e lista de itens comprados.
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]
Agora, podemos usar o modelo Pydantic para definir um esquema de extração no 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
O esquema de saída deve ser semelhante ao seguinte:
{ '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'} } } }
Com o esquema definido, agora podemos extrair dados estruturados de nossos arquivos de recibo. Ao especificar Receipt como modelo de resposta, garantimos que os dados extraídos sejam validados e estruturados.
responses = await extractor.aextract( schema_response.id, fpaths, response_model=Receipt )
Você pode acessar a saída JSON bruta, se necessário:
data = responses[0].data print(data)
Exemplo de saída 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} ] }
Neste artigo, demonstramos como usar LlamaExtract com modelos Pydantic para definir esquemas de dados e extrair dados estruturados de recibos de loja. Essa abordagem garante que as informações extraídas sejam bem organizadas e validadas, facilitando seu manuseio e análise.
Isso também pode ser usado para muitos casos, faturas, recibos, relatórios, etc.
Boa codificação!!
Você tem um projeto? que você quer que eu ajude você me envia um e-mail??: [email protected]
Tem alguma dúvida ou quer ser o primeiro a saber sobre minhas postagens:-
Siga ✅me no LinkedIn?
Siga ✅me no Twitter/X ?
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3