Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Telegram + Mistral OCR: skanningar till Markdown

Rickard Andersson Partner, Nodenordic.se

Att manuellt skriva om text från skanningar är plågsamt. Du zoomar in, gissar bokstäver, kopierar och klistrar in i bitar och får ändå lägga tid på att fixa konstiga radbrytningar och saknade ord.

Marknadschefer som gör om eventutdelningar till copy känner igen det. Detsamma gäller byråägare som vill återanvända kund-PDF:er, och drift/ops-personer som bara behöver strukturerad text till arkiv. Den här Telegram OCR Markdown-automationen ger dig en användbar Markdown-fil tillbaka i chatten, snabbt.

Du får se hur arbetsflödet hanterar PDF:er och bilder, stoppar för stora filer, kör Mistral OCR och sedan skickar tillbaka en snygg .md till den som laddade upp filen.

Så här fungerar automationen

Hela n8n-arbetsflödet, från trigger till slutlig output:

n8n Workflow Template: Telegram + Mistral OCR: skanningar till Markdown

Problemet: skannade dokument blir till tidsödande handpåläggning

Det mesta av den “viktiga” informationen dyker fortfarande upp som PDF:er och foton. Ett signerat formulär, en meny, ett flygblad, en konferensbricka, en skärmdump av en tabell. Så fort du behöver innehållet i ett användbart format fastnar du i manuell extraktion: skriva om, kopiera/klistra från dåliga PDF-lager eller hoppa mellan slumpmässiga OCR-sajter du inte riktigt litar på. Sedan behöver du ändå fixa resultatet igen eftersom outputen är rörig. Det är den delen som i smyg äter en timme här och där, och den är svår att delegera utan att kvaliteten faller.

Friktionen byggs på. Och den dyker oftast upp när du har bråttom.

  • Du tappar ungefär 20 minuter per dokument bara på att få texten i ett användbart format.
  • OCR-verktyg returnerar ofta textväggar, så “städningen” blir det verkliga jobbet.
  • Filer delas ändå i chatten, men den extraherade texten hamnar någon annanstans, vilket gör att ingen hittar den senare.
  • Team gör om samma extraktion två gånger eftersom ingen vet vem som redan gjorde den.

Lösningen: Telegram-till-Markdown OCR, automatiskt

Det här arbetsflödet gör Telegram till din “dropbox” för OCR. Du skickar en PNG, JPEG eller PDF till din bot och n8n tar över. Först routar den inkommande meddelandet, kontrollerar åtkomst (valfri whitelist) och bekräftar att filen håller sig inom Telegrams gräns på 25 MB. Sedan identifierar den filtypen och hämtar själva filen från Telegram. Därefter skickas dokumentet till Mistral OCR via en HTTP-förfrågan, tar emot den igenkända texten och bygger korrekt formaterad Markdown. Till sist konverterar den Markdownen till en riktig .md-fil och skickar tillbaka den i Telegram som en bilaga, redo att kopiera, redigera eller vidarebefordra.

Arbetsflödet startar med en Telegram webhook-händelse, validerar sedan meddelandet och filen. OCR körs via Mistral, outputen städas till Markdown och den färdiga .md-filen kommer tillbaka till samma chatt, vilket håller hela processen på ett ställe.

Vad du får: automation vs. resultat

Exempel: så här ser det ut i praktiken

Säg att du hanterar 10 skannade PDF:er i veckan (leverantörsformulär, eventbroschyrer, kvitton). Manuellt tar till och med en “snabb” kopiera-och-städa-runda kanske 20 minuter per fil, alltså runt 3 timmar pilligt arbete. Med det här arbetsflödet skickar du varje fil till Telegram på under en minut, väntar ungefär en minut på OCR och får tillbaka en korrekt formaterad .md. Det är nära 2 timmar tillbaka de flesta veckor, utan att ändra hur teamet redan delar filer.

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)
  • Telegram-bot för att ta emot filer och svara.
  • Åtkomst till Mistral OCR för att extrahera text från PDF:er/bilder.
  • Telegram bot-token (hämta den från BotFather i Telegram).

Svårighetsnivå: Medel. Du klistrar in API-tokens, sätter webhook-URL:er och testar boten end-to-end.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

Ett Telegram-meddelande triggar arbetsflödet. Den inkommande webhooken tar emot uppdateringar från din bot och routar händelsen (kommandon vs. filer) så att rätt väg körs.

Åtkomst- och filkontroller sker direkt. Om du aktiverar whitelist kontrollerar arbetsflödet avsändarens Telegram User ID och blockerar alla som inte är godkända. Det upprätthåller också Telegrams gräns på 25 MB, så stora filer får ett tydligt “för stor”-svar i stället för att misslyckas tyst.

Filen hämtas och skickas till OCR. n8n hämtar själva PDF:en eller bilden från Telegram, identifierar vad det är (PNG/JPEG/PDF) och skickar den till Mistral OCR via en HTTP-förfrågan. Om OCR misslyckas får användaren ett felmeddelande i stället för att vänta för evigt.

Markdown byggs och returneras som en fil. Den igenkända texten formateras till korrekt formaterad Markdown, konverteras till en .md-bilaga och levereras tillbaka till Telegram. Det finns också en smart “download proxy”-lösning: Telegram hämtar filen via en GET-förfrågan tillbaka till arbetsflödet, vilket är anledningen till att arbetsflödet måste vara Aktivt för att nedladdningar ska fungera.

Du kan enkelt justera whitelist-reglerna för att tillåta en teamchatt eller en lista med användar-ID:n utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera den manuella triggern

Det här arbetsflödet använder en manuell start för att registrera Telegram-webhooks och tar därefter emot händelser i produktion via webhook-endpointen.

  1. Lägg till noden Manual Webhook Starter för att starta konfigurationsflödet.
  2. Anslut Manual Webhook Starter till Telegram Webhook Settings så att konfigurationen körs före driftsättning.
  3. Lägg till noden Inbound Webhook och ställ in Path till 0be4fd3e-05dd-4d57-8563-0275f74d727e.
  4. I Inbound Webhook, ställ in Response Mode till responseNode och aktivera HTTP Method-värdena POST och GET.

Tips: Behåll webhookens Path oförändrad efter driftsättning, eftersom den refereras av Telegram i Apply Production Webhook och Apply Dev Webhook.

Steg 2: Anslut Telegram

Telegram används genom hela arbetsflödet för att hämta filer, skicka statusmeddelanden och leverera OCR-resultat. Flera Telegram-noder delar samma autentiseringsuppgift.

  1. Öppna varje Telegram-nod och anslut autentiseringsuppgifter där det krävs.
  2. Autentiseringsuppgift krävs: Anslut era telegramApi-autentiseringsuppgifter i Send Typing Status, Command Help Notice, File Size Too Large, Create Temp File Link, Unsupported File Alert, Access Blocked Notice, Send Bot Capabilities, Dispatch Markdown to Telegram, Retrieve Telegram File och OCR Failure Alert.
  3. I Send Typing Status, ställ in Chat ID till {{ $('Bot Settings').item.json.Chat_ID }} och Operation till sendChatAction.
  4. I Dispatch Markdown to Telegram, aktivera Binary Data och ställ in File Name till {{ $('Inbound Webhook').item.json.body.message.document.file_name }}-ocr.md.

⚠️ Vanlig fallgrop: Om Telegram-autentiseringsuppgifter saknas på någon meddelandenod kommer arbetsflödet tyst att misslyckas med att notifiera användare.

Steg 3: Konfigurera webhook-registrering

Det här avsnittet registrerar Telegram-webhookens URL för antingen produktions- eller utvecklingsmiljö.

  1. I Telegram Webhook Settings, ställ in Production_Mode till true eller false.
  2. Fyll i Bot_API_Key, Webhook_Prod_URL och Webhook_Dev_URL i Telegram Webhook Settings.
  3. I Verify Production Mode, behåll villkoret {{ $('Telegram Webhook Settings').item.json.Production_Mode }} satt till true för produktionsrouting.
  4. I Apply Production Webhook, ställ in URL till https://api.telegram.org/bot{{ $('Telegram Webhook Settings').item.json.Bot_API_Key.trim() }}/setWebhook och Query Parameter url till {{ $('Telegram Webhook Settings').item.json.Webhook_Prod_URL.trim() }}.
  5. I Apply Dev Webhook, ställ in URL till https://api.telegram.org/bot{{ $('Telegram Webhook Settings').item.json.Bot_API_Key.trim() }}/setWebhook och Query Parameters url till {{ $('Telegram Webhook Settings').item.json.Webhook_Dev_URL.trim() }} samt drop_pending_updates till 1.
  6. Behåll Fetch Webhook Status konfigurerad med URL https://api.telegram.org/bot{{ $('Telegram Webhook Settings').item.json.Bot_API_Key }}/getWebhookInfo för felsökning.

Steg 4: Konfigurera request-routing och vitlistning

Inkommande webhook-data parsas och routas för att hantera bot-kommandon, filer och callbacks, samtidigt som åtkomstkontroll upprätthålls.

  1. I Bot Settings, ställ in Bot_Whitelist_Active till false eller true och Allowed_Chat_IDs till [YOUR_ID].
  2. I Bot Settings, ställ in Chat_ID till {{ $json.body?.message?.chat?.id || $json.body?.callback_query?.from?.id }}.
  3. Behåll routingflödet Bot SettingsIdentify Request SourceTelegram Event Router som primär ingångsväg.
  4. I Whitelist Disabled Check, låt villkoret {{ $('Bot Settings').item.json.Bot_Whitelist_Active }} avgöra om Whitelist Evaluation ska köras.
  5. Säkerställ att Whitelist Evaluation skickar sitt resultat till Validate Whitelist Result, som skickar antingen Send Typing Status eller Access Blocked Notice.
  6. I Route Message Type, behåll de tre reglerna för bot_command, filens existens och callback-data för korrekt förgrening.

Tips: Använd en kommaseparerad lista i Allowed_Chat_IDs om ni behöver tillåta flera användare.

Steg 5: Validera och förbered filen för OCR

Filer kontrolleras avseende storlek och typ innan de omvandlas till en temporär Telegram-fil-URL för OCR.

  1. I Validate File Size, behåll villkoret {{ $('Inbound Webhook').item.json.body.message.document.file_size }} satt till lte 20971520 (20 MB).
  2. I Detect File Type, lämna MIME-mappningen för image/jpeg, image/png och application/pdf intakt.
  3. Säkerställ att Detect File Type skickar output till Validate Image or PDF, som routar giltiga filer till Create Temp File Link och avvisar övriga till Unsupported File Alert.
  4. I Create Temp File Link, ställ in File ID till {{ $('Inbound Webhook').item.json.body.message.document.file_id }} och behåll Download som false.

⚠️ Vanlig fallgrop: Om det inkommande Telegram-meddelandet inte är ett dokument kommer Validate File Size och Detect File Type inte att hitta de förväntade fälten.

Steg 6: Konfigurera OCR-förfrågan och skapa Markdown

Giltiga filer skickas till Mistral OCR, konverteras till Markdown och förbereds som en textfil.

  1. Autentiseringsuppgift krävs: Anslut era mistralCloudApi-autentiseringsuppgifter i Mistral OCR Request.
  2. I Mistral OCR Request, ställ in URL till https://api.mistral.ai/v1/ocr och behåll Method som POST.
  3. Ställ in JSON Body till { "model": "mistral-ocr-latest", "document": { "type": "{{ $('Detect File Type').item.json.file_class }}", "{{ $('Detect File Type').item.json.file_class }}": "{{ $('Bot Settings').item.json.File_Downloader_Prod_URL.trim() }}?tg_file={{ $('Create Temp File Link').item.json.result.file_id }}" } }.
  4. Verifiera att Mistral OCR Request skickar output till Markdown Composer och att felutgången routas till OCR Failure Alert.
  5. I Markdown Composer, behåll standard-JavaScript-koden som bygger en sidindelad markdown-sträng och outputtar fileName och fileContent.

Steg 7: Konvertera och leverera OCR-filen

Markdown-texten konverteras till en fil och levereras tillbaka till Telegram-användaren som ett dokument.

  1. I Convert Markdown File, ställ in Operation till toText och Source Property till fileContent.
  2. Säkerställ att Convert Markdown File är ansluten till Dispatch Markdown to Telegram för slutlig leverans.
  3. Behåll Reply With Attachment ansluten till Retrieve Telegram File för fil-proxy-svar.

Steg 8: Testa och aktivera ert arbetsflöde

Kör ett manuellt test för att verifiera webhook-registrering, filrouting, OCR-bearbetning och meddelandeleverans.

  1. Klicka på Execute WorkflowManual Webhook Starter för att registrera webhooken via Apply Production Webhook eller Apply Dev Webhook.
  2. Skicka en PDF- eller bildfil till er Telegram-bot och bekräfta att Send Typing Status triggas innan OCR startar.
  3. Verifiera att Mistral OCR Request returnerar data och att Dispatch Markdown to Telegram levererar en -ocr.md-fil tillbaka till chatten.
  4. Om ni testar åtkomstkontroll, skicka ett meddelande från ett ID som inte är vitlistat och bekräfta att Access Blocked Notice triggas.
  5. Aktivera arbetsflödet genom att växla det till Active när testerna lyckas.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Telegram-credentials kan löpa ut eller klistras in fel. Om meddelanden slutar komma, kontrollera din bot-token i n8n-credentials och bekräfta att din webhook fortfarande är satt till rätt URL.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Mistral OCR-svar kan se “bra” ut men ändå behöva formatering. Standard-kompositionen för Markdown är generell, så lägg in din föredragna struktur tidigt (rubriker, punktlistregler, kodblock) annars kommer du fortsätta rätta output manuellt.

Vanliga frågor

Hur lång tid tar det att sätta upp den här Telegram OCR Markdown-automationen?

Cirka 30 minuter om din Telegram-bot och OCR-nyckel är klara.

Behöver jag kodningskunskaper för att automatisera Telegram OCR till Markdown?

Nej. Du kopplar mest konton och klistrar in tokens på rätt ställen. Den enda “tekniska” delen är att testa webhooken en gång så att Telegram kan nå din n8n-instans.

Är n8n gratis att använda för det här Telegram OCR Markdown-arbetsflödet?

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 kostnader för Mistral OCR/API-användning, som beror på hur många sidor du bearbetar.

Var kan jag hosta n8n för att köra den här automationen?

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 serveradministration.

Kan jag anpassa det här Telegram OCR Markdown-arbetsflödet för en privat teambot?

Ja, och ärligt talat är det en av de bästa anledningarna att använda den här mallen. Slå på whitelist-logiken och lägg till teamets Telegram User IDs så att bara godkända personer kan köra OCR. Du kan också anpassa svaren för “hjälp” och “funktioner” och justera Markdown Composer så att outputen matchar din stil (till exempel tvinga rubriker, lägga till avgränsare eller ta bort extra tomrader).

Varför misslyckas min Telegram-anslutning i det här arbetsflödet?

Oftast är det bot-token eller webhook-URL:en. Bekräfta bot-token i dina Telegram-credentials och kontrollera sedan att webhooken är satt till den exakta publika URL:en för din n8n-webhook (dev vs. produktion spelar roll). Om du kör self-hosted, se till att Telegram kan nå din instans via HTTPS, inte en lokal IP-adress. En sak till: “download proxy”-upplägget kräver att arbetsflödet är Aktivt, så testa med arbetsflödet påslaget.

Hur många filer kan den här Telegram OCR Markdown-automationen hantera?

Många, så länge du håller varje uppladdning under 25 MB.

Är den här Telegram OCR Markdown-automationen bättre än att använda Zapier eller Make?

För det här användningsfallet är n8n oftast ett renare val eftersom du kan hantera filroutning, whitelist-kontroller och logiken för att “skicka en genererad fil tillbaka till chatten” i ett och samma arbetsflöde utan att betala extra för förgreningar. Zapier och Make kan fungera, men filhantering i flera steg blir dyrt och ibland klumpigt. n8n ger dig också self-host-alternativet, vilket spelar roll om din volym skjuter i höjden eller om du vill ha tajtare kontroll. Om ditt behov bara är “OCR en bild, skicka text någonstans” kan enklare verktyg räcka. Prata med en automationsexpert om du vill ha hjälp att välja.

När detta väl rullar slutar “kan du plocka ut texten från den här?” att vara en uppgift. Det blir en två minuters överlämning i Telegram, med en Markdown-fil som är redo att användas.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal