"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Crie o extrator de dados de faturas mais rápido e preciso para produção estrutural usando IA

Crie o extrator de dados de faturas mais rápido e preciso para produção estrutural usando IA

Publicado em 01/11/2024
Navegar:998

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

Usando LlamaExtract com modelos Pydantic para extração de recibos de loja

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.

Configurar

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"

Carregar dados

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

Defina um modelo Pydantic

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]

Criar esquema

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

Executar extração

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

Conclusão

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 ?

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/wmisingo/create-the-fastest-and-precise-invoice-data-extractor-for-structural-output-using-ai-pe1?1 Se houver alguma violação , entre em contato com study_golang @163.comdelete
Tutorial mais recente Mais>

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