Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
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.
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.
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:
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.
image/*,.pdf. U góry gotowe adresy formularza (Test URL / Production URL) - to pod nie wrzucasz skan i klikasz Wyślij.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.
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:
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.
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”.
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.
Teraz najważniejsze: powiemy modelowi, czego dokładnie od niego chcemy. W tym samym węźle uzupełnij kolejne pola:
Instrukcja do wklejenia w pole „Text Input” - kliknij „Kopiuj” i wklej ją do węzła:
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.
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:
| Pole | Wartość odczytana ze zdjęcia faktury |
|---|---|
| sprzedawca | TechHurt Sp. z o.o. |
| nip_sprzedawcy | 522-34-56-789 |
| numer_faktury | FV/2026/06/0042 |
| data_wystawienia | 2026-06-28 |
| kwota_brutto | 4305,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.
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:
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:
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).
W konfiguracji węzła uzupełnij po kolei:
sprzedawca od pola sprzedawca, i tak dalej). Zero kodu - klikasz i łączysz.
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:
Gotowy agent to teraz cztery połączone klocki:
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:
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.
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:
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.
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.
Komentarze (0)
Brak komentarzy...