Blog JSystems - uwalniamy wiedzę!

Szukaj
Automatyzacja z n8n
Ze zdjęcia faktury do gotowych danych: agent AI odczytuje sprzedawcę, NIP, numer faktury, datę wystawienia i kwotę brutto
Efekt końcowy w skrócie: agent AI bierze zdjęcie lub skan faktury i sam wypełnia pola - sprzedawcę, NIP, numer, datę i kwotę - gotowe do dalszego użycia, bez przepisywania.

Przepisywanie danych z faktur i paragonów do arkusza albo systemu księgowego to jedna z najbardziej żmudnych, codziennych czynności w biurze. W tym przewodniku zbudujemy agenta AI, który robi to za nas: dostaje zdjęcie lub skan faktury, „czyta” go jak człowiek i zwraca uporządkowane pola - nazwę sprzedawcy, NIP, numer faktury, datę i kwotę. Wszystko bez pisania kodu, w narzędziu n8n.

To kolejny krok względem agenta, który tylko rozmawia. Tutaj agent widzi - przetwarza obraz, a nie tylko tekst. Przewodnik jest dla osób nietechnicznych: pokażemy każdy etap na prawdziwym zrzucie ekranu z działającego przepływu.

Z tego artykułu dowiesz się:

  • czym jest agent „widzący” obraz i czym różni się od zwykłego chatbota,
  • jak w n8n złożyć przepływ: wejście (zdjęcie), model rozpoznający obraz i uporządkowane dane na wyjściu,
  • jak napisać instrukcję, żeby agent zwracał czyste pola, a nie opis słowny,
  • jak przygotować dane do zapisania w arkuszu, Excelu lub bazie,
  • na co uważać: jakość zdjęć, paragony, weryfikacja kwot i koszty.

1. Agent, który widzi - nie tylko czyta tekst

Większość agentów AI, które znamy, pracuje na tekście: zadajesz pytanie, dostajesz odpowiedź. Modele multimodalne potrafią więcej - przyjmują na wejściu również obraz i „rozumieją” jego treść. Możesz pokazać im zdjęcie dokumentu, a one odczytają z niego konkretne informacje. To otwiera drzwi do automatyzacji, która wcześniej wymagała specjalistycznego oprogramowania do rozpoznawania tekstu (OCR) i mozolnej konfiguracji.

Nasz agent będzie miał jedno zadanie: z obrazu faktury wyciągnąć ustalone pola w uporządkowanej formie. Nie chcemy opisu w stylu „to faktura od firmy TechHurt na kwotę...”, tylko gotowych danych, które od razu wpadną do kolumn arkusza. Różnica jest taka jak między notatką a wypełnioną tabelką.

Jeśli wcześniej budowałeś z nami prywatnego agenta odpowiadającego z dokumentów, to jest naturalny kolejny krok: tam agent czytał tekst, tutaj będzie czytał obrazy.

2. Co zbudujemy - przegląd, zanim zaczniemy

n8n to narzędzie do automatyzacji, w którym łączysz „klocki” (węzły) na płótnie - każdy wykonuje jedno zadanie. Nasz agent to zaledwie trzy połączone węzły, które za chwilę dodamy krok po kroku:

  1. Wgraj fakturę - prosty formularz z polem na plik. Przeciągasz zdjęcie lub skan i klikasz Wyślij; to uruchamia cały przepływ (Twoje „ręczne” wywołanie). Nic nie wgrywasz na żaden serwer.
  2. Analizuj fakturę - węzeł AI z operacją „rozpoznaj obraz”. To tu model patrzy na fakturę i wyciąga dane.
  3. Uporządkuj dane - zamienia odpowiedź modelu na czysty wiersz z kolumnami, gotowy do arkusza.
Animacja przepływu: zdjęcie faktury, model widzi obraz, uporządkowane pola, wiersz w arkuszu
Cały pomysł w jednej animacji: zdjęcie faktury wchodzi z jednej strony, a gotowy wiersz danych wychodzi z drugiej.
Gotowy przepływ w n8n z trzech węzłów: Wgraj fakturę (formularz), Analizuj fakturę, Uporządkuj dane
Tak będzie wyglądał gotowy agent, kiedy przejdziemy przez wszystkie kroki: trzy połączone węzły, między nimi płynie po jednym elemencie danych. Teraz zbudujemy go od zera.

3. Krok 1: nowy workflow i formularz do wgrania faktury

Otwórz n8n i kliknij „+” w prawym górnym rogu, żeby założyć nowy workflow. Na pustym płótnie kliknij duży kafelek „Add first step”, a w panelu wyzwalaczy wybierz „On form submission” (po wysłaniu formularza). Dzięki temu dostaniesz prosty formularz, do którego wrzucisz skan faktury - bez wgrywania czegokolwiek na serwer i bez żadnych adresów URL. Wysłanie tego formularza to Twoje ręczne uruchomienie agenta.

W ustawieniach węzła nadaj formularzowi tytuł (np. „Wgraj fakturę”) i dodaj jedno pole: Element Type = File (plik), etykieta „Faktura (zdjęcie lub skan)”, a w polu Accepted File Types wpisz image/*,.pdf. n8n od razu wygeneruje dwa adresy formularza: Test URL (do prób) i Production URL (docelowy). Otwierasz taki link, przeciągasz zdjęcie i klikasz Wyślij.

Puste płótno nowego workflow w n8n z kafelkiem Add first step na środku
Nowy, pusty workflow w n8n. Budowę zaczynamy od kliknięcia kafelka „Add first step” na środku płótna.
Panel wyboru wyzwalacza w n8n: On form submission, On app event, On a schedule i inne
Wybór wyzwalacza („What triggers this workflow?”). Wybieramy „On form submission” - n8n zbuduje formularz, przez który wgrasz skan faktury.
Konfiguracja węzła On form submission w n8n: tytuł formularza, pole typu File, akceptowane typy plików image i pdf, adresy Test URL i Production URL
Formularz w n8n: jedno pole typu File („Faktura - zdjęcie lub skan”), akceptowane typy image/*,.pdf. U góry gotowe adresy formularza (Test URL / Production URL) - to pod nie wrzucasz skan i klikasz Wyślij.

4. Krok 2: przygotuj fakturę na wejściu

Zanim dodamy „widzący” węzeł, ustalmy, co będzie jego wejściem. Do testu użyjemy przykładowej faktury, którą wgramy przez formularz z poprzedniego kroku. W prawdziwym wdrożeniu to będzie zdjęcie zrobione telefonem albo skan - też wrzucony do tego samego formularza - ważne, żeby dokument był czytelny i obejmował cały kadr.

Przykładowa faktura VAT firmy TechHurt dla Sklepu Technicznego Nowak na kwotę 4305 zł
Przykładowa faktura, którą dostanie agent. Z tego obrazu wyciągniemy sprzedawcę, jego NIP, numer faktury, datę wystawienia i kwotę do zapłaty.

Warto uświadomić sobie, co właściwie zastępujemy. Przepisanie jednej faktury do arkusza to kilka minut i sporo miejsc na pomyłkę - a takich dokumentów są dziesiątki dziennie:

Porównanie: przepisywanie faktur ręcznie (minuty, literówki, nuda, brak skali) kontra agent AI (sekundy, komplet pól, kontrola przy kwotach, setki dokumentów)
Ta sama praca, dwa światy. Ręczne przepisywanie kosztuje czas i uwagę; agent robi to w sekundy i w tej samej formie za każdym razem.

5. Krok 3: dodaj węzeł, który widzi obraz

Najedź kursorem na węzeł formularza („Wgraj fakturę”) i kliknij „+”, który pojawia się przy jego prawej krawędzi - to dodaje kolejny klocek połączony z formularzem. Otworzy się wyszukiwarka węzłów. Wpisz „OpenAI” i wybierz z listy węzeł OpenAI - to on udostępnia operacje rozpoznawania obrazu.

Wyszukiwarka węzłów w n8n z wpisanym OpenAI i listą wyników
Po kliknięciu „+” przy węźle formularza otwiera się wyszukiwarka węzłów („What happens next?”). Wpisujemy „OpenAI” i wybieramy węzeł OpenAI z listy.

Zobaczysz listę akcji, które potrafi ten węzeł. Wybierz Analyze image (analizuj obraz). Ten wybór od razu ustawia węzeł na zasób Image i operację Analyze Image - czyli „obejrzyj zdjęcie i wyciągnij z niego dane”, a nie „odpowiedz zwykłym tekstem”.

Lista akcji węzła OpenAI w n8n: Message a model, Analyze image, Generate an image i inne
Lista akcji węzła OpenAI. Wybieramy „Analyze image” - to jednym kliknięciem ustawia zasób Image i operację Analyze Image.

Dla porządku zmień nazwę węzła na „Analizuj fakturę” (podwójne kliknięcie w nazwę u góry). To tylko etykieta, ale ułatwia orientację, gdy przepływ się rozrośnie.

6. Krok 4: skonfiguruj węzeł - instrukcja i wgrany plik

Teraz najważniejsze: powiemy modelowi, czego dokładnie od niego chcemy. W tym samym węźle uzupełnij kolejne pola:

  • Credential (poświadczenie): wybierz swoje konto dostawcy modelu. Klucz API wklejasz jednorazowo - n8n zapamięta je jako „OpenAI account” i użyje ponownie następnym razem.
  • Model: wybierz z listy model, który radzi sobie z odczytem dokumentów.
  • Text Input (instrukcja): to serce całości - dokładnie opisujemy, jakie pola i w jakiej formie model ma zwrócić. Gotową instrukcję skopiuj z bloku poniżej (przycisk „Kopiuj”) i wklej w to pole.
  • Input Type: ustaw Binary File(s) - agent czyta plik wgrany w formularzu, nie trzeba nigdzie wrzucać obrazu ani podawać żadnego adresu.
  • Input Data Field Name: nazwa właściwości z wgranym plikiem (n8n zwykle podstawia ją sam - to plik wysłany przez formularz).

Instrukcja do wklejenia w pole „Text Input” - kliknij „Kopiuj” i wklej ją do węzła:

Przeanalizuj obraz faktury i zwróć wyłącznie obiekt JSON (bez komentarzy, bez bloku markdown) z polami: sprzedawca, nip_sprzedawcy, numer_faktury, data_wystawienia (format RRRR-MM-DD), kwota_brutto. Jeśli któregoś pola brak, wpisz null.

Prosimy o czysty obiekt danych (JSON) bez komentarzy, żeby kolejny krok mógł go od razu wykorzystać. Cała „inteligencja” jest po stronie modelu - my tylko wypełniamy pola i mówimy mu, czego chcemy. Ani jednej linijki kodu.

Konfiguracja węzła AI w n8n: zasób Image, operacja Analyze Image, model, instrukcja i wejście Binary File (wgrany plik)
Skonfigurowany węzeł „widzący”: zasób Image, operacja Analyze Image, model, instrukcja i wejście Binary File(s) - agent czyta plik wgrany w formularzu. Same pola do wypełnienia, żadnego kodu.

7. Krok 5: uruchom węzeł i sprawdź odczyt

Teraz uruchom przepływ dokładnie tak, jak zrobi to użytkownik: w węźle „Wgraj fakturę” otwórz Test URL, przeciągnij skan faktury i kliknij Wyślij. Po chwili w węźle „Analizuj fakturę”, w panelu „Output”, pojawi się wynik - komplet pól wyciągniętych z obrazu (to właśnie widać na zrzucie otwierającym ten artykuł). Model odczytał wszystkie pięć pól i podał je w gotowej formie:

Panel Output węzła Analizuj fakturę w n8n: odczytany JSON z fakturą - sprzedawca TechHurt, NIP, numer faktury, data i kwota brutto
Panel „Output” po uruchomieniu: zielony znacznik oznacza sukces, a model zwrócił czysty JSON z pięcioma polami odczytanymi wprost ze zdjęcia faktury.
PoleWartość odczytana ze zdjęcia faktury
sprzedawcaTechHurt Sp. z o.o.
nip_sprzedawcy522-34-56-789
numer_fakturyFV/2026/06/0042
data_wystawienia2026-06-28
kwota_brutto4305,00

Zwróć uwagę: to nie jest opis w stylu „to faktura od TechHurt na 4305 zł”, tylko gotowe pola - każde osobno, w tej samej formie, jaką narzuciliśmy w instrukcji. Model odczytał nawet NIP z myślnikami i datę zamienił na format RRRR-MM-DD, o który prosiliśmy.

8. Krok 6: uporządkuj dane do wiersza

Odpowiedź modelu to tekst zawierający dane. Żeby trafiły do osobnych kolumn arkusza, dokładamy mały węzeł porządkujący. Najedź na węzeł „Analizuj fakturę”, kliknij „+” przy jego prawej krawędzi, w wyszukiwarce wpisz „Code” i wybierz Code in JavaScript. W polu edytora wklej poniższy fragment - kilka linijek, które rozkładają odpowiedź na osobne pola:

Wyszukiwarka węzłów w n8n z wpisanym Code
Dodajemy węzeł porządkujący: „+” za węzłem „Analizuj fakturę”, w wyszukiwarce wpisujemy „Code” i wybieramy „Code in JavaScript”.
const c = JSON.parse($input.first().json.content); return [{ json: { sprzedawca: c.sprzedawca, nip_sprzedawcy: c.nip_sprzedawcy, numer_faktury: c.numer_faktury, data_wystawienia: c.data_wystawienia, kwota_brutto: c.kwota_brutto } }];
Węzeł Code in JavaScript w n8n z wklejonym fragmentem rozkładającym odpowiedź na pola
Węzeł „Code in JavaScript” z wklejonym fragmentem - to jedyne miejsce w całym agencie, gdzie pojawia się kod. Kilka linijek zamienia odpowiedź modelu na osobne kolumny.

Po wysłaniu formularza ten węzeł też się wykona i zwróci gotowy wiersz z kolumnami - dokładnie taki, jaki chcemy wpisać do rejestru faktur:

Węzeł porządkujący w n8n pokazuje wyciągnięte dane jako wiersz z kolumnami: sprzedawca, NIP, numer faktury
Po uporządkowaniu dane wyglądają jak wiersz arkusza - kolumny sprzedawca, NIP, numer faktury i kolejne. Stąd już tylko krok do Arkuszy Google, Excela czy bazy danych.

9. Krok 7: zapisz dane do arkusza (Google Sheets)

Najczęściej chcemy, żeby odczytane faktury lądowały w arkuszu - i tu pada słuszne pytanie: gdzie właściwie ten arkusz się znajduje? Odpowiedź: to zwykły Google Sheets w Twoim Dysku Google. Zakładasz go raz, a agent dopisuje do niego kolejne wiersze - jedna faktura to jeden wiersz. Otwierasz sheets.google.com i masz gotowy rejestr. Nic nie ląduje „na serwerze n8n” - dane trafiają wprost do Twojego arkusza.

Najpierw przygotuj arkusz. W Google Sheets stwórz nowy plik (np. „Rejestr faktur 2026”) i w pierwszym wierszu wpisz nagłówki kolumn - dokładnie takie same jak pola z instrukcji: sprzedawca, nip_sprzedawcy, numer_faktury, data_wystawienia, kwota_brutto. Do tych kolumn agent będzie dopisywał dane.

Teraz dodaj węzeł zapisu w n8n. Kliknij „+” za węzłem porządkującym dane (Code), w wyszukiwarce wpisz „Google Sheets” i wybierz akcję „Append row in sheet” (dopisz wiersz).

Wyszukiwarka węzłów w n8n z wpisanym Google Sheets
Dodajemy węzeł zapisu: „+” za węzłem porządkującym, w wyszukiwarce „Google Sheets”.

W konfiguracji węzła uzupełnij po kolei:

  • Credential: kliknij „Set up credential” i połącz swoje konto Google (jednorazowe logowanie i zgoda na dostęp do arkuszy). Od tej pory n8n pamięta to połączenie.
  • Operation: Append Row - dopisanie wiersza na końcu arkusza.
  • Document: z listy Twoich arkuszy wybierz ten przygotowany („Rejestr faktur 2026”).
  • Sheet: wybierz zakładkę (domyślnie „Arkusz1” albo „Sheet1”).
  • Mapowanie kolumn: n8n pokaże kolumny arkusza; do każdej podłącz odpowiednie pole z poprzedniego węzła (kolumna sprzedawca od pola sprzedawca, i tak dalej). Zero kodu - klikasz i łączysz.
Skonfigurowany węzeł Google Sheets Append row w n8n: dokument Rejestr faktur 2026, arkusz Sheet1 i mapowanie pięciu kolumn do pól z poprzedniego węzła
Skonfigurowany zapis: operacja Append Row, dokument „Rejestr faktur 2026”, zakładka „Sheet1” i mapowanie pięciu kolumn (sprzedawca, nip_sprzedawcy, numer_faktury, data_wystawienia, kwota_brutto) do pól z poprzedniego węzła. Zostaje tylko raz kliknąć „Set up credential” i połączyć konto Google.

Gdzie wylądują dane? W dokładnie tym arkuszu Google, który wskazałeś - u Ciebie na Dysku Google. Po każdej wysłanej fakturze pojawia się w nim nowy wiersz z pięcioma kolumnami. Tak wygląda gotowy rejestr:

Arkusz Google Rejestr faktur 2026 z kolumnami sprzedawca, NIP, numer faktury, data i kwota oraz trzema wierszami faktur
Docelowy arkusz Google „Rejestr faktur 2026” na Dysku Google. Każda przetworzona faktura to jeden wiersz - u góry nasza faktura z TechHurt, a pod nią kolejne.

Gotowy agent to teraz cztery połączone klocki:

Kompletny przepływ w n8n: On form submission, Analyze image, Code in JavaScript, Append row in sheet
Kompletny agent: formularz z fakturą, odczyt obrazu, uporządkowanie danych i dopisanie wiersza do arkusza Google.

A jeśli wolisz Excela?

  • Excel w chmurze (Microsoft 365): zamiast Google Sheets użyj węzła „Microsoft Excel 365” - działa tak samo, tyle że plik leży na Twoim OneDrive.
  • Plik .xlsx do pobrania lub mailem: dołóż węzeł „Convert to File” (format XLSX), a za nim węzeł e-mail - dostaniesz gotowy plik Excela w skrzynce po każdej fakturze.
  • Baza danych albo system księgowy: zamiast arkusza wybierz węzeł bazy (np. PostgreSQL) i wskaż tabelę - reszta przepływu bez zmian.

10. Praktyka: jakość zdjęć, paragony i kontrola

  • Jakość obrazu ma znaczenie. Czytelny skan działa najlepiej. Zdjęcie z telefonu też, o ile jest ostre, dobrze oświetlone i obejmuje cały dokument. Mocno pochylone albo ucięte kadry zwiększają ryzyko pomyłki.
  • Nie tylko faktury. Ta sama metoda obsłuży paragony, rachunki, wizytówki czy zamówienia - wystarczy zmienić w instrukcji listę pól do wyciągnięcia.
  • Przy kwotach zostaw sobie kontrolę. Odczyt automatyczny bywa omylny. Dla danych krytycznych dodaj prostą regułę (np. sprawdzenie, czy suma pozycji zgadza się z kwotą brutto) albo krok akceptacji przez człowieka.
  • Koszt jest niski. Płacisz tylko za wywołania modelu - jedno przetworzenie faktury to ułamek grosza do kilku groszy. Samo n8n w wersji do samodzielnego uruchomienia jest darmowe.
Uwaga o danych. Faktury zawierają dane firmowe i osobowe. Jeśli korzystasz z modelu w chmurze, sprawdź jego politykę przetwarzania danych. Gdy wymagana jest pełna prywatność, ten sam schemat zbudujesz na modelu uruchomionym lokalnie - bez wysyłania dokumentów na zewnątrz.

11. Nie tylko faktury: paragony, wizytówki, zamówienia

Największa siła tego agenta to uniwersalność. Cały przepływ zostaje taki sam - zmieniasz jedynie w instrukcji listę pól do wyciągnięcia - a agent przeczyta zupełnie inne dokumenty firmowe:

Infografika: ten sam agent czyta faktury i rachunki, paragony, wizytówki oraz zamówienia i dokumenty WZ
Ten sam schemat, różne dokumenty: faktury, paragony, wizytówki, zamówienia. Podmieniasz listę pól w instrukcji - reszta przepływu bez zmian.

Typowy scenariusz. Biuro rachunkowe dostaje od klientów faktury w formie zdjęć z telefonu - kilkaset miesięcznie, w różnym stanie. Zamiast przepisywać je ręcznie, wpuszcza je przez taki przepływ: agent odczytuje pola, prosta reguła sprawdza, czy kwota brutto ma sens, a poprawne wiersze lądują w arkuszu do zaksięgowania. Wątpliwe przypadki (nieczytelne zdjęcia) trafiają do osobnej listy „do ręcznego sprawdzenia”. Człowiek zagląda tylko tam, gdzie naprawdę trzeba - reszta dzieje się sama.

12. Podsumowanie

Zbudowaliśmy agenta, który czyta zdjęcia faktur i zamienia je w uporządkowane dane - bez ani jednej linijki kodu pisanej od zera. Trzy klocki w n8n: wejście, węzeł rozpoznający obraz i porządkowanie danych. Kluczowe kroki:

Twój agent w skrócie

  • Wejście - formularz, mail lub folder ze zdjęciami faktur.
  • Węzeł AI - operacja „rozpoznaj obraz” plus instrukcja, jakie pola wyciągnąć.
  • Porządkowanie - zamiana odpowiedzi na czysty wiersz z kolumnami.
  • Zapis - jeden węzeł do Arkuszy, Excela lub bazy danych.

To prototyp, który łatwo rozbudować: o pętlę po wielu plikach naraz, o powiadomienie, gdy kwota przekroczy próg, albo o krok akceptacji przed zapisaniem. Od tego momentu przepisywanie danych z dokumentów przestaje być Twoim zadaniem.

Chcesz samodzielnie budować takich agentów i automatyzacje?

Ten agent łączy dwie umiejętności: budowę agentów AI oraz automatyzację w n8n. Obie pokazujemy na naszych szkoleniach - krok po kroku, z naciskiem na praktykę i realne wdrożenia.

Szkolenie Tworzenie agentów AI - JSystems
Tworzenie agentów AI -->

Szkolenie n8n + AI: automatyzacja firmy - JSystems
n8n + AI: automatyzacja firmy -->

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...