Att kopiera text ur en PDF är en sån där uppgift som ser enkel ut, men som i tysthet äter upp hela eftermiddagen. Du får trasiga radbrytningar, saknade avsnitt, slumpmässiga sidhuvuden och den där “varför är den här meningen uppdelad på fem rader?”-röran.
Det är här automatisering med Mistral OCR Google Docs lönar sig. Marknadschefer som återanvänder PDF:er till webbinnehåll märker det direkt. Det gör även drift- och ops-team som hanterar skannade underlag, och konsulter som lever i kundernas PDF:er. Du laddar upp en gång och får ett korrekt formaterat Google-dokument som du faktiskt kan redigera och dela.
Nedan ser du hur flödet körs, vad det producerar och vad du behöver för att sätta upp det utan att fastna i tekniska detaljer.
Så här fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Mistral OCR + Google Docs: redigerbara pdf:er
flowchart LR
subgraph sg0["Form Intake 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/>Form Intake Trigger"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Send PDF to Mistral OCR"]
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/>Get Signed File Link"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Run Mistral PDF OCR"]
n4["<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/>Extract Image Tokens"]
n5["<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/>Process Inline Image OCR"]
n6["<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/merge.svg' width='40' height='40' /></div><br/>Combine OCR and Images"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Image Fields", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Aggregate Image Markdown", 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/merge.svg' width='40' height='40' /></div><br/>Merge PDF and Image Text"]
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/code.svg' width='40' height='40' /></div><br/>Replace Image Placeholders"]
n11@{ icon: "mdi:robot", form: "rounded", label: "Sanitize Markdown Output", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Generate Google Document", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Insert Clean Text", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "LLM Chat Model Mini", pos: "b", h: 48 }
n0 --> n1
n2 --> n3
n12 --> n13
n5 --> n6
n7 --> n8
n11 --> n12
n3 --> n4
n3 --> n9
n8 --> n9
n1 --> n2
n14 -.-> n11
n6 --> n7
n4 --> n5
n4 --> n6
n10 --> n11
n9 --> n10
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 n11 ai
class n14 aiModel
class n1,n2,n3,n5 api
class n4,n10 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n4,n5,n6,n9,n10 customIcon
Problemet: PDF:er som inte beter sig
PDF:er är bra för “slutversioner” och dåliga för återanvändning. Du försöker markera text och den kommer ut som ett hopkok. Du kör den genom ett enkelt OCR-verktyg och får ändå manuellt fixa sidhuvuden, sidfötter, avstavningar och konstiga mellanrum. Sedan vill någon ha en delbar Google Docs-version, så du gör om allt igen, den här gången med omformatering inne i Docs. Det är inte bara tid. Det är fokus. Och ärligt talat: det är nedbrytande jobb.
Friktionen ökar dessutom, särskilt när PDF:erna är bildtunga eller skannade.
- Kopiera/klistra från PDF:er tappar ofta ord, slår ihop kolumner och förstör listor, så du lägger mer tid på att korrigera än att extrahera.
- Skannade PDF:er blir en tvåstegshuvudvärk: först OCR, sedan städning i en dokumentredigerare.
- Sidhuvuden, sidfötter och sidnummer smyger in i brödtexten, vilket gör slututkastet slarvigt när du delar det.
- Bildbaserade markeringar och inbäddade figurer försvinner, trots att de ofta är de viktigaste delarna för sammanhanget.
Lösningen: ladda upp en PDF, få ett korrekt formaterat Google-dokument
Det här flödet gör en PDF-uppladdning till ett välformat Google-dokument med Mistrals OCR och ett städsteg som fixar det som OCR vanligtvis slarvar till. Det börjar med ett enkelt offentligt formulär: du laddar upp en PDF (upp till 100 MB) och anger namnet på dokumentet som ska skapas. n8n skickar filen till Mistral Cloud för OCR och hämtar sedan strukturerad text för varje sida. Om PDF:en innehåller bilder eller visuellt innehåll inline, upptäcker flödet dessa “bildtoken”, kör OCR för relevanta bilddelar och sammanfogar resultatet tillbaka i huvudtexten. Till sist sanerar ett AI-steg markdownen så den läser som ett dokument, inte som en rå extrahering, och flödet skapar ett Google-dokument i den Drive-mapp du valt och fyller det med den rensade texten.
Flödet startar när formuläret skickas in. Mistral OCR extraherar sidtext, och sedan lägger flödet vid behov in OCR från inline-bilder. När texten är rensad skapar n8n ett Google-dokument i Google Drive och infogar slutligt innehåll automatiskt.
Det här får du: automatisering kontra resultat
| Det här automatiserar flödet | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du får fem PDF:er varje vecka från partners eller kunder, och att varje PDF tar cirka 45 minuter att kopiera, städa och formatera om till ett delbart Google-dokument. Det är ungefär 4 timmar monotont arbete, och det är lätt att göra misstag när du har bråttom. Med det här flödet laddar du upp PDF:en och namnger dokumentet (kanske 2 minuter). Låt OCR och städning köra i bakgrunden i några minuter, och sedan öppnar du Drive och utkastet ligger klart. Du går fortfarande igenom det, men omskrivning och radbrytningskirurgi försvinner till stor del.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Mistral Cloud för PDF OCR med hög precision.
- Google Drive för att lagra det färdiga Google-dokumentet.
- Google Docs för att skapa och skriva det redigerbara utkastet.
- Mistral Cloud API-nyckel (hämta den i din Mistral Cloud-dashboard).
- Drive-mapp-ID (kopiera det från mappens URL i Drive).
Kunskapsnivå: Nybörjare. Du klistrar in en API-nyckel, kopplar Google och byter till ditt Drive-mapp-ID.
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
En formulärinsändning triggar flödet. Du laddar upp en PDF och anger dokumentnamn, och n8n tar in filen som binärdata.
PDF:en förbereds och skickas till Mistral. Flödet hämtar en signerad fillänk, kör Mistrals PDF OCR och läser PDF-strukturen så att sidtext och inbäddat innehåll kan hanteras korrekt.
OCR för inline-bilder sammanfogas med huvudtexten. Om OCR-utdata innehåller bildtoken loopar flödet igenom dem i batchar, extraherar användbar markdown och ersätter platshållare så att slututkastet kommer i rätt ordning.
Städning sker innan publicering till Google Docs. Ett AI-steg för “sanering” tar bort brus som sidhuvuden, sidfötter och trasiga radbrytningar, och sedan skapar n8n ett Google-dokument i den Drive-mapp du väljer och infogar det rensade innehållet.
Du kan enkelt ändra städreglerna så att de matchar dina formateringspreferenser, eller byta målmapp baserat på kund, projekt eller team. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera formulärtriggern
Konfigurera insamlingsformuläret som tar emot en PDF och ett dokumentnamn, vilket startar workflowet.
- Lägg till noden Form Intake Trigger och ställ in Form Title till
Document Scanner. - I Form Fields, behåll en obligatorisk filinmatning med Accept File Types satt till
.pdf. - Lägg till ett obligatoriskt textfält med etiketten Document Name med platshållaren
NVIDIA Annual Report Doc. - Ställ in Form Description till
Insert the google drive url that stores your image PDFs.
Steg 2: Anslut Mistral OCR-filuppladdning och signerad URL
Ladda upp PDF:en till Mistral och hämta sedan en signerad fil-URL för OCR-bearbetning.
- Konfigurera Send PDF to Mistral OCR med URL satt till
https://api.mistral.ai/v1/filesoch Method satt tillPOST. - I Send PDF to Mistral OCR, ställ in Content Type till
multipart-form-data, lägg till body-parametrar: purpose =ocr, och file som form-binära data frånfile. - Inloggningsuppgifter krävs: Anslut era mistralCloudApi-uppgifter i Send PDF to Mistral OCR.
- Konfigurera Get Signed File Link med URL satt till
=https://api.mistral.ai/v1/files/{{ $json.id }}/url. - I Get Signed File Link, lägg till query-parametern expiry =
24och headern Accept =application/json. - Inloggningsuppgifter krävs: Anslut era mistralCloudApi-uppgifter i Get Signed File Link.
Steg 3: Sätt upp OCR-extraktion och parallell bildbearbetning
Kör PDF-OCR, extrahera inbäddade bildtoken och bearbeta bild-OCR parallellt för att berika texten.
- Konfigurera Run Mistral PDF OCR med URL satt till
https://api.mistral.ai/v1/ocroch Method satt tillPOST. - Ställ in JSON Body i Run Mistral PDF OCR till
={"model":"mistral-ocr-latest","document":{"type":"document_url","document_url":"{{ $json.url }}"},"include_image_base64":true}. - Inloggningsuppgifter krävs: Anslut era mistralCloudApi-uppgifter i Run Mistral PDF OCR.
- Anslut Run Mistral PDF OCR så att den skickar utdata parallellt till både Extract Image Tokens och Merge PDF and Image Text.
- I Extract Image Tokens, behåll den medföljande JavaScript-koden för att extrahera bildplatshållare och base64-data.
- Anslut Extract Image Tokens så att den skickar utdata parallellt till både Process Inline Image OCR och Combine OCR and Images.
- Konfigurera Process Inline Image OCR med URL satt till
https://api.mistral.ai/v1/ocroch JSON Body satt till={"model":"mistral-ocr-latest","document":{"type":"image_url","image_url":"{{ $json.imageDataUri }}"},"include_image_base64":true}. - Inloggningsuppgifter krävs: Anslut era mistralCloudApi-uppgifter i Process Inline Image OCR.
Steg 4: Mappa, aggregera och ersätt bildplatshållare
Normalisera bildfält, aggregera bild-markdown och ersätt bildplatshållare i huvudutdata i markdown.
- Ställ in Combine OCR and Images till Mode =
combineoch Combine By =combineByPosition. - I Map Image Fields, mappa fält med uttryck: pageIndex =
{{ $json.pageIndex }}, imageId ={{ $json.imageId }}, imageDataUri ={{ $json.imageDataUri }}, imagePages ={{ $json.pages }}. - Konfigurera Aggregate Image Markdown för att aggregera imagePages[0].markdown.
- Ställ in Merge PDF and Image Text till Mode =
combineoch Combine By =combineByPosition. - Behåll JavaScript-koden i Replace Image Placeholders oförändrad för att ersätta token som
img-0.jpgmed OCR-text.
imagePages[0].markdown exakt och att OCR-resultaten innehåller bild-ID:n.Steg 5: Sätt upp AI-rensning och utdata till Google Docs
Rensa den sammanslagna markdownen med en LLM och skapa ett Google-dokument med den sanerade texten.
- Öppna Sanitize Markdown Output och behåll den medföljande prompten, som använder
{{ $json["markdown"] }}i input-sektionen. - Säkerställ att LLM Chat Model Mini är ansluten som språkmodell för Sanitize Markdown Output. Inloggningsuppgifter krävs: Anslut era openRouterApi-uppgifter i LLM Chat Model Mini.
- I Generate Google Document, ställ in Title till
={{ $('Form Intake Trigger').item.json['Document Name'] }}och Folder ID till[YOUR_ID]. - Inloggningsuppgifter krävs: Anslut era googleDocsOAuth2Api-uppgifter i Generate Google Document.
- Konfigurera Insert Clean Text med Operation =
updateoch Document URL ={{ $json.id }}, och ställ in infogningstexten till{{ $('Sanitize Markdown Output').item.json.text }}. - Inloggningsuppgifter krävs: Anslut era googleDocsOAuth2Api-uppgifter i Insert Clean Text.
Steg 6: Testa och aktivera ert workflow
Kör ett kontrollerat test för att verifiera OCR, bildersättning och dokumentskapande.
- Klicka på Execute Workflow och ladda upp en PDF via Form Intake Trigger med ett giltigt Document Name.
- Bekräfta att Run Mistral PDF OCR ger ut sidor och att Extract Image Tokens genererar bild-ID:n när bilder är inbäddade.
- Verifiera att Replace Image Placeholders returnerar rensad markdown och att Sanitize Markdown Output returnerar ett
text-fält. - Kontrollera att Generate Google Document skapar ett dokument i den angivna mappen och att Insert Clean Text infogar innehållet.
- När allt fungerar, växla workflowet till Active så att nya formulärinskickningar körs automatiskt.
Vanliga fallgropar
- Inloggningar för Google Drive och Google Docs kan löpa ut eller kräva särskilda behörigheter. Om något slutar fungera: kontrollera “Credentials” i n8n och bekräfta att Google-kontot fortfarande har åtkomst till mål-mappen i Drive.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata i all evighet.
Vanliga frågor
Cirka 30 minuter om du redan har din Mistral-nyckel och Google är kopplat.
Nej. Du kopplar mest konton och klistrar in ett mapp-ID. Flödet är redan ihopkopplat; du konfigurerar, du programmerar inte.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod i n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna med kostnader för Mistral OCR API-användning, som beror på hur många sidor du behandlar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och kör n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en vanlig justering. Du kan styra till olika Drive-mapp-ID:n före noden “Generate Google Document”, med en If-nod eller en uppslagstabell (många team använder Google Sheets för det). En annan enkel anpassning är att justera instruktionerna i “Sanitize Markdown Output” så att dokumentet matchar er stil. Om du vill behålla vissa rubriker eller ta bort alla sidnummer hanteras det vanligtvis i städsteget.
Oftast beror det på en ogiltig eller utgången API-nyckel, eller att nyckeln inte har OCR-åtkomst aktiverad. Dubbelkolla Mistral-uppgifterna i n8n och bekräfta att ditt konto kan anropa OCR-endpointen. Om du skickar stora PDF:er, verifiera också att du håller dig under flödets förväntade filstorlek och att begäran om signerad fillänk returnerar en giltig URL.
Många, så länge din plan och dina API-begränsningar stödjer det. Med n8n Cloud Starter brukar du klara en jämn veckovolym, och högre nivåer hanterar fler körningar. Om du kör egen hosting finns ingen gräns för n8n-körningar, men servern behöver fortfarande tillräckligt med minne och CPU för filhantering. I praktiken kör team batchar av PDF:er dagligen; OCR-leverantörens rate limits är oftast den första flaskhalsen, inte n8n.
Ofta, ja. Det här flödet har förgreningar, sammanfogningar och batchhantering som blir klumpigt (och dyrt) i verktyg som tar betalt per steg. n8n ger dig också mer kontroll över hur OCR-utdata städas innan det hamnar i Google Docs, vilket är skillnaden mellan “användbart utkast” och “fortfarande en röra”. Zapier eller Make kan fungera för en enkel PDF-till-text, men de fallerar ofta när du lägger till hantering av bildtoken och formateringsstädning. Om du är osäker, prata med en automatiseringsexpert och beskriv exakt vilka PDF-typer du har.
När det här väl rullar slutar PDF:er vara en återvändsgränd och blir redigerbart källmaterial. Flödet tar hand om den repetitiva städningen så att du kan lägga tiden på arbete som faktiskt kräver ditt omdöme.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.