"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cree el extractor de datos de facturas más rápido y preciso para resultados estructurales utilizando IA

Cree el extractor de datos de facturas más rápido y preciso para resultados estructurales utilizando IA

Publicado el 2024-11-01
Navegar:112

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

Uso de LlamaExtract con modelos Pydantic para la extracción de recibos de tiendas

En este artículo, exploraremos cómo utilizar LlamaExtract incorporado con esquemas de modelos de Pydantic para extraer datos estructurados de los recibos de las tiendas. Este enfoque ayuda a organizar la información de los recibos de forma sistemática, lo que facilita su análisis y gestión.

Configuración

Primero, asegúrese de tener instalada la biblioteca cliente de extracto de llama. Utilice el siguiente comando:

pip install llama-extract pydantic

Nota: Si ve un aviso sobre la actualización de pip, puede actualizarlo usando el comando proporcionado.

Primero, inicia sesión y obtén una clave API gratis de Llama Index Cloud

Configure la variable de entorno para su clave API LlamaExtract:

import os

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

Cargar datos

Para este ejemplo, supongamos que tenemos un conjunto de datos de recibos de tiendas en formato PDF. Coloque estos archivos en un directorio llamado 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

El resultado debe enumerar las rutas de archivo de los recibos:

['data/receipts/receipt.pdf']

Definir un modelo Pydantic

Definiremos nuestro modelo de datos usando Pydantic, esto le indicaría a la API qué campos/datos esperamos o queremos extraer del PDF. Para los recibos de las tiendas, es posible que nos interese extraer el nombre de la tienda, la fecha, el monto total y la lista de artículos 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]

Crear esquema

Ahora podemos usar el modelo Pydantic para definir un esquema de extracción en 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

El esquema de salida debería parecerse al siguiente:

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

Ejecutar extracción

Con el esquema definido, ahora podemos extraer datos estructurados de nuestros archivos de recibos. Al especificar Recibo como modelo de respuesta, nos aseguramos de que los datos extraídos estén validados y estructurados.

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

Puedes acceder a la salida JSON sin formato si es necesario:

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

Ejemplo de salida 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}
    ]
}

Conclusión

En este artículo, demostramos cómo usar LlamaExtract con modelos Pydantic para definir esquemas de datos y extraer datos estructurados de recibos de compras. Este enfoque garantiza que la información extraída esté bien organizada y validada, lo que facilita su manejo y análisis.

Esto también se puede utilizar para muchos casos, facturas, recibos, informes, etc.

¡¡Feliz codificación!!

¿Tienes un proyecto? que quieres que te ayude escríbeme??: [email protected]

Tienes una pregunta o quieres ser el primero en enterarte de mis publicaciones:-
¿Sígueme en LinkedIn?
Sígueme en Twitter/X ?

Declaración de liberación Este artículo se reproduce en: https://dev.to/wmisingo/create-the-fastest-and-precise-invoice-data-extractor-for-structural-output-using-ai-pe1?1 Si hay alguna infracción , comuníquese con Study_golang @ 163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3