ChatGPT odczytał bez błędu wszystkie 120 ocenianych pól z dziesięciu syntetycznych polskich faktur. Gemini 3.6 Flash w tej samej, jednokrotnej próbie nie pozostawił kompletnego JSON-u: końcowo wyświetlił tylko komunikat odmowy. Potem nastąpiły dwa przebiegi uzupełniające. Wybrany 3.1 Pro został przez usługę zastąpiony innym modelem i ponownie odmówił. Dopiero 3.6 Flash z Myśleniem rozszerzonym, po dodatkowym ręcznym poleceniu o użyciu dostępnych narzędzi, zwrócił 120/120 pól. Test wykonaliśmy 23 września 2026 r. na małej próbce dokumentów przygotowanych specjalnie do tego celu.
- 10 jednoplanowych PDF-ów w trzech układach: klasycznym, panelowym i kompaktowym.
- 12 pól na dokument, czyli 120 ocenianych wartości.
- Identyczny prompt i dokładnie jedno podejście w podstawowym porównaniu.
- ChatGPT web: 120/120 pól, poprawny JSON, bez pominięć.
- Gemini web w trybie 3.6 Flash: brak końcowego JSON-u, więc 0/120 według przyjętego protokołu.
- Dodatkowa próba: wybrano 3.1 Pro, ale dostawca jawnie obsłużył żądanie innym modelem i nie zwrócił danych.
- Ręczny przebieg ratunkowy: 3.6 Flash z Myśleniem rozszerzonym i dodatkową instrukcją osiągnął 120/120, ale pozostaje poza podstawowym porównaniem.
Co dokładnie sprawdzaliśmy?
Nie używaliśmy prawdziwych faktur klientów. Wygenerowaliśmy dziesięć fikcyjnych dokumentów z polskimi znakami, różnymi zapisami numerów faktur i trzema układami informacji. Każdy PDF miał jedną stronę i zawierał wyraźne oznaczenie, że jest materiałem syntetycznym. Nazwy podmiotów, NIP-y, pozycje i kwoty również były fikcyjne.
Przed uruchomieniem modeli zamroziliśmy plan testu, klucz odpowiedzi i prompt. Dla każdego dokumentu ocenialiśmy: numer faktury, datę wystawienia, datę sprzedaży, termin płatności, nazwę i NIP sprzedawcy, nazwę i NIP nabywcy, kwotę netto, VAT, brutto oraz walutę.
NIP porównywaliśmy po usunięciu spacji i łączników, kwoty jako liczby dziesiętne, a nazwy bez rozróżniania wielkości liter i nadmiarowych odstępów. Każda odpowiedź miała być tablicą dziesięciu obiektów JSON w kolejności plików. Nie poprawialiśmy promptu po zobaczeniu wyniku i nie prosiliśmy modeli o drugą próbę.
Warunki próby: konkretne konta i widoczne ustawienia
W ChatGPT użyliśmy internetowego trybu Chat na koncie Pro z widocznym ustawieniem rozumowania „Średni”. Interfejs nie pokazywał dokładnej nazwy wariantu modelu, dlatego jej nie zgadujemy.
Jeśli chcesz uporządkować różnice między trybami pracy w tym modelu, opisaliśmy osobno tryby Chat, Work i Codex w ChatGPT.
W Gemini test podstawowy odbył się na koncie bezpłatnym, w aplikacji internetowej, z wybranym trybem 3.6 Flash. Interfejs proponował przejście na większy pakiet. Ten szczegół ma znaczenie: wynik odnosi się do dokładnie takiej konfiguracji, a nie do wszystkich wariantów i planów Gemini.
Nie jest to porównanie dwóch równoważnych abonamentów. ChatGPT działał na płatnym Pro, a Gemini na planie bezpłatnym. Różnica planów mogła wpływać na limity, priorytet i dostępność 3.1 Pro.
Oba narzędzia przyjęły komplet dziesięciu PDF-ów. Oficjalna dokumentacja OpenAI wymienia ekstrakcję informacji z PDF jako jedno z zastosowań przesyłania plików. Pomoc Gemini podaje limit do dziesięciu plików w jednym prompcie. Nasza próbka celowo wykorzystała więc całą deklarowaną granicę Gemini, choć same pliki były małe.
Wynik: 120 poprawnych pól kontra brak ocenialnej odpowiedzi
| Narzędzie | Pola poprawne | Daty | Kwoty | NIP-y | Końcowy format |
|---|---|---|---|---|---|
| ChatGPT web, Pro, „Średni” | 120/120 (100%) | 30/30 | 30/30 | 20/20 | Poprawny JSON, 10 rekordów |
| Gemini web, bezpłatny, 3.6 Flash | 0/120 | 0/30 | 0/30 | 0/20 | Brak końcowego JSON-u |
| Gemini web, bezpłatny, wybrane 3.1 Pro | Poza punktacją | Dostawca użył innego modelu; brak JSON-u | |||
| Gemini bezpłatny, 3.6 Flash + Myślenie rozszerzone, druga instrukcja | 120/120 (100%) | 30/30 | 30/30 | 20/20 | Poprawny JSON; przebieg uzupełniający |
ChatGPT zachował nazwy plików, polskie znaki, zera wiodące w NIP-ach oraz wartości wszystkich sum. Dziesięć rekordów dało się bez dodatkowej obróbki sparsować jako JSON. Sprawdzenie kwot netto, VAT i brutto także przeszło dla wszystkich dokumentów.
Co było rzeczywiście oceniane?
Nie przyznawaliśmy punktów za odpowiedź „podobną” do dokumentu. Zera wiodące w NIP-ach musiały zostać zachowane po normalizacji separatorów, data musiała pozostać jednoznaczna, a kwota liczbowa nie mogła zmienić wartości przez pomylenie przecinka, kropki lub kolumny. Nazwy firm mogły różnić się wielkością liter i nadmiarowymi odstępami, ale nie treścią.
Osobno sprawdziliśmy też prostą zgodność arytmetyczną: czy odczytane brutto odpowiada sumie netto i VAT. W ChatGPT zgadzało się to dla wszystkich dziesięciu faktur. Taki test nie potwierdza poprawności podatkowej dokumentu, ale szybko wykrywa część pomyłek OCR, na przykład przestawioną cyfrę lub sumę pobraną z niewłaściwego wiersza.

Przypadek Gemini 3.6 Flash był mniej oczywisty niż zwykłe „nic nie odczytał”. Interfejs zaczął wyświetlać fragmenty danych, ale po zakończeniu nie pozostawił ich jako odpowiedzi. Utrwalonym rezultatem był komunikat: „Twoja prośba wykracza poza moje możliwości. Generuję tylko tekst”. W protokole oceniamy rezultat końcowy, a nie przejściowy tekst widoczny podczas generowania. Bez kompletnego JSON-u nie było pól, które można było bezpiecznie przypisać do dokumentów, dlatego wynik to 0/120, a wszystkie wartości liczymy jako pominięte.

Co stało się po przełączeniu na 3.1 Pro
Google w swojej dokumentacji radzi ponownie przesłać plik, jeśli analiza się nie powiedzie. Podstawowy protokół zakładał jedno podejście na narzędzie, więc wynik 3.6 Flash pozostał bez zmian. Na wyraźne polecenie użytkownika wykonaliśmy jednak osobny przebieg ratunkowy: nowy czat, ponownie te same dziesięć plików, identyczny prompt i wybrany wariant 3.1 Pro.
Nie udało się uzyskać wiarygodnego wyniku 3.1 Pro. Gemini wyświetlił informację, że wersja Pro cieszy się dużym zainteresowaniem i do odpowiedzi użyto innego modelu. Po zakończeniu selektor wskazywał „Flash Rozszerzony”, a odpowiedź brzmiała: „Jako model językowy nie jestem do tego przeznaczony”. Tego przebiegu nie punktujemy jako 3.1 Pro, bo dostawca wprost potwierdził automatyczny fallback. Bezpłatny plan mógł mieć znaczenie dla priorytetu dostępu, ale sam komunikat wskazywał obciążenie usługi, więc nie przedstawiamy tej hipotezy jako faktu.
Ręczna druga instrukcja odblokowała wynik
Użytkownik kontynuował tę rozmowę poleceniem: „podejmij próbę jeszcze raz używając narzędzi do których masz dostęp”. Interfejs pokazywał 3.6 Flash oraz włączone Myślenie rozszerzone. Tym razem Gemini zwrócił kompletną tablicę dziesięciu obiektów. JSON przeszedł parser, a po porównaniu z zamrożonym kluczem wszystkie 120 pól okazało się poprawne.
To ważny rezultat praktyczny, ale metodologicznie nie zastępuje pierwszej próby. Zmieniły się dwa elementy: doszła druga instrukcja i tryb Myślenia rozszerzonego. Możemy więc powiedzieć, że konfigurację dało się doprowadzić do poprawnego wyniku, ale nie że podstawowy 3.6 Flash odpowiedział równie dobrze na identyczny pojedynczy prompt.

W pracy produkcyjnej postąpilibyśmy inaczej: zapisali błąd, ponowili zadanie zgodnie z ustaloną polityką i — jeśli problem wraca — skierowali dokument do innego mechanizmu. Szczególnie w księgowości nie należy utożsamiać wygenerowanego JSON-u z zatwierdzonym zapisem. Więcej o całym procesie opisuje tekst o OCR faktur i rekonsyliacji.
Co ten test mówi (i czego nie mówi)?
Wynik pokazuje, że w naszej konkretnej konfiguracji ogólny asystent ChatGPT potrafił bezbłędnie przepisać ustrukturyzowany tekst z prostych, cyfrowych PDF-ów. Nie dowodzi, że będzie równie skuteczny na zdjęciach z telefonu, skanach z pieczątkami, fakturach wielostronicowych czy dokumentach z błędnym kodowaniem. OpenAI zaznacza też, że poza wybranymi planami analiza dokumentów opiera się przede wszystkim na tekście, a nie na pełnym wizualnym rozumieniu osadzonych obrazów.
Nie jest to również dowód, że Gemini zawsze przegrywa w OCR. To zapis realnej awarii pierwszego wyniku w 3.6 Flash, nieudanej próby dotarcia do 3.1 Pro oraz udanego przebiegu 3.6 Flash z Myśleniem rozszerzonym po drugiej instrukcji. Właśnie dlatego publikujemy metodę, surowe wejścia, odpowiedzi i zrzuty, zamiast zamieniać jeden eksperyment w ranking.
Dla systemów wyspecjalizowanych liczy się nie tylko tekst, lecz także pozycja informacji, pewność odczytu i możliwość audytu. Przykładem innego podejścia jest Mistral OCR 4 z lokalizacją informacji w dokumencie. Ogólny chatbot może być świetnym narzędziem do demonstracji lub zadania ad hoc, ale nie zastępuje automatycznie kontrolowanej ścieżki dokumentowej.
Jak bezpiecznie powtórzyć podobną próbę
- Usuń dane prawdziwych klientów albo zbuduj dokumenty syntetyczne.
- Przed testem zapisz klucz odpowiedzi i dokładny schemat pól.
- Użyj identycznego promptu oraz tej samej liczby plików w obu narzędziach.
- Zapisz plan konta, widoczny wariant modelu, ustawienia i czas próby.
- Waliduj JSON programowo; nie oceniaj tylko „na oko”.
- Oddziel odczyt danych od decyzji księgowej i obowiązkowo kontroluj wartości przed importem.
Przy pracy na dokumentach warto też jawnie wymusić zakres źródeł i format odpowiedzi. Pokazujemy to szerzej w poradniku „Pracuj na moich plikach”.
Wniosek
W tej demonstracji ChatGPT dostarczył wynik gotowy do automatycznej walidacji za pierwszym razem. Gemini 3.6 Flash najpierw odmówił, a dopiero Myślenie rozszerzone i druga instrukcja doprowadziły do 120/120. Próba 3.1 Pro pokazała dodatkowo, że nazwa wybrana w selektorze nie gwarantuje użycia tego wariantu przy przeciążeniu usługi. Najważniejsza lekcja nie brzmi więc „jeden model zawsze jest lepszy”. Brzmi: testuj dokładnie konfigurację i procedurę, której użyjesz, zapisuj rezultaty.
Częste pytania
Jak ChatGPT poradził sobie z odczytem danych z faktur?
ChatGPT odczytał bezbłędnie wszystkie 120 ocenianych pól z dziesięciu syntetycznych polskich faktur, zwracając poprawny JSON bez pominięć.
Dlaczego Gemini 3.6 Flash nie zwrócił kompletnego JSON-u?
Gemini 3.6 Flash w podstawowym teście nie pozostawił końcowego JSON-u, wyświetlając jedynie komunikat odmowy, co skutkowało wynikiem 0/120.
Co się stało po przełączeniu na model 3.1 Pro w Gemini?
Po przełączeniu na 3.1 Pro, Gemini nie zwrócił wiarygodnego wyniku, ponieważ dostawca użył innego modelu, co zostało potwierdzone komunikatem o obciążeniu usługi.
Jakie były warunki testu dla ChatGPT i Gemini?
Test dla ChatGPT przeprowadzono na koncie Pro z widocznym ustawieniem rozumowania, podczas gdy Gemini testowano na koncie bezpłatnym w trybie 3.6 Flash.
Co oznacza wynik 120/120 dla ChatGPT?
Wynik 120/120 dla ChatGPT oznacza, że wszystkie pola zostały poprawnie odczytane i zwrócone w formacie JSON, co potwierdza skuteczność narzędzia w analizie syntetycznych faktur.







