Företag får många fakturor från olika håll. Förr kom de på papper med posten, nu skickas de allra flesta fakturorna som PDF-dokument med epost. Större företag och regioner väljer att få fakturor helt digitalt i t.ex. Peppol-format viket kanske blir framtidens standard. Det finns de företag som tjänar pengar på att omvandla fakturor i PDF-format till digitala värden redo att bearbetas av bokföringsprogram m.m. Som tur är kan ditt FileMaker såklart också tolka PDF-fakturor och få in belopp, OCR-nummer etc i olika fält. Som vanligt på flera sätt!
1. Beräkningar
I den FileMaker-version som kom förra sommaren finns funktionen GetTextFromPDF. Det är en funktion som läser all text (och siffror) i ett PDF-dokument i ett container-fält.
Funktionen kan användas för att t.ex. söka efter valfri text i PDF-dokument. Du får snabbt svar på frågor som ”när köpte jag M6-skruv senast”, ”vem köpte jag lasertoner av senast”, ”köper vi gummiband från flera leverantörer” etc. Du gör ett beräkningsfält där texten hamnar och söker i det på vanligt FileMaker-vis.
För att utvinna olika delar av texten, som t.ex. belopp, fakturadatum eller OCR-nummer, använder jag alltid en egen funktion, GetTextBetween, som jag skrivit om tidigare. Funktionen GetTextBetween använder jag flera gånger i veckan för att hämta text från webbsidor, tolka text i epostmeddelanden m.m.
I funktionen GetTextBetween anger du vilken text som kommer både före och efter den del du är intresserad av.
Som exempel använder jag en faktura vi får en gång i månaden från vårt elbolag. Den ser ut så här:

Med funktionen GetTextFromPDF får jag följande text (exemplet nedan visar endast en del av texten).
OCR Faktura-/OCRnummer 123456789 Oss tillhanda senast 8 jun 2026 5359-8793 123456789 XXXXX 00 2 53598793 Kraftringen Nät AB Mallverkstan i Lund Aktiebolag Annedalsvägen 9 227 64 Lund Box 25, 221 00 Lund Summa exkl. moms XXXXX,25 Moms XXXXX,81 Bankgiro 5359-8793 Faktura/ OCR-nummer 123456789 Fakturadatum 8 maj 2026 Kundnummer 999999 Avser april 2026 XXXXX kr (Öresutjämning -0,06 ) Oss tillhanda 8 juni 2026 Faktura elnät och elhandel
Med funktionen GetTextBetween (PDF; ”Faktura-/OCRnummer”; ”¶”) får jag texten som står på samma rad efter ”Faktura-/OCRnummer”. I det här fallet ”123456789”.
Ett tips är att använda funktionerna Trim, för att få bort mellanslag före/efter, och Substitute, för att ta bort oönskade mellanslag i texten.
En formel kan t.ex. bli så här:
Substitue(Trim(GetTextBetween (PDF; "Faktura-/OCRnummer"; "¶"));" ";"")
På samma sätt använder jag GetTextBetween (PDF; ”Fakturadatum”; ”¶”) för att få fakturadatumet. På den här fakturan är datumet inte i FileMaker-format så jag behöver göra om det med en beräkning.
För att omvandla månadens namn till en siffra använder jag en annan av min favoritberäkningar där jag först skriver alla månadsnamn (tre första bokstäverna) i en lång rad, söker fram positionen för aktuell månad med Position och dividerar med 3 (längden på varje månadsnamn).
Så här:
Ceiling (Position (”janfebmaraprmajjunjulaugsepoktnovdec”; månad; 1; 1)/3)
Så den slutliga formeln för omvandling av fakturadatum från textform till FileMaker-form blir så här:
Let([ d = Substitute(textdatum;" ";"¶") ]; Date (Ceiling (Position(…; GetValue(d;2);..); GetValue(d;1); GetValue(d;3)) )
Med ytterligare några beräkningar med GetTextBetween får jag med hjälp av FileMakers JSON-funktioner följande resultat:
{
"leverantör": "Kraftringen Nät AB",
"ocr": "123456789",
"fakturadatum": "2026-05-08",
"förfallodatum": "2026-06-08",
"belopp": 99999.00,
"konto": "5359-8793"
}
För mig är detta som att lösa korsord :)
2. AI
Men det andra sättet då, är det enklare? Ja! I alla fall inte så mycket formler. Jag frågar helt enkelt AI som snabbt har blivit oumbärligt för många ändamål.
Eftersom jag redan har ett konto med API-nyckel hos Google Gemini använder jag samma nu.
Att fråga AI består av 2 steg. Det första steget är att skriva en prompt och lägga in den i ett format som AI förstår. Prompten ger instruktion till AI att ta fram de värden som jag vill ha från PDF-dokumentet. Min enkla prompt är: Hämta leverantör, ocr, fakturadatum, förfallodatum och belopp att betala samt till vilket konto från PDF-dokumentet. Visa resultatet i JSON-format..
Jag sätter in den i en JSON-kodad text tillsammans med PDF-fakturan, som först görs om till Base64-format. Formatet på JSON-texten är olika för olika AI-leverantörer, kontrollera vilken som passar den du väljer.

Nästa steg är att skicka prompt och PDF-dokument till AI, i mitt fall Google Gemini. Det gör jag med script-steget Infoga från URL. Min API-nyckel skickar jag med i cURL-tillvalet tillsammans med den JSON-kodade texten.
Gemini svarar efter någon sekund (tänk på att PDF-dokumentet skickas till en server nånstans i världen). För att ta bort eventuell extra text som Gemini lägger till före/efter den JSON-kod jag önskar som resultat använder jag förstås GetTextBetween även nu!
Anropet till Gemini ser ut så här. I steget efter sparas JSON-koden till ett fält.

Resultatet blir samma JSON-kod som ovan (variablerna blir dock döpta lite annorlunda).
Hur bra det blir beror på vilken modell du väljer, men för det mesta blir det rätt i de fakturor jag provat med.
Vilket sätt väljer du?