Bedragen uit documenten halen met Laravel Prism
Leestijd Leestijd: 5 minuten Auteur Geschreven door Damiaen Toussaint

Bedragen uit documenten halen met Laravel Prism

Het verwerken van ongestructureerde documenten zoals facturen en bonnetjes is altijd een uitdaging geweest voor ontwikkelaars. Met de opkomst van Large Language Models (LLM's) is dit echter een stuk eenvoudiger geworden. In dit artikel kijken we naar Laravel Prism, een krachtig package dat AI-integratie in jouw Laravel-applicatie stroomlijnt, en hoe we dit kunnen gebruiken om specifiek bedragen uit documenten te halen.

Wat is Laravel Prism?

Laravel Prism is een package ontwikkeld door EchoLabs dat fungeert als een brug tussen jouw Laravel applicatie en verschillende AI-providers zoals OpenAI, Anthropic en anderen. Het biedt een elegante, vloeiende syntax die naadloos aansluit bij het Laravel-ecosysteem.

In plaats van ruwe API-calls te maken, kun je met Prism op een expressieve manier prompts genereren en antwoorden verwerken. Dit maakt je code niet alleen leesbaarder, maar ook makkelijker te onderhouden.

Installatie

Het installeren van Prism is eenvoudig via Composer. Run het volgende commando in je terminal:

composer require echolabsdev/prism

Vervolgens kun je het installatiecommando draaien om de configuratiebestanden te publiceren:

php artisan prism:install

Configuratie

Om Prism te gebruiken heb je een API-sleutel nodig van een provider, bijvoorbeeld OpenAI. Voeg deze toe aan je .env bestand:

OPENAI_API_KEY=sk-proj-...

Prism ondersteunt meerdere providers, dus je kunt ook Anthropic of Groq gebruiken als je dat liever hebt.

Bedragen extraheren

Nu alles is ingesteld, kunnen we aan de slag. Stel, we hebben een tekst van een bonnetje (bijvoorbeeld verkregen via OCR of gewoon als tekstinput):

$text = "SUPERMARKT XYZ
Datum: 10-12-2025
------------------
2x Melk       € 2,50
1x Brood      € 1,50
------------------
TOTAAL        € 4,00";

We willen het totaalbedrag hieruit halen. Met Prism kunnen we gebruik maken van Structured Output. Dit dwingt de AI om te antwoorden in een specifiek JSON-formaat of zelfs direct gemapt naar een DTO (Data Transfer Object).

Hier is hoe je dat doet:

use EchoLabs\Prism\Prism;
use EchoLabs\Prism\Enums\Provider;
use EchoLabs\Prism\Schema\Schema;

$response = Prism::text()
    ->using(Provider::OpenAI, 'gpt-4o')
    ->withSchema(
        Schema::object('receipt')
            ->fields([
                Schema::number('total_amount')->description('Het totaalbedrag van de bon'),
                Schema::string('currency')->description('De valuta van het bedrag, e.g. EUR'),
                Schema::string('date')->description('De datum van aankoop in YYYY-MM-DD formaat'),
            ])
    )
    ->generate("Haal de details uit deze bon:\n\n" . $text);

// Het resultaat is direct beschikbaar
$data = $response->structured;

echo "Totaal: " . $data['total_amount']; // 4.00

Door het gebruik van een schema weet de AI precies wat we verwachten. Geen gedoe meer met regex of onbetrouwbare tekst-parsing!

Conclusie

Met slechts enkele regels code hebben we een robuuste oplossing gebouwd om data uit documenten te halen. Laravel Prism maakt het extreem eenvoudig om geavanceerde AI-functionaliteit toe te voegen aan je projecten. Of je nu facturen verwerkt, bonnetjes scant of contracten analyseert, Prism en LLM's nemen je het zware werk uit handen.

Ben je benieuwd wat AI voor jouw bedrijfsprocessen kan betekenen? Neem dan gerust contact met ons op!

Mogelijkheden of kansen voor
jouw organisatie bespreken?

Arjan Renkema Chris Hagg Damiaen Toussaint Arrow