Planritningsuppladdningar låter enkelt tills inkorgen fylls av suddiga skärmdumpar, fel PDF:er och “nästan” användbara ritningar som slösar bort en eftermiddag.
Det här är den typ av röra som fastighetsförvaltare snubblar över varje vecka. Real estate ops-team märker det när annonser staplas på hög, och byråer som hanterar intake åt byggbolag drabbas också. Med floorplan OCR automation slutar du dubbelkolla filer och börjar få strukturerade mått direkt in i Google Sheets.
Det här flödet klassificerar varje uppladdning, stoppar skräp tidigt och extraherar rumsstorlekar från giltiga planritningar. Du får se vad det gör, vad du behöver och var team oftast kör fast.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutlig output:
n8n Workflow Template: Google Sheets + Jigsaw: sorterade planritningar
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Privacy Consent", pos: "b", h: 48 }
n1["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Incoming Upload Webhook"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Return Consent Prompt"]
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/code.svg' width='40' height='40' /></div><br/>Split Uploaded Files"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Detect File Category", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Extract PDF Details", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Size and Pages", pos: "b", h: 48 }
n7["<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/code.svg' width='40' height='40' /></div><br/>Compute Heuristic Score"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route by Confidence", pos: "b", h: 48 }
n9["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Return Low Quality Reply"]
n10["<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/>Classify Image Content"]
n11["<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/>Classify PDF Content"]
n12["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Return Image Verdict"]
n13["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Return PDF Verdict"]
n14["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Return Size Limit Notice"]
n15["<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/>Store File in Jigsaw"]
n16@{ icon: "mdi:cog", form: "rounded", label: "Utility: No Action", pos: "b", h: 48 }
n11 --> n13
n0 --> n3
n0 --> n2
n10 --> n12
n1 --> n0
n6 --> n7
n6 --> n14
n8 --> n9
n8 --> n11
n8 --> n16
n5 --> n6
n4 --> n15
n4 --> n5
n15 --> n10
n3 --> n4
n7 --> n8
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,n4,n6,n8 decision
class n1,n2,n9,n10,n11,n12,n13,n14,n15 api
class n3,n7 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n7,n9,n10,n11,n12,n13,n14,n15 customIcon
Problemet: planritningar kommer in rörigt, och det bromsar allt
Om du tar emot planritningar från hyresgäster, ägare, mäklare eller entreprenörer känner du igen mönstret. Folk laddar upp vad som helst som “ser ungefär rätt ut”: flersidiga broschyrer, foton av en utskrift tagen på kvällen, pyttesmå PDF:er med oläsbara mått eller helt orelaterade bilder. Sedan måste någon i ditt team öppna varje fil, avgöra om den går att använda och manuellt skriva in rumsdimensioner någonstans. Det värsta är omarbetet. Du upptäcker ofta att ritningen är skräp först efter att du redan försökt extrahera data från den.
Det eskalerar snabbt. Här brukar processen fallera.
- Någon måste granska varje uppladdning manuellt, och den där “snabbkollen” blir lätt runt 2 timmar i veckan när volymerna ökar.
- Dåliga filer slinker igenom, vilket gör att efterföljande team bygger offerter, annonser eller mängdningar på saknade eller felaktiga mått.
- Även när ritningen är giltig bjuder kopiering av mått till ett kalkylark in till stavfel och inkonsekventa namn (Sovrum 1 vs. Sovrm).
- När du inte kan lita på intake kan du inte skala, eftersom varje ny annons eller varje nytt projekt bara ökar den manuella granskningen.
Lösningen: validera planritningar automatiskt och extrahera mått till Google Sheets
Det här n8n-flödet fungerar både som grindvakt och som en assistent för dataregistrering. En användare laddar upp en fil via en webhook (PDF, JPG, PNG och liknande format). Innan något annat händer kontrollerar flödet integritetssamtycke, så att du inte råkar behandla filer du inte ska. Därefter delas uppladdade filer upp och routas efter typ, grundläggande PDF-detaljer hämtas vid behov (som sidantal och storlek), och en kvalitetskontroll i två lager körs: först enkla heuristiker, sedan AI-klassificering för högre säkerhet. Om filen har låg kvalitet eller inte är en planritning avvisas den direkt med ett tydligt svar. Om den godkänns lagrar flödet filen i Jigsaw och skickar den vidare till djupare OCR/AI-analys för att extrahera rumsstorlekar och mått. Outputen är strukturerad (JSON) och även formaterad för manuell granskning, så att datan går att använda och resultatet blir lätt att överblicka.
Flödet startar med en uppladdning och en samtyckeskontroll. Sedan poängsätter det filen och avgör nästa steg baserat på säkerhet. Till sist behandlas giltiga ritningar och de extraherade måtten kan skrivas in i Google Sheets så att teamet kan granska och gå vidare.
Vad du får: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här kan det se ut
Säg att du får 30 planritningsuppladdningar i veckan. Manuellt kan du lägga cirka 5 minuter på att öppna varje fil och avgöra om den går att använda, plus ytterligare 10 minuter på att skriva in rumsstorlekar i Google Sheets för de giltiga. Om 20 av dem är giltiga blir det ungefär 6 timmar i veckan. Med det här flödet blir “mänsklig tid” närmare 30 sekunder per uppladdning för att skicka in den och snabbt se beslutet, så du hamnar runt 30 minuter i uppföljning medan extraheringen kör i bakgrunden.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Jigsaw Stack för fillagring och planritningsanalys
- Google Sheets för att lagra extraherade mått för granskning
- Jigsaw Stack API-nyckel (hämtas i din Jigsaw-dashboard)
Kunskapsnivå: Medel. Du kopplar ihop några tjänster, klistrar in API-nycklar och testar med ett par riktiga uppladdningar.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En uppladdning träffar din webhook. En användare skickar in en PDF eller bild via “Incoming Upload Webhook”, där du kan koppla ett formulär, en app eller till och med en enkel intern uppladdningssida.
Samtycke och filhantering sker direkt. Flödet kontrollerar integritetssamtycke och svarar direkt om samtycke saknas, så att du inte behandlar något du inte ska. Därefter delas uppladdningar upp och PDF:er och bilder routas olika eftersom de kräver olika kontroller.
Kvalitetspoäng avgör nästa steg. För PDF:er extraheras grundläggande detaljer och storlek samt sidantal valideras. Sedan beräknas en heuristisk poäng och filen routas baserat på säkerhet, vilket gör att uppenbart skräp avvisas tidigt och bara bra kandidater går vidare till AI-klassificering.
Klassificering, lagring och strukturerad output. Flödet använder HTTP-anrop för att klassificera bild- eller PDF-innehåll, lagrar filen i Jigsaw och returnerar ett beslut. För giltiga planritningar kommer extraheringen tillbaka som strukturerad JSON plus en lättläst tabell som du kan mappa in i Google Sheets för löpande granskning.
Du kan enkelt justera trösklarna för säkerhet för att vara striktare (färre falska positiva) eller mer tillåtande (färre felaktiga avvisningar) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera webhook-triggern
Sätt upp den inkommande uppladdningsendpointen och sekretesskontrollen så att arbetsflödet kan ta emot filer på ett säkert sätt.
- Lägg till eller öppna Incoming Upload Webhook och ställ in Path på
fp-mvp. - Ställ in HTTP Method på
POSToch Response Mode påresponseNode. - Aktivera Authentication som
basicAuth. - Inloggningsuppgifter krävs: Anslut era httpBasicAuth-inloggningsuppgifter i Incoming Upload Webhook.
- Öppna Validate Privacy Consent och bekräfta att villkoret använder
{{$json.body.GDPR_check || $json.body.GDPR_check2}}för att endast tillåta behandling med samtycke. - Verifiera att “false”-utdata från Validate Privacy Consent går vidare till Return Consent Prompt med JSON-svaret som kräver samtycke.
Tips: Om er frontend skickar samtyckesflaggor under andra fältnamn, uppdatera uttrycket i Validate Privacy Consent så att det matchar.
Steg 2: Koppla filinläsning och kategoriroutning
Dela upp inkommande binärfiler och routa bilder respektive PDF:er till rätt bearbetningsflöden.
- I Split Uploaded Files, behåll den medföljande JavaScript-koden som skapar separata filobjekt och bevarar binärnyckeln.
- I Detect File Category, säkerställ att kontrollen för bildändelser fortsätter vara
{{ ["png","jpg","jpeg","bmp","tiff","webp","gif"].includes($json.fileExtension.toLowerCase()) }}. - Bekräfta att “true”-grenen i Detect File Category går till Store File in Jigsaw (bildflödet).
- Bekräfta att “false”-grenen i Detect File Category går till Extract PDF Details (PDF-flödet).
⚠️ Vanlig fallgrop: Om filändelser kommer i versaler krävs anropet toLowerCase() i Detect File Category för att undvika felroutning.
Steg 3: Sätt upp PDF-extraktion och kvalitetsheuristik
Extrahera PDF-innehåll, validera storleks-/sidgränser och beräkna en konfidenspoäng som används för routning.
- I Extract PDF Details, ställ in Operation på
pdfoch Binary Property Name på{{ $json.fileKey }}. - I Validate Size and Pages, behåll båda villkoren: uttrycket för filstorleksgräns och kontrollen av PDF-sidor
{{$json.fileExtension.toLowerCase() !== "pdf" ? true : ($json.numpages && $json.numpages < 10)}}. - Säkerställ att “false”-utdata från Validate Size and Pages går till Return Size Limit Notice.
- I Compute Heuristic Score, låt Mode vara
runOnceForEachItemoch behåll den medföljande JavaScript-logiken för poängsättning. - Verifiera att Compute Heuristic Score är kopplad till Route by Confidence för att styra klassificeringen längre ned i flödet.
Steg 4: Konfigurera klassificering och svar
Koppla Jigsaw-klassificeringsendpoints och returnera lämpliga utlåtanden för bilder och PDF:er. Route by Confidence skickar objekt med låg kvalitet till ett avvisningssvar och objekt med högre konfidens till klassificeraren.
- I Store File in Jigsaw, ställ in URL på
https://api.jigsawstack.com/v1/store/file, Content Type påbinaryDataoch Input Data Field Name på{{ $json.fileKey }}. - I Store File in Jigsaw, bekräfta query-parametrarna: key =
{{ $json.fileName }}, overwrite =true, temp_public_url =true, samt headern Content-Type ={{ $json.mimeType }}. - Inloggningsuppgifter krävs: Anslut era httpHeaderAuth-inloggningsuppgifter i Store File in Jigsaw.
- I Classify Image Content, ställ in URL på
https://api.jigsawstack.com/v1/classificationoch behåll JSON-kroppen som använder{{ $json.temp_public_url }}. - Inloggningsuppgifter krävs: Anslut era httpHeaderAuth-inloggningsuppgifter i Classify Image Content.
- I Classify PDF Content, behåll JSON-kroppen som använder
{{ JSON.stringify ($json.text) }}. - Inloggningsuppgifter krävs: Anslut era httpHeaderAuth-inloggningsuppgifter i Classify PDF Content.
- Bekräfta utdata: Classify Image Content → Return Image Verdict och Classify PDF Content → Return PDF Verdict.
- Verifiera att Route by Confidence skickar matchningar med låg konfidens till Return Low Quality Reply och matchningar med högre konfidens till Classify PDF Content; utdata från Utility: No Action är en no-op-platshållare.
- Gå igenom de fem respondToWebhook-noderna (Return Consent Prompt, Return Low Quality Reply, Return Image Verdict, Return PDF Verdict, Return Size Limit Notice) för att säkerställa att deras JSON-svar är korrekta för ert UI.
Steg 5: Testa och aktivera ert arbetsflöde
Kör end-to-end-tester för att bekräfta att samtyckeskontroll, filroutning, klassificering och svar fungerar som förväntat.
- Använd test-URL:en för Incoming Upload Webhook för att skicka in en fil med och utan samtyckesflaggor och bekräfta att ni får rätt svar från Return Consent Prompt eller att bearbetningsflödet körs.
- Ladda upp en bildfil och verifiera att flödet kör Store File in Jigsaw → Classify Image Content → Return Image Verdict.
- Ladda upp en PDF och bekräfta att flödet kör Extract PDF Details → Validate Size and Pages → Compute Heuristic Score → Route by Confidence → Classify PDF Content → Return PDF Verdict.
- Trigga en för stor fil för att bekräfta att Return Size Limit Notice svarar med meddelandet om storleksgräns.
- När resultaten ser korrekta ut, växla arbetsflödet till Active för produktion.
Vanliga fallgropar
- Behörigheter i Google Sheets kan blockera skrivningar även när kopplingen “ser” korrekt ut. Om rader inte dyker upp, kontrollera delningsinställningarna för kalkylarket och kontot som används i n8n.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Jigsaw API-nycklar kan löpa ut eller vara hårt begränsade i scope. Om klassificeringen plötsligt misslyckas, kontrollera loggarna i din Jigsaw-dashboard och spara om autentiseringsuppgifterna i n8n.
Vanliga frågor
Cirka 45 minuter om dina konton och din API-nyckel är redo.
Nej. Du kopplar ihop tjänster, klistrar in autentiseringsuppgifter och justerar ett par tröskelvärden.
Ja. n8n har ett gratis self-hosted-alternativ 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 Jigsaw API-användning, som beror på hur många filer du behandlar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du sannolikt om du får många brusiga uppladdningar. Du kan skärpa reglerna i “Validate Size and Pages” och höja gränsen i confidence-routingen (“Route by Confidence”) så att gränsfall avvisas tidigare. Många team justerar också den heuristiska poänglogiken så att små, lågupplösta ritningar inte når OCR alls. Om du vill ha andra outputs kan du mappa de returnerade JSON-fälten till nya kolumner i Google Sheets eller byta destination helt.
Oftast är det en ogiltig eller utgången API-nyckel i HTTP Request-noderna som pratar med Jigsaw. Skapa en ny nyckel i din Jigsaw-dashboard och uppdatera sedan autentiseringsuppgiften i n8n och testa igen med en ny uppladdning. Om det fortfarande misslyckas, kontrollera om din Jigsaw-plan har begränsningar för anrop och bekräfta att endpointen du anropar matchar filtypen (bild vs PDF).
Med n8n Cloud Starter kan du köra några tusen workflow-körningar per månad, och self-hosting tar bort den gränsen helt (din server blir begränsningen). I praktiken hanterar det här flödet uppladdningar en och en utan problem; om du förväntar dig toppar, lägg till en kö (Redis ingår redan i stacken) så att du inte överbelastar dina OCR-anrop.
Ofta, ja. Det här flödet bygger på villkorsstyrd routing, förgrening baserad på säkerhet, filparsing och flera HTTP-anrop, och där brukar n8n vara enklare och billigare att köra i volym. Zapier och Make klarar delar av det, men flerstegslogik för dokument blir snabbt klumpig, och avancerade flöden knuffar dig ofta upp i dyrare nivåer. Om du bara behöver “ladda upp fil → mejla mig” fungerar de verktygen. Om du behöver pålitlig klassificering plus extrahering är n8n ett mer flexibelt val. Prata med en automationsexpert om du vill ha en snabb rekommendation för din exakta process.
Du får bättre uppladdningar, strukturerade mått och färre “kan du skicka igen?”-mejl. Sätt upp det en gång och låt sedan flödet sköta de repetitiva kontrollerna medan du driver projekten framåt.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.