Att skriva in kvitton i ett kalkylark är en sån uppgift som känns liten … tills du har gjort det 40 gånger på en vecka. Du kisar på totalsummor, tvekar på datum och får ändå rätta fel i efterhand.
Det är här kvitto-OCR-automatisering snabbt betalar sig. Småföretagare märker det vid månadsskiftet. Marknadschefer som följer upp utgifter märker det också. Och en stressad bokförare har noll tålamod för ”kan du skicka bilden igen?”
Det här flödet låter dig ladda upp en kvittobild, kör OCR.space för att extrahera texten och ger dig sedan felfri, kopieringsklar output (och en enkel väg för att logga det i Google Sheets). Du får veta vad det gör, vad du behöver och hur du får igång det utan att det blir ett helt projekt.
Så fungerar automatiseringen
Här är hela arbetsflödet som du kommer att sätta upp:
n8n Workflow Template: Kvittofoton till Google Sheets med OCR.space
flowchart LR
subgraph sg0["Trigger • Upload image for OCR Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Trigger • Upload image for OCR"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare • Normalize inputs", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>OCR.space • Parse image"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Display • Show OCR text"]
n2 --> n3
n1 --> n2
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2 api
classDef customIcon fill:none,stroke:none
class n0,n2,n3 customIcon
Varför det här spelar roll: manuell kvittoinmatning är en tyst tidsläcka
Kvitton kommer från överallt. En lunch med kund. En liten programvaruförnyelse. Bränsle. En sväng till kontorsbutiken. Sedan ligger de i kamerarullen eller i en chatttråd tills du till slut klistrar in dem i ett kalkylark och hoppas att du inte läste totalsumman fel. Det jobbiga är inte bara knappandet. Det är alla kontextbyten, ”var sparade jag den där bilden” och uppföljningen när något inte stämmer mot kontoutdraget. På en månad blir de där små stunderna ett rejält tidsblock.
Det summerar snabbt. Och det blir värre när volymen ökar.
- Du skriver in samma fält om och om igen (leverantör, datum, total), vilket bjuder in fel som du ofta upptäcker först senare.
- Kvittobilder varierar kraftigt i ljus och kvalitet, så ”snabb kopiera-klistra in” blir till manuell efterstädning.
- Kvitton med tabellformat (artikelrader, moms, dricks) är extra jobbiga eftersom kalkylark vill ha struktur, inte stökiga textblock.
- När någon ber om underlag slösar du tid på att leta fram originalbilden i stället för att bara hänvisa till en loggad post.
Det du bygger: ladda upp ett kvitto, få strukturerad text, logga det
Det här flödet ger dig ett enkelt uppladdningsformulär i n8n. Du släpper in en kvitto- eller dokumentbild (upp till 1 MB), väljer om den innehåller en tabell och skickar in. Därifrån normaliserar n8n dina indata så att OCR-anropet blir konsekvent varje gång och skickar sedan filen till OCR.space med rätt parametrar (inklusive språk och ”tabell vs text”). OCR.space svarar med tolkad text, och flödet presenterar den tillbaka till dig i ett rent, stylat kort som är lätt att läsa och kopiera. Om målet är utgiftsspårning är nästa naturliga steg att skicka den tolkade outputen till Google Sheets så att den blir en sökbar logg i stället för en hög bilder.
Flödet börjar med en formuläruppladdning. Sedan förbereder det flaggan ”är detta en tabell?” och anropar OCR.space. Till sist får du den tolkade texten snyggt visad, vilket gör att du kan klistra in totalsummor snabbt eller spara resultatet för senare granskning.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du samlar in 30 kvitton i veckan och att varje tar cirka 4 minuter att läsa, skriva in och rimlighetskontrollera. Det är ungefär 2 timmar i veckan, och ärligt talat känns det längre eftersom det är så monotont. Med det här flödet tar det cirka en minut att skicka in en bild, sedan väntar du på OCR-bearbetningen och kopierar den strukturerade texten (oftast ytterligare en minut). Du granskar fortfarande, men du granskar extraherad text i stället för att skriva om allt från början – och det är där tiden kommer tillbaka.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Självhosting om du föredrar det (Hostinger fungerar bra)
- OCR.space för att göra kvittobilder till text
- Google Sheets för att lagra kvitton som en logg
- OCR.space API-nyckel (hämtas i din OCR.space-kontopanel)
Kunskapsnivå: Nybörjare. Du kopplar in en API-nyckel, laddar upp en testfil och justerar ett eller två fält som språk.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Du skickar in en kvittobild via ett formulär. Flödet startar med en n8n-formulärtrigger där du laddar upp en fil (t.ex. JPG eller PNG) och svarar på en enkel fråga om kvittot innehåller en tabellayout.
Flödet normaliserar dina indata. Värdet ”Ja/Nej” konverteras till en true/false-flagga som heter isTable, så att OCR-anropet blir förutsägbart. En liten detalj som ger högre driftsäkerhet.
OCR.space extraherar texten. n8n skickar din uppladdade bild till OCR.space via ett HTTP-anrop med din API-nyckel och OCR-parametrar (språk och OCR-motor). Om du markerade det som en tabell försöker OCR.space i högre grad bevara strukturen.
Du får felfri, kopieringsklar output. Den tolkade texten visas tillbaka i en stylad resultatsvy, med formatering som gör totalsummor och radrader lättare att se innan du klistrar in i ett ark eller skickar vidare.
Du kan enkelt ändra standardspråket för OCR så att det matchar dina kvitton och sedan skicka den tolkade texten till Google Sheets för en permanent logg utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera formulärtriggern
Konfigurera formuläret som användaren ser så att arbetsflödet kan ta emot en bild och valet för tabellidentifiering. Detta hanteras av Incoming Image Form.
- Lägg till noden Incoming Image Form och ställ in Form Title till
Receipt OCR. - Ställ in Form Description till
Ladda upp en bild för att extrahera text via OCR.\nMax filstorlek: 1 MB. - I Form Fields lägger ni till ett file-fält med Field Label
File (Max 1MB), Multiple Files satt tillfalseoch Required aktiverat. - Lägg till ett radio-fält med etiketten
Is it a tablemed alternativenYesochNo, och markera det som obligatoriskt.
Tips: Filstorleksgränsen säkerställs via formulärets instruktioner – håll uppladdningar under 1 MB för att undvika fel från OCR-API:et.
Steg 2: anslut OCR.space API
Konfigurera OCR-anropet i OCR API Parsing, som skickar den uppladdade bilden till OCR.space API.
- Ställ in URL till
https://api.ocr.space/parse/imageoch Method tillPOST. - Aktivera Send Body och ställ in Content Type till
multipart-form-data. - Lägg till body-parametrar: language =
pol, OCREngine =2och isTable ={{ $json.isTable }}. - Lägg till parametern file som formBinaryData med Input Data Field Name satt till
File__Max_1MB_. - Credential Required: Anslut era httpHeaderAuth-credentials.
Steg 3: sätt upp bearbetningsnod
Normalisera formulärfälten så att OCR-anropet får konsekventa nycklar med Normalize Form Inputs. Flödet är Incoming Image Form → Normalize Form Inputs → OCR API Parsing.
- I Normalize Form Inputs ställer ni in Include Other Fields till
true. - Ställ in stripBinary till
falseför att behålla den uppladdade fildatan. - Skapa ett strängfält med namnet isTable med värdet
{{ ($json["Is it a table"] ?? $json.Is_it_a_table) === "Yes" }}. - Skapa ett objektfält med namnet File (Max 1MB) med värdet
{{ $json['File (Max 1MB)'] ?? $json.File__Max_1MB_ }}.
⚠️ Vanlig fallgrop: Om filfältets etikett ändras i formuläret, uppdatera uttrycken i Normalize Form Inputs så att den binära filen fortfarande mappas korrekt.
Steg 4: konfigurera utdata-/åtgärdsnoder
Visa den tolkade OCR-texten tillbaka till användaren med Show Parsed Text.
- Ställ in Operation till
completioni Show Parsed Text. - Ställ in Form Title och Completion Title till
OCR Result. - Ställ in Completion Message till
{{ $json.ParsedResults[0].ParsedText }}så att OCR-texten renderas i svaret.
Steg 5: testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att bekräfta att OCR-API:et returnerar tolkad text och att utdata visas korrekt.
- Klicka på Execute Workflow och öppna den publika URL:en för Incoming Image Form.
- Ladda upp en testbild och välj
YesellerNoför tabellfrågan, och skicka sedan in formuläret. - Verifiera att Show Parsed Text visar ett läsbart OCR-resultat från
ParsedResults[0].ParsedText. - När ni är nöjda, slå på arbetsflödet till Active för produktionsanvändning.
Felsökningstips
- OCR.space-inloggningsuppgifter kan löpa ut eller så kan du nå kontogränser. Om det skapar fel, kontrollera först status för din OCR.space API-nyckel i OCR.space-panelen.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera outputen för alltid.
Snabba svar
Cirka 20 minuter om du redan har din OCR.space API-nyckel.
Nej. Du kopplar in din API-nyckel och justerar ett par fält som språk och tabellväxlingen.
Ja. n8n har ett gratis alternativ för självhosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna med OCR.space API-kostnader baserat på din användningsplan.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och hanterar n8n bra. Självhosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det handlar oftast bara om några små justeringar. Du kan ändra OCR-språket i OCR API-anropet (till exempel från polska till engelska) och du kan justera hur resultatet visas i sista steget ”Show Parsed Text”. Om du vill logga till Sheets lägger du till en Google Sheets-åtgärd ”Append row” efter OCR-svaret och mappar ParsedText (eller extraherade totalsummor) till kolumner. För fakturor med mycket tabellinnehåll ska du låta isTable-alternativet vara aktiverat eftersom det brukar bevara rader bättre.
Oftast beror det på en ogiltig eller utgången OCR.space API-nyckel i HTTP-anropets headers. Dubbelkolla att du använder rätt nyckel och bekräfta att din OCR.space-plan inte har nått sina anropsgränser. Säkerställ också att den uppladdade filen är under 1 MB-gränsen som formuläret använder, eftersom för stora bilder kan göra att API-anropet misslyckas eller returnerar tomma resultat.
Om du självhostar n8n finns ingen körningsgräns (det beror på din server), och de flesta små team kan köra hundratals kvittouppladdningar per månad utan att ens tänka på det. På n8n Cloud beror dina månatliga körningar på din plan, så team med högre volymer går vanligtvis upp en nivå. OCR-kapaciteten är oftast ”ett kvitto i taget” per inskick, och den praktiska gränsen handlar mer om OCR.space-kvoter och hur många som skickar in filer samtidigt.
Ofta, ja, eftersom n8n gör det enklare att samla allt på ett ställe: uppladdningsformuläret, HTTP-anropet till OCR.space och formateringen av outputen. Du får också ett alternativ för självhosting, vilket spelar roll om du hanterar många kvitton och inte vill att varje körning ska debiteras som en premiumuppgift. Zapier eller Make kan fortfarande vara okej för ett väldigt enkelt flöde som ”e-postbilaga → OCR → arkrad”, men formulär och anpassad tolkning brukar bli klumpigt. Om du är osäker kan du prata med en automationsexpert så pekar vi dig mot enklaste alternativet för din volym.
När det här väl är igång slutar kvittobilder att vara en backlog och blir användbar data. Sätt upp det en gång och låt sedan flödet ta hand om grovjobbet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.