Parsowanie CV — jak system czyta Twój dokument
Ten tekst jest częścią przewodnika Czym jest system ATS i jak napisać CV, które przez niego przejdzie.
Parsowanie CV to moment, w którym Twój plik przestaje być dokumentem i staje się rekordem w bazie danych pracodawcy. System nie czyta CV tak jak człowiek: najpierw wyciąga z pliku surowy ciąg znaków, potem próbuje odtworzyć kolejność, w jakiej te znaki mają iść, a dopiero na końcu przypisuje fragmenty do pól — imię, nazwisko, e-mail, telefon, stanowisko, firma, daty od-do. Poniżej masz ten mechanizm rozłożony na części i powód, dla którego dokument bez zarzutu na ekranie potrafi rozsypać się po drodze.
Co to jest parsowanie CV i czym różni się od „skanowania CV” przez ATS
Parsowanie CV to automatyczna konwersja nieustrukturyzowanego pliku na ustrukturyzowany rekord z nazwanymi polami, a „skanowanie CV” to potoczna nazwa całego zestawu operacji, które system wykonuje na aplikacji, łącznie z filtrowaniem i punktowaniem. Różnica jest zasadnicza: parser niczego nie ocenia i nikogo nie odrzuca — on wypełnia formularz.
Technicznie proces ma trzy warstwy, które trzeba rozdzielić, żeby zrozumieć, gdzie coś idzie nie tak:
- ekstrakcja — wyciągnięcie z pliku warstwy tekstowej, czyli samych znaków,
- rekonstrukcja kolejności czytania — ustalenie, w jakim porządku te znaki tworzą zdania,
- rozpoznawanie encji nazwanych (NER) — wskazanie, który fragment jest nazwiskiem, który stanowiskiem, a który datą, i wpisanie go do właściwego pola.
Dopiero nad gotowym rekordem nadbudowana jest warstwa selekcji: wyszukiwanie po polach, filtry i scoring. Za odsiew odpowiadają kryteria ustawione tam przez rekrutera, a nie sam odczyt pliku — ale jeśli parser wpisze stanowisko w niewłaściwe pole, wypadasz z wyników wyszukiwania, zanim ktokolwiek oceni Twoje kompetencje. Rolę całego oprogramowania rekrutacyjnego rozkłada na czynniki poradnik o tym, czym jest system ATS.
Ten sam podział przebiega w przepisach. Unijny AI Act (rozporządzenie 2024/1689) zalicza w załączniku III do systemów wysokiego ryzyka narzędzia przeznaczone do analizowania i filtrowania podań o pracę oraz oceny kandydatów, a sama ekstrakcja danych z pliku nie jest decyzją — pod ten reżim wchodzi dopiero warstwa oceny zbudowana nad parserem.
W jakiej kolejności system czyta Twoje CV — od góry do dołu czy kolumnami
Plik PDF w ogóle nie przechowuje kolejności czytania, więc parser musi ją odgadnąć. Specyfikacja ISO 32000-1 (PDF 1.7) opisuje, w którym miejscu strony postawić każdy glif, a nie w jakiej kolejności te glify tworzą tekst. Logiczny porządek definiuje dopiero Tagged PDF i standard dostępności PDF/UA (ISO 14289-1), który wymaga otagowania treści w kolejności czytania — a większość CV eksportowanych z edytorów graficznych takich tagów nie ma.
Bez tagów parser odtwarza kolejność heurystycznie, ze współrzędnych znaków na stronie. Najprostsze podejście czyta stronę wierszami przez całą szerokość i właśnie dlatego układ dwukolumnowy potrafi przepleść nazwę stanowiska z lewej kolumny z umiejętnością z prawej. Właśnie dlatego decyzja o tym, czy wybrać CV dwukolumnowe czy jednokolumnowe, ma konsekwencje techniczne, a nie tylko estetyczne.
Czy parser poprawnie odczyta polskie znaki ą, ę, ł, ż, ś
Polskie znaki wychodzą z pliku PDF przez mapę /ToUnicode osadzoną w foncie i to od niej zależy, czy zamiast „Wiśniewski” w bazie wyląduje ciąg krzaków. Mapa mówi programowi czytającemu, jakiemu punktowi Unicode odpowiada dany kod glifu w danym kroju.
Gdy mapy brakuje — bo krój został osadzony niekompletnie albo pochodzi z egzotycznego źródła — ekstraktor cofa się do słownika /Encoding i tablicy /Differences, potem do listy Adobe Glyph List, a w ostateczności traktuje surowy kod znaku jako punkt Unicode. Wtedy plik na ekranie wygląda poprawnie, bo rysowany jest kształt litery, ale parser czyta coś zupełnie innego. Efektem bywa nazwisko z rozsypanymi ogonkami i adres e-mail z podmienionym znakiem, którego rekruter nie odgadnie.
Co parser widzi w pliku PDF, a co w DOCX
DOCX jest dla parsera przewidywalniejszy, bo w formacie Office Open XML (ECMA-376, ISO/IEC 29500) akapity mają jawną kolejność w strukturze dokumentu — to plik XML w kontenerze ZIP, w którym nie trzeba niczego wnioskować z geometrii strony. PDF z poprawną warstwą tekstową współczesne systemy czytają jednak bez problemu i formalnie go obsługują: Greenhouse przyjmuje do parsowania rozszerzenia .doc, .docx, .pdf, .rtf i .txt. Który z tych formatów wysłać rekruterowi, rozstrzyga porównanie CV w PDF czy Word.
Prawdziwy próg to rozmiar pliku. Greenhouse nie parsuje CV większych niż 2,5 MB, choć sam upload dopuszcza pliki do 100 MB — dokument trafia do systemu, ale rekord kandydata zostaje pusty. Drugi próg to skan: zdjęcie CV albo PDF bez warstwy tekstowej nie zawiera żadnych znaków, tylko piksele. Bez OCR (Tesseract, ABBYY FineReader) parser wyciąga z takiego pliku pusty ciąg, a OCR nie jest standardowym elementem toru parsowania w każdym systemie rekrutacyjnym.
Co dzieje się z tabelą, stopką i polem tekstowym w trakcie parsowania
Tabela, nagłówek, stopka i pole tekstowe trafiają do parsera jako osobne kawałki treści, oderwane od głównego strumienia tekstu, i dlatego to one najczęściej gubią dane. Oficjalna dokumentacja Greenhouse wymienia wprost przyczyny nieudanego parsowania: plik wgrany jako obraz, grafiki, zdjęcia i WordArt, tabele, nagłówki i stopki dokumentu, pola tekstowe, układy kolumnowe, brak wyraźnych sekcji, spacje wstawione między pojedyncze litery, skrócone stanowiska w rodzaju „Sr. Account Exec” oraz nazwy firm pozbawione formy prawnej — w polskim CV odpowiada temu urwane Sp. z o.o. albo S.A.
Tabela rozbija ciągłe zdanie na osobne komórki, więc data zatrudnienia przestaje sąsiadować z nazwą firmy. Nagłówek i stopka to w strukturze pliku osobne strumienie, czytane poza kolejnością albo powtarzane na każdej stronie, a pole tekstowe jest ramką pływającą nad treścią, którą parser potrafi dokleić na samym końcu — numer telefonu ze stopki nie trafia więc do pola telefonu, mimo że widać go na wydruku. Które z tych elementów system pomija w całości, a które tylko przestawia, rozkłada na części tekst o tym, czy system rekrutacyjny czyta tabele, ramki i pola tekstowe, a gotowe układy bez tych pułapek opisuje poradnik o tym, po czym poznać szablon CV przyjazny ATS.
Co parser robi z nazwą stanowiska i listą umiejętności
Odczytane stanowiska i umiejętności są normalizowane do taksonomii, czyli sprowadzane do wspólnego słownika, zamiast być zapamiętywane jako surowe słowa kluczowe. Europejska klasyfikacja ESCO w wersji 1.2 opisuje 3 039 zawodów i 13 939 umiejętności powiązanych z tymi zawodami, w 28 językach, z mapowaniem zawodów na międzynarodową klasyfikację ISCO. Dostawcy parserów budują na tym własne słowniki — Textkernel, który w 2021 roku przejął amerykańskiego Sovrena, deklaruje normalizację nazw stanowisk z mapowaniem na O*NET i ISCO.
Parser nie „szuka słów kluczowych” w naiwnym sensie — próbuje przypisać Twoje zapisy do pozycji w słowniku. Standardowa, pełna nazwa stanowiska ma większą szansę trafić w konkretny wpis taksonomii niż wewnętrzny tytuł z poprzedniej firmy albo skrót. Normalizacja kończy się jednak na rekordzie: czy ktoś ocenia jego treść i czym to robi, to osobna warstwa procesu, opisana w tekście o tym, czy rekruterzy używają ChatGPT do oceny CV.
Które pola parser wypełnia i kto o tym decyduje
Zestaw pól ustawia pracodawca w konfiguracji swojego systemu, a wynik parsowania jest tylko podpowiedzią do formularza, którą można nadpisać ręcznie. Dokumentacja tomHRM wprost zaznacza, że stopień uzupełnienia formularza zależy od tego, jak kandydat przygotował CV, a rozpoznawanie pól opiera się tam na słowach kluczowych konfigurowanych po stronie pracodawcy w ustawieniach odczytu CV. eRecruiter przy masowym wgrywaniu dokumentów dopasowuje automatycznie tylko dane podstawowe: imię, nazwisko i adres e-mail, a rekruter weryfikuje odczyt na podglądzie dokumentu i ręcznie dopisuje brakujące pola, na przykład telefon. Rozjazd między rekordem a treścią pliku widzi więc człowiek, dlatego liczy się spójność formularza aplikacyjnego z CV.
Zakres pól ma też granicę prawną. Art. 22(1) § 1 Kodeksu pracy wyznacza katalog danych, których pracodawca może żądać od kandydata: imię (imiona) i nazwisko, datę urodzenia, dane kontaktowe wskazane przez kandydata oraz — gdy jest to niezbędne do wykonywania pracy określonego rodzaju — wykształcenie, kwalifikacje zawodowe i przebieg dotychczasowego zatrudnienia. Nowelizacją obowiązującą od 4 maja 2019 roku usunięto z tego katalogu imiona rodziców i adres zamieszkania, więc pola na te dane nie mają dziś podstawy w przepisie. To nie jest porada prawna — w razie wątpliwości sprawdź aktualne brzmienie przepisu w Dzienniku Ustaw.
„imię: Anna | nazwisko: Kowalska | e-mail: anna.kowalska@example.com | telefon: +48 600 000 000 | miasto: Wrocław | stanowisko: Specjalistka ds. kadr i płac | firma: Acme Sp. z o.o. | od: 2021-03 | do: (puste, zatrudnienie trwa) | umiejętności: Płatnik, Symfonia Kadry i Płace, Excel”
Jak zobaczyć ten sam tekst, który dostaje parser
Najszybszy sprawdzian to skopiowanie całej treści pliku i wklejenie jej do zwykłego notatnika — zobaczysz wtedy dokładnie ten ciąg znaków, który dostaje parser, razem z jego kolejnością. Jeśli tekst się nie zaznacza, masz obraz bez warstwy tekstowej. Jeśli zaznacza się, ale daty odkleiły się od firm, a umiejętności wpadły w środek obowiązków, kolejność czytania została odtworzona źle.
Drugie źródło to sam formularz aplikacyjny: po wgraniu pliku część systemów pokazuje uzupełnione pola profilu, zanim wyślesz zgłoszenie, a to już podgląd rekordu, który zobaczy rekruter. Pełną procedurę testu, krok po kroku, znajdziesz w tekście o tym, jak sprawdzić CV pod ATS, a jeśli wolisz zacząć od pliku, który takiego testu nie potrzebuje, kreator ŁatweCV generuje PDF z warstwą tekstową i jednym strumieniem treści.
Checklista
Częste pytania
Czy nazwa pliku CV ma znaczenie dla systemu rekrutacyjnego?
Dla samego parsowania nie ma znaczenia — parser czyta treść z wnętrza pliku, a nazwa nie jest źródłem danych do żadnego pola profilu. Znaczenie ma dopiero po stronie człowieka: rekruter widzi w systemie listę załączników i po nazwie odróżnia Twój dokument od kilkudziesięciu innych. Jeśli plik w ogóle nie chce się wgrać przez znaki specjalne w nazwie, to problem uploadu, a nie odczytu treści.
Jaki format dat rozpoznaje parser i czy „obecnie” zamiast daty końcowej to problem?
Parsery rozpoznają najczęściej zapisy miesiąc-rok w formie 03.2021, 03/2021, marzec 2021 oraz same lata, a otwarty koniec zatrudnienia obsługują jako pustą datę końcową. Słowa „obecnie”, „nadal” czy „present” są typowym elementem CV i zwykle mapują się na flagę bieżącego stanowiska. Ryzyko rośnie, gdy data stoi w innej komórce tabeli albo w innej kolumnie niż nazwa firmy — wtedy może zostać przypisana do złego wpisu.
Czy parsowanie CV oznacza, że mój dokument ocenia sztuczna inteligencja?
Nie. Parsowanie to ekstrakcja danych i przepisanie ich do pól bazy — nie zawiera oceny, punktacji ani decyzji o odrzuceniu. Ocena, dopasowanie do oferty i scoring to osobna warstwa oprogramowania, często w ogóle nieuruchamiana w mniejszych rekrutacjach. Unijny AI Act traktuje jako systemy wysokiego ryzyka dopiero narzędzia analizujące i filtrujące podania oraz oceniające kandydatów, a nie sam odczyt pliku.
Czy zdjęcie w CV psuje parsowanie?
Samo zdjęcie osadzone w dokumencie tekstowym nie kasuje odczytu reszty treści — parser po prostu je pomija, bo nie zawiera znaków. Problem zaczyna się, gdy grafiką jest treść: dane kontaktowe wpisane w obrazek, ikony zamiast etykiet albo całe CV zapisane jako zdjęcie strony. Dokumentacja Greenhouse wymienia grafiki, zdjęcia i WordArt wśród przyczyn nieudanego parsowania, więc bezpieczniej trzymać informacje w tekście.
Jakie dane parser wyciąga z CV do profilu kandydata?
Standardowy zestaw to imię i nazwisko, adres e-mail, numer telefonu, miasto, nazwy stanowisk, nazwy firm, daty zatrudnienia, wykształcenie i umiejętności. Polski system tomHRM odczytuje imię i nazwisko, adres, miasto, e-mail, telefon oraz adresy profili LinkedIn i Facebook. eRecruiter przy masowym wgrywaniu dokumentów dopasowuje automatycznie dane podstawowe — imię, nazwisko i e-mail — a resztę pól rekruter uzupełnia ręcznie z podglądu dokumentu.