- Rodzaje błędów
- Dlaczego jakość zależy od klasyfikacji
- Jak jakość zależy od typu danych
- Wyniki w skrócie
- Pozostałe przekroje
- Pułapki, z którymi API sobie poradziło
- Co z tego wynika
- Zestaw testowy
- Idealna odpowiedź (wzorzec)
- Ograniczenia testu
- Pliki do pobrania
- Dlaczego taki pomiar jest trudny
- Co sprawdzaliśmy
- Jak liczymy wynik: przykład czajnika
Klienci prawie zawsze pytają nas o to samo: jaka jest skuteczność getName.ai i jakiej jakości wartości atrybutów zwraca. Uczciwa odpowiedź nie jest prosta i, jak zwykle w takich sytuacjach, zaczyna się od „to zależy”. Od tego, co jest w opisie produktu, od klasyfikacji, od rodzaju atrybutu.
Postanowiliśmy się z tym pytaniem zmierzyć. Przygotowaliśmy test, który sprawdza jakość tak obiektywnie, jak tylko potrafiliśmy, i poddajemy go ocenie każdego, kto zechce. Opisy, idealną odpowiedź, każdą ocenioną wartość i pełne statystyki udostępniamy do pobrania na końcu artykułu, więc każdy może sprawdzić wynik albo powtórzyć test. To pierwsze wydanie getName.ai Quality Benchmark. Będziemy go powtarzać, a kolejne wydania porównamy z tym.
W klasyfikacji ETIM getName.ai uzupełnia atrybuty na podstawie opisu produktu z jakością 93,8%. W Amazonie jakość wyniosła 93,1%, a w Kauflandzie 91,7%. Tyle wyszło w teście na 100 produktach z 17 kategorii, z opisami po polsku, niemiecku i angielsku.
Jakość liczymy miarą F1, standardową w ocenie wydobywania informacji z tekstu. Łączy ona precyzję, czyli to, ile z wpisanych wartości jest prawdą, z pokryciem, czyli tym, ile wartości wynikających z opisu API wpisało. Pusta odpowiedź ma jakość 0%, a idealna 100%.
Jakość 93,8% nie znaczy, że 93,8% kart produktów jest gotowych bez poprawek. Znaczy, że odpowiedzi API zgadzają się z idealną odpowiedzią w takim stopniu, licząc razem wartości pominięte i wpisane błędnie. Test nie mierzy czasu ani kosztu pracy i nie porównuje API z człowiekiem.
Poniżej opisujemy, dlaczego taki pomiar jest trudny, jak liczyliśmy wynik, gdzie API się myli i od czego zależy jakość.
Wyniki w skrócie
- Jakość według klasyfikacji: ETIM 93,8%, Amazon 93,1%, Kaufland 91,7%.
- Precyzja i pokrycie są blisko siebie: w ETIM 93,9% i 93,7%, w Amazonie 92,6% i 93,7%, w Kauflandzie 92,0% i 91,3%. W ETIM i Kauflandzie API częściej pomija wartość, niż wpisuje złą, a w Amazonie odwrotnie.
- Wartości podane w opisie wprost API wpisuje z pokryciem od 96,0% w Kauflandzie do 98,0% w ETIM. Wartości, które trzeba z opisu wywnioskować, wpisuje rzadziej (79,7%). Najczęściej pomija wywnioskowane cechy tak/nie, np. to, że czajnik jest bezprzewodowy.
- Język opisu ma małe znaczenie: od 92,6% dla polskiego do 93,8% dla angielskiego.
- Mediana jakości pojedynczej odpowiedzi: ETIM 95,2%, Amazon 94,0%, Kaufland 92,3%.
Dlaczego taki pomiar jest trudny
Wynik zależy od opisu, a nie tylko od API. API może wpisać tylko to, co jest w opisie. Krótka oferta w trzech zdaniach podaje mniej cech niż karta techniczna, więc i API może z niej wpisać mniej. Gdyby test liczył, ile atrybutów klasy zostało wypełnionych, mierzyłby opis, a nie API. Dlatego dla każdego opisu przygotowaliśmy osobno idealną odpowiedź, czyli wzorzec: komplet wartości atrybutów, które wynikają z tego opisu. We wszystkich opisach było ich 7994 i z nimi porównaliśmy odpowiedzi API. Nazywamy je wartościami wymaganymi: skoro opis je daje, API powinno je wpisać. „Wymagana” nie znaczy tu obowiązkowa w klasyfikacji ani w marketplace.
Nie wszystko jest zapisane wprost. Czajnik, który „wyłącza się po zdjęciu z podstawy”, jest bezprzewodowy, choć to słowo w opisie nie pada. Produkt sprzedawany pojedynczo ma liczbę sztuk 1. Ale wymiary „410 × 230 × 195 mm” bez oznaczenia osi nie mówią, który z nich jest szerokością. Granicę między pewnym wnioskiem a przypuszczeniem wyznaczaliśmy dla każdej takiej wartości osobno.
To samo pole znaczy co innego w różnych klasyfikacjach. „Powierzchnia użytkowa” na polskim i niemieckim Amazonie to powierzchnia zajmowana przez produkt, a na brytyjskim powierzchnia pomieszczenia, którą obsługuje oczyszczacz powietrza. Ocena musi znać znaczenie pola, a nie tylko jego nazwę.
Wzorzec to ideał, a nie człowiek. Idealną odpowiedź przygotowaliśmy bez pośpiechu i sprawdzaliśmy ją wiele razy. Nikt nie uzupełnia tak kart produktów na co dzień. Właściwym punktem odniesienia byłby człowiek, który robi tę samą pracę w realnych warunkach: po kilku godzinach powtarzalnej pracy, ze zmęczeniem i znużeniem, które wtedy przychodzą, i często bez głębokiej wiedzy o branży, z której pochodzi produkt. Nikt nie powiedział, że uzupełniłby atrybuty z jakością 100%. Takiego pomiaru jeszcze nie mamy, więc wynik w tym artykule mówi, ile API brakuje do ideału, a nie do człowieka.
Co sprawdzaliśmy
getName.ai dostaje opis produktu i klasę w wybranej klasyfikacji. Zwraca wartości atrybutów tej klasy w formacie klasyfikacji: wartości ze słownika, liczby w jednostce pola, tak/nie, zakresy i tekst. Test dotyczył właśnie tego kroku. Klasę podawaliśmy z góry, więc rozpoznawania klasy ten test nie mierzy.
Opis i klasyfikacja były zawsze w tym samym języku:
| język opisu | ETIM v10 | Amazon | Kaufland |
|---|---|---|---|
| polski | ETIM v10 PL | Amazon PL | Kaufland PL |
| niemiecki | ETIM v10 DE | Amazon DE | Kaufland DE |
| angielski | ETIM v10 EN | Amazon UK | - |
Kaufland nie ma wersji angielskiej, dlatego opisy angielskie trafiły tylko do ETIM i Amazonu. Każde zapytanie to jeden opis i jedna klasa. Test objął 672 zapytania do API:
| klasyfikacja | produkty | języki | zapytania |
|---|---|---|---|
| ETIM v10 | 66 | polski, niemiecki, angielski | 198 |
| Amazon | 96 | polski, niemiecki, angielski | 288 |
| Kaufland | 93 | polski, niemiecki | 186 |
| razem | 672 |
Liczba produktów jest różna, bo ocenialiśmy tylko produkty, do których klasa na pewno pasuje (więcej w zasadach wzorca niżej). Odpowiedzi API dały 10 703 ocenionych pozycji, czyli wartości ze wzorca i wartości zwróconych przez API. Mediana czasu jednego wywołania to 3,2 sekundy, a 90% wywołań trwało krócej niż 6,5 sekundy.
Zapytania do ETIM i Kauflandu wysłaliśmy 24 października 2026 r., a do Amazonu 6 listopada.
Jak liczymy wynik: przykład czajnika
Opis w stylu wypunktowań:
Czajnik elektryczny Bosch DesignLine TWK3P420 – stal szlachetna / czarny, 1,7 l, 2400 W
• Szybkie gotowanie dzięki mocy 2400 W i zakrytej płaskiej grzałce – wnętrze łatwo utrzymać w czystości
• Pojemność 1,7 l (minimalne napełnienie 0,5 l), czytelny wskaźnik poziomu wody na zewnątrz obudowy
• Obudowa ze szczotkowanej stali szlachetnej z powłoką chroniącą przed odciskami palców, czarne elementy uchwytu
i podstawy
• Wyjmowany filtr antywapienny w dzióbku – w filiżance nie ma drobinek kamienia
• Bezpieczeństwo: automatyczne wyłączenie po zagotowaniu, wyłączenie po zdjęciu z podstawy, zabezpieczenie przed
włączeniem bez wody
• Pokrywa otwierana przyciskiem, szeroki otwór do napełniania i czyszczenia, lampka kontrolna włączenia
• Bez regulacji temperatury i bez funkcji podtrzymywania ciepła
Dane techniczne: napięcie 220–240 V, 50/60 Hz
• długość przewodu 75 cm
• wymiary (wys. × szer. × gł.) 27,5 × 21,6 ×
15 cm
• waga 1,2 kg
Idealna odpowiedź dla klasy czajnika w ETIM ma 15 wartości. Tak wypadło porównanie z odpowiedzią API na polski opis:
| atrybut ETIM | typ atrybutu | jednostka | idealna odpowiedź | odpowiedź API | ocena |
|---|---|---|---|---|---|
| Pojemność | liczba dziesiętna | l | 1,7 | 1,7 | poprawna |
| Moc znamionowa | liczba dziesiętna | W | 2400 | 2400 | poprawna |
| Zakres napięcia | zakres | V | 220-240 | 220-240 | poprawna |
| Szerokość | liczba dziesiętna | mm | 216 | 216 | poprawna, przeliczone z 21,6 cm |
| Wysokość | liczba dziesiętna | mm | 275 | 275 | poprawna |
| Głębokość | liczba dziesiętna | mm | 150 | 150 | poprawna |
| Grzałka | słownik, jedna wartość | brak | zakryta | zakryta | poprawna |
| Wskaźnik poziomu wody | słownik, jedna wartość | brak | zewnętrzny | zewnętrzny | poprawna |
| Kolor podstawowy | słownik, jedna wartość | brak | stal szlachetna | stal szlachetna | poprawna |
| Filtr wody | tak/nie | brak | tak | tak | poprawna |
| Z sitem | tak/nie | brak | tak | tak | poprawna, filtr w dzióbku to sitko |
| Funkcja zatrzymania gotowania | tak/nie | brak | tak | tak | poprawna |
| Z regulatorem temperatury | tak/nie | brak | nie | nie | poprawna, zaprzeczenie rozpoznane |
| Bezprzewodowy | tak/nie | brak | tak - czajnik wyłącza się po zdjęciu z podstawy | brak wartości | brak wartości wymaganej |
| Przezroczysty | tak/nie | brak | nie - obudowa jest ze stali | brak wartości | brak wartości wymaganej |
| Materiał zbiornika | słownik, jedna wartość | brak | brak wartości - opis podaje stal tylko dla obudowy | stal szlachetna | przypuszczenie |
Z tego porównania liczymy trzy wskaźniki:
- trafienia: 13, czyli wartości poprawne;
- precyzja = trafienia / wartości zwrócone = 13 / 14 = 92,9%. API wpisało 14 wartości, a jedna z nich, materiał zbiornika, to przypuszczenie;
- pokrycie = trafienia / wymagane wartości wzorca = 13 / 15 = 86,7%. API pominęło dwie wartości, które wynikają z opisu;
- jakość (F1) = 2 × trafienia / (wartości zwrócone + wymagane wartości wzorca) = 2 × 13 / (14 + 15) = 89,7%.
Ten sam opis w pozostałych klasyfikacjach:
| klasyfikacja i atrybut | typ atrybutu | jednostka | odpowiedź API | ocena |
|---|---|---|---|---|
| Amazon PL: Kabel [m] | tekst | brak osobnej, metry podane w nazwie atrybutu | 0,75 | poprawna, przeliczone z 75 cm |
| Amazon PL: Wymiary przedmiotu: Dł. x Szer. x Wys. [cm] | tekst | brak osobnej, centymetry podane w nazwie atrybutu | 15 × 21,6 × 27,5 | poprawna, kolejność osi dopasowana do atrybutu |
| Amazon PL: Numer części | tekst | brak | TWK3P420 | poprawna, kod modelu z opisu |
| Kaufland PL: Model | tekst | brak | DesignLine | niepełna, nazwa serii zamiast kodu modelu |
| Kaufland PL: Instrukcje bezpieczeństwa | tekst | brak | automatyczne wyłączenie po zagotowaniu, ... | błędna, to funkcje bezpieczeństwa, a nie instrukcje |
Jakość odpowiedzi dla tego produktu w Amazonie wyniosła 93,9%, a w Kauflandzie 86,7%. Po angielsku ETIM uzyskał 93,3%, a Amazon 93,5%.
Kategorie oceny
| ocena | jak liczy się w wyniku | kiedy |
|---|---|---|
| poprawna | trafienie | wartość zgodna ze wzorcem albo z wartością alternatywną |
| niepełna | pół trafienia | wartość prawdziwa, ale wyraźnie niepełna, np. zakres z jedną granicą |
| lista częściowo zgodna | część trafienia, według zgodności ze wzorcem | pole wielokrotnego wyboru, w którym brakuje części elementów wzorca albo jest element błędny lub zgadnięty |
| brak wartości wymaganej | wartość wzorca bez trafienia | API pominęło wartość, którą daje opis |
| przypuszczenie | wartość zwrócona bez trafienia | wartość typowa albo prawdopodobna, ale nie wynika z opisu z pewnością |
| błędna | wartość zwrócona bez trafienia | wartość fałszywa albo niepasująca do znaczenia pola |
| brak wartości nieobowiązkowej | nie liczy się | API nie zwróciło wartości, której nie wymagamy |
| luka we wzorcu | nie liczy się | API zwróciło wartość spoza wzorca, która według sędziego wynika z opisu |
W polu wymaganym wartość błędna albo przypuszczenie liczy się podwójnie: jako wartość zwrócona bez trafienia i jako wartość wzorca bez trafienia. Wartość nieobowiązkowa albo spoza wzorca wpisana poprawnie nie liczy się ani na plus, ani na minus. Przypuszczenie liczymy tak samo jak wartość błędną. Bywa prawdziwe, ale w katalogu wygląda jak fakt, a nikt go nie sprawdził.
Lista dostaje taką część trafienia, w jakiej zgadza się ze wzorcem. Przykład: wzorzec ma materiał [aluminium], a API zwróciło [aluminium, tytan]. Połowa zwróconej listy jest poprawna, a cały wzorzec się w niej mieści, więc trafienie wynosi 0,67.
Wskaźniki
- Precyzja = trafienia / wartości zwrócone przez API. Mówi, ile z tego, co API wpisało, jest prawdą.
- Pokrycie = trafienia / wymagane wartości wzorca. Mówi, ile idealnej odpowiedzi API dostarczyło.
- Jakość = 2 × trafienia / (wartości zwrócone + wymagane wartości wzorca). To miara F1, czyli średnia harmoniczna precyzji i pokrycia.
F1 to standardowa miara w ocenie wydobywania informacji z tekstu i w testach modeli językowych. Tak samo liczy wynik na przykład SimpleQA, test wiedzy faktograficznej modeli językowych przygotowany przez OpenAI. Jakość 100% ma tylko odpowiedź idealna. Pusta odpowiedź i odpowiedź całkiem błędna mają 0%, a wynik nigdy nie spada poniżej zera. Zgadywanie się nie opłaca: wartość, której opis nie daje, obniża precyzję i nie podnosi pokrycia.
Zaokrąglenie wartości do mniejszej liczby cyfr znaczących liczymy jako poprawne, np. 0,353 m zapisane jako 0,35 m. Tak getName.ai zapisuje liczby celowo. W całym teście dotyczyło to 16 wartości.
Kto ocenia
- Pola strukturalne ocenia skrypt. Porównuje liczby (z tolerancją 0,5%), wartości tak/nie, zakresy i wartości słownikowe. Tu wynik jest jednoznaczny: wartość zgadza się ze wzorcem albo nie.
- Pola tekstowe i wartości spoza wzorca ocenia sędzia, czyli model językowy Claude Opus 5.5 firmy Anthropic. Sędzia widzi opis i porównuje znaczenie, a nie brzmienie. „Stal szlachetna, czarny” znaczy to samo co „stainless steel / black”. Nie wolno mu korzystać z wiedzy o konkretnym produkcie, a wiedzy ogólnej tylko wtedy, gdy jest prawdziwa dla każdego produktu tego rodzaju. W Amazonie sędzia dostaje też instrukcję Amazonu dla sprzedawców, bo to ona określa znaczenie pola, a nie sama nazwa. Pełny prompt sędziego jest w plikach do pobrania.
Rodzaje błędów
Każdy rodzaj błędu na przykładzie z testu (opisy polskie).
Brak wartości wymaganej
Opis podaje wartość, a API jej nie wpisało.
| produkt | wiertarko-wkrętarka akumulatorowa |
|---|---|
| klasyfikacja | Kaufland PL |
| atrybut | Liczba obrotów (obr./min) |
| typ atrybutu | liczba dziesiętna |
| jednostka | rpm (obr./min) |
| fragment opisu | „2 biegi: 0–500 / 0–1900 obr./min” |
| idealna odpowiedź | 1900 |
| odpowiedź API | brak wartości |
Brak wartości wymaganej, wywnioskowanej
Opis nie podaje wartości wprost, ale wynika ona z niego z pewnością, a API jej nie wpisało.
| produkt | mikser ręczny |
|---|---|
| klasyfikacja | ETIM v10 PL |
| atrybut | Płynna regulacja mocy |
| typ atrybutu | tak/nie |
| jednostka | brak |
| fragment opisu | „4 prędkości + funkcja turbo (pulsacyjna)” |
| idealna odpowiedź | nie - mikser ma cztery stałe prędkości |
| odpowiedź API | brak wartości |
Wartość błędna
API wpisało wartość fałszywą albo niepasującą do znaczenia atrybutu.
| produkt | szlifierka kątowa |
|---|---|
| klasyfikacja | Kaufland PL |
| atrybut | Instrukcje bezpieczeństwa |
| typ atrybutu | tekst |
| jednostka | brak |
| fragment opisu | „funkcja ANTY-RESTART + łagodny rozruch”, „podwójna izolacja” |
| idealna odpowiedź | brak wartości - opis nie podaje instrukcji bezpieczeństwa |
| odpowiedź API | funkcja anty-restart, łagodny rozruch, podwójna izolacja |
Opis podaje funkcje bezpieczeństwa, a atrybut dotyczy instrukcji. Wartość jest prawdziwa, ale trafiła do atrybutu o innym znaczeniu.
Przypuszczenie
API wpisało wartość możliwą, która jednak nie wynika z opisu z pewnością.
| produkt | blender kielichowy |
|---|---|
| klasyfikacja | ETIM v10 PL |
| atrybuty | Wysokość, Szerokość, Głębokość |
| typ atrybutu | liczba dziesiętna (każdy z trzech) |
| jednostka | mm |
| fragment opisu | „wymiary 410 x 230 x 195 mm” |
| idealna odpowiedź | brak wartości - opis nie mówi, który wymiar jest którym |
| odpowiedź API | wysokość 410, szerokość 230, głębokość 195 |
Błędny element listy
Atrybut przyjmuje kilka wartości ze słownika, a API dodało do poprawnych wartość błędną.
| produkt | patelnia |
|---|---|
| klasyfikacja | Amazon PL i Kaufland PL |
| atrybut | Materiał |
| typ atrybutu | słownik, wiele wartości (w obu klasyfikacjach) |
| jednostka | brak |
| fragment opisu | „korpus: ALUMINIUM”, „powłoka wew. TYTANOWA nieprzywierająca” |
| idealna odpowiedź | aluminium |
| odpowiedź API | aluminium, tytan |
Tytan opis wymienia tylko przy powłoce, a nie jako materiał patelni.
Wartość niepełna
API wpisało wartość prawdziwą, ale wyraźnie niepełną.
| produkt | wiertarko-wkrętarka akumulatorowa |
|---|---|
| klasyfikacja | Amazon PL |
| atrybut | Typ akumulatora |
| typ atrybutu | tekst |
| jednostka | brak |
| fragment opisu | „18 V”, „2 akumulatory Li-ion BL1830B 3,0 Ah” |
| idealna odpowiedź | Li-ion 18 V 3,0 Ah |
| odpowiedź API | litowo-jonowy |
API podało rodzaj akumulatora, ale bez napięcia i pojemności.
Jak często występuje każdy rodzaj błędu
Tak różnica do 100% dzieli się między rodzaje błędów we wszystkich klasyfikacjach:
| rodzaj błędu | wartości | udział w różnicy do 100% |
|---|---|---|
| brak wartości wymaganej | 440 | 39,5% |
| przypuszczenie | 330 | 29,7% |
| wartość błędna | 176 | 18,2% |
| wartość niepełna | 133 | 7,3% |
| lista niepełna, z błędnym elementem albo z przypuszczeniem | 124 | 5,3% |
Liczba wartości i udział w różnicy nie idą w parze, bo rodzaje błędów ważą różnie. Wartość błędna w polu wymaganym liczy się podwójnie: jako wartość zwrócona bez trafienia i jako brakująca wartość wzorca. Wartość niepełna liczy się tylko w polu wymaganym (81 ze 133) i dostaje pół trafienia, a lista traci tylko tę część, w której odbiega od wzorca.
Największą część różnicy dają pominięte wartości wymagane. Trzy czwarte z nich (320 z 440) to wartości wywnioskowane, których opis nie podaje wprost, najczęściej w polach tak/nie, jak płynna regulacja mocy w mikserze z czterema prędkościami. Liczbę sztuk 1 przy produkcie sprzedawanym pojedynczo API wpisuje prawie zawsze: z 849 takich pól w Amazonie (liczba produktów, jednostek, opakowań i ilość w paczce) wypełniło poprawnie 840.
Przypuszczenia i wartości błędne API wpisuje głównie w pola, o których opis nic nie mówi albo których nie wymagamy: tak jest w 477 z 506 przypadków. Wśród 7994 wartości wymaganych API wpisało wartość błędną albo przypuszczenie w 81 przypadkach, w tym w 52 listach z błędnym albo zgadniętym elementem.
Wśród wartości błędnych najczęstsza jest wartość prawdziwa, ale wpisana w pole o innym znaczeniu, jak w przykładzie ze szlifierką: tak jest w 141 z 212 (błędne wartości przypisaliśmy do schematów z pomocą modelu Claude). Inne przykłady: pojemność 75 ml w polu wymiarów, zielony kolor wiązki lasera jako kolor produktu, przekątna ekranu w polu, które na brytyjskim Amazonie oznacza obsługiwane kolory.
Dlaczego jakość zależy od klasyfikacji
| klasyfikacja | wymagane wartości wzorca | jakość | pola strukturalne | pola tekstowe | precyzja | pokrycie |
|---|---|---|---|---|---|---|
| ETIM v10 | 2205 | 93,8% | 93,8% | - | 93,9% | 93,7% |
| Amazon | 4324 | 93,1% | 94,1% | 90,6% | 92,6% | 93,7% |
| Kaufland | 1465 | 91,7% | 93,2% | 88,7% | 92,0% | 91,3% |
Ten sam opis daje w każdej klasyfikacji inny zestaw pól. Klasyfikacje różnią się liczbą pól, ich typem i tym, jak często wartość trzeba z opisu wywnioskować, a Kaufland nie dostał opisów angielskich. Różnic w jakości nie należy więc czytać jak porównania w tych samych warunkach: każda klasyfikacja stawia API inne zadanie.
| klasyfikacja | wartości wzorca na odpowiedź | wartości wywnioskowane | pola tekstowe | jakość |
|---|---|---|---|---|
| ETIM v10 | 11,1 | 11,0% | 0% | 93,8% |
| Amazon | 15,0 | 27,8% | 27,2% | 93,1% |
| Kaufland | 7,9 | 13,5% | 33,3% | 91,7% |
- ETIM to klasyfikacja techniczna. Każde pole ma ściśle określone znaczenie, jednostkę albo słownik, a pól tekstowych nie ma wcale. Wartości wywnioskowanych jest tu najmniej. ETIM traci najwięcej na polach tak/nie, w których API pomija cechy wynikające z opisu, i na słownikach, w których czasem wybiera wartość typową, której opis nie podaje.
- Amazon ma najwięcej pól na produkt, a ponad jedna czwarta wartości jego wzorca jest wywnioskowana, najczęściej liczba sztuk. Takie wartości API wpisuje tu najczęściej: pokrycie wartości wywnioskowanych wynosi w Amazonie 86,9%, w Kauflandzie 61,4%, a w ETIM 58,8%. Nazwy pól są często ogólne, a ich znaczenie określa dopiero instrukcja Amazonu dla sprzedawców. Pominięte wartości wymagane i przypuszczenia dają w Amazonie po około jednej trzeciej różnicy do 100%.
- Kaufland ma najmniej pól na produkt, ale co trzecie jest tekstowe. Pola tekstowe wypadają w nim słabiej (88,7%) niż strukturalne (93,2%). Wartości błędne dają tu większą część różnicy do 100% niż w pozostałych klasyfikacjach, a 46 z 55 z nich to wartości wpisane w pole o innym znaczeniu, jak „Instrukcje bezpieczeństwa” wypełnione funkcjami bezpieczeństwa.
Jak jakość zależy od typu danych
| typ pola | ETIM v10 | Amazon | Kaufland | wartości wywnioskowane | pokrycie: wartości podane wprost | pokrycie: wartości wywnioskowane |
|---|---|---|---|---|---|---|
| liczba całkowita | - | 98,5% | 92,0% | 78,8% | 97,1% | 98,4% |
| liczba dziesiętna | 96,1% | 97,8% | 98,5% | 6,9% | 98,8% | 82,0% |
| zakres | 93,3% | - | - | 6,2% | 100,0% | 55,6% |
| słownik, wiele wartości | - | 92,2% | 94,7% | 7,1% | 96,2% | 52,4% |
| słownik, jedna wartość | 94,3% | 89,5% | 87,4% | 16,9% | 98,2% | 74,1% |
| tekst | - | 90,6% | 88,7% | 6,5% | 93,8% | 31,5% |
| tak/nie | 88,2% | 81,4% | 86,1% | 39,2% | 95,8% | 60,7% |
Kolumny ETIM, Amazon i Kaufland to jakość. Kreska oznacza, że klasyfikacja nie ma pól tego typu. Trzy ostatnie kolumny dotyczą wszystkich klasyfikacji razem.
Sam typ pola niewiele zmienia. Wartości podane w opisie wprost API wpisuje w każdym typie z pokryciem od 93,8% (tekst) do 100% (zakres). Różnice między typami biorą się z tego, jak często wartość danego typu trzeba z opisu wywnioskować i jak trudny jest ten wniosek. Wymiary, moc i pojemność opis prawie zawsze podaje liczbą, więc liczby dziesiętne wypadają dobrze w każdej klasyfikacji. Liczby całkowite to głównie liczba sztuk, którą opis zwykle pomija, bo jest oczywista. Prawie cztery piąte z nich trzeba wywnioskować, ale to wniosek prosty: przy produkcie sprzedawanym pojedynczo liczba sztuk wynosi 1. API wpisuje ją prawie zawsze, więc liczby całkowite mają najwyższą jakość (98,0%). Pola tak/nie wypadają najsłabiej (86,1%): „bez regulacji temperatury” to wartość podana wprost, ale „bezprzewodowy” trzeba wywnioskować z opisu podstawy, a takie wnioski API wyciąga tylko w 60,7% przypadków.
Rodzaje błędów według typu pola:
| typ pola | zwrócone wartości | poprawne | błędne | przypuszczenia | niepełne | brak wartości wymaganej |
|---|---|---|---|---|---|---|
| liczba dziesiętna | 2343 | 97,2% (2278) |
0,9% (22) |
1,8% (43) |
0% (0) |
2,2% (43 z 1927) |
| liczba całkowita | 1046 | 98,0% (1025) |
0,7% (7) |
1,3% (14) |
0% (0) |
1,6% (15 z 963) |
| tak/nie | 724 | 90,9% (658) |
1,0% (7) |
8,1% (59) |
0% (0) |
17,7% (138 z 779) |
| zakres | 169 | 90,5% (153) |
5,9% (10) |
3,6% (6) |
0% (0) |
2,8% (4 z 144) |
| słownik, jedna wartość | 1733 | 90,0% (1559) |
1,5% (26) |
8,5% (148) |
0% (0) |
5,2% (79 z 1533) |
| słownik, wiele wartości | 1101 | 84,7% (932) |
4,6% (51) |
5,0% (55) |
5,7% (63) |
4,2% (41 z 983) |
| tekst | 2486 | 89,9% (2234) |
3,6% (89) |
1,2% (30) |
5,3% (133) |
7,2% (120 z 1665) |
Udziały w kolumnach od „poprawne” do „niepełne” liczymy od zwróconych wartości, a brak wartości wymaganej od wymaganych wartości wzorca. Tabela obejmuje wszystkie klasyfikacje razem, a tabela dla każdej klasyfikacji osobno jest w pliku ze statystykami. Lista wielokrotnego wyboru liczy się tu jako jedna wartość: z 51 błędnych list 36 ma jeden zły element obok poprawnych.
- Liczby zwrócone przez API są najpewniejsze: około 97% poprawnych, mało przypuszczeń i błędów.
- Pola tak/nie najczęściej zostają puste: API pomija 17,7% wymaganych wartości, a w pozostałych typach od 1,6% do 7,2%.
- Słowniki jednokrotnego wyboru rzadko są błędne (1,5%), ale częściej zgadnięte (8,5%). API wybiera wartość typową, której opis nie podaje.
- Listy wielokrotnego wyboru najrzadziej są całkowicie poprawne (84,7%), bo wystarczy jeden zły albo brakujący element. Lista trafiona w części dostaje jednak część trafienia, więc w jakości wypadają dobrze: 92,2% w Amazonie i 94,7% w Kauflandzie.
- W tekście najczęstsza jest wartość niepełna (5,3%), a błędnych wartości jest tu najwięcej w liczbach bezwzględnych (89).
Pozostałe przekroje
Według języka
| język opisu | jakość | pola strukturalne | pola tekstowe |
|---|---|---|---|
| angielski | 93,8% | 94,4% | 91,3% |
| niemiecki | 93,0% | 93,8% | 89,9% |
| polski | 92,6% | 93,4% | 89,5% |
Różnice między językami są małe: do 0,9 punktu procentowego w polach strukturalnych i do 1,8 punktu w tekstowych. Najsłabiej wypadają pola tekstowe polskiego Kauflandu (87,2%). Porównanie nie jest całkiem równe, bo opisy angielskie nie trafiały do Kauflandu.
Według kategorii produktów
Najwyższą jakość mają narzędzia (95,0%), ogród oraz dom i kuchnia (po 94,5%). Niżej wypadają małe AGD kuchenne (92,2%), zabawki (91,1%) i uroda (90,0%). Część kategorii ma w teście tylko 1-4 produkty, więc wyniki dla nich traktujemy orientacyjnie. Pełna tabela jest w pliku ze statystykami.
Rozkład wyników pojedynczych odpowiedzi
| klasyfikacja | odpowiedzi | mediana jakości | odpowiedzi z jakością co najmniej 80% | odpowiedzi z jakością co najmniej 70% |
|---|---|---|---|---|
| ETIM v10 | 198 | 95,2% | 94% | 98% |
| Amazon | 288 | 94,0% | 99% | 100% |
| Kaufland | 186 | 92,3% | 90% | 97% |
Pułapki, z którymi API sobie poradziło
- Lodówka, chaotyczny eksport sklepu. Opis podaje trzy pojemności: chłodziarka 260 l, zamrażarka 103 l, razem 363 l. API wpisało każdą do właściwego pola we wszystkich trzech klasyfikacjach. Wymiary 203 × 60 × 66,5 cm zamieniło na milimetry dla ETIM, na metry dla Kauflandu i ułożyło w kolejności gł. × szer. × wys. dla Amazonu. Wymiarów i wagi opakowania, które stały tuż obok, nie użyło.
- Wiertarko-wkrętarka, krótka oferta w trzech zdaniach. Dwa biegi 0-500 i 0-1900 obr./min trafiły do pól pierwszego i drugiego biegu. Przy dwóch akumulatorach 3,0 Ah API podało pojemność jednego akumulatora (3,0 Ah), a nie sumę, i osobno ich liczbę (2). Zakres uchwytu 1,5-13 mm nie trafił do pól średnicy wiercenia w stali i drewnie. Jedną pułapkę przeoczyło: w ETIM wpisało 50 Nm w pole zakresu regulacji momentu, choć opis podaje tylko moment maksymalny i 21 nastaw sprzęgła.
- Telewizor. Zużycie energii podane w kWh na 1000 godzin nie zostało wpisane jako zużycie roczne. Przekątną 55 cali API przeliczyło na 139 cm.
Co z tego wynika
Liczby, jednostki i cechy podane wprost API odczytuje bardzo dokładnie: pokrycie wartości podanych wprost wynosi od 96,0% w Kauflandzie do 98,0% w ETIM. Różnica do 100% bierze się głównie z trzech rzeczy, a żadna z nich nie polega na złym odczytaniu tego, co opis podaje wprost:
- wartości, które z opisu wynikają, choć nie są w nim zapisane, np. to, że czajnik jest bezprzewodowy. API częściej je pomija, niż wpisuje błędnie;
- odpowiedzi w polach, o których opis nic nie mówi, najczęściej wartości typowe dla danego rodzaju produktu;
- pomylenie znaczenia pola, np. instrukcji bezpieczeństwa z funkcjami bezpieczeństwa, tam, gdzie sama nazwa atrybutu nie mówi jasno, czego pole dotyczy.
Nad wszystkimi trzema pracujemy.
Co to znaczy w praktyce? Poniżej nasze wnioski z liczb w tym artykule, a nie wynik osobnego pomiaru:
- liczby podane w opisie API wpisuje najpewniej, razem z przeliczeniem jednostek. Z liczb, które zwróciło, około 97% jest poprawnych;
- najwięcej uwagi wymagają pola tak/nie i słowniki jednokrotnego wyboru, w których API częściej zgaduje, oraz pola tekstowe, których znaczenia nie da się poznać po samej nazwie;
- cechy oczywiste dla człowieka, jak to, że czajnik jest bezprzewodowy, warto zapisać w opisie. Wartości podane wprost API wpisuje z pokryciem od 96,0% do 98,0%, a wywnioskowane rzadziej (79,7%).
Wszystkie pliki testu są do pobrania, więc porównanie z człowiekiem, o którym piszemy na początku, może przeprowadzić każdy. Jeśli je zrobisz, napisz do nas.
Zestaw testowy
100 prawdziwych produktów (konkretna marka i model) z 17 kategorii szerokiego marketplace'u. Są wśród nich elektroinstalacja i oświetlenie, narzędzia, AGD małe i duże, elektronika, ogród, instalacje, dom i kuchnia, moda, uroda, zabawki, sport, artykuły dziecięce, zwierzęta, motoryzacja i żywność. Dane techniczne pochodzą z kart producentów i dużych sklepów.
5 stylów opisu, po 20 produktów każdy, bo w prawdziwych katalogach opisy wyglądają bardzo różnie:
| styl | jak wygląda |
|---|---|
| krótka oferta | 1-3 zdania, wszystko w jednym ciągu |
| wypunktowania | lista cech i krótkie dane techniczne |
| karta techniczna | tabela parametrów |
| tekst marketingowy | korzyści i emocje, parametry wplecione w zdania |
| nieuporządkowany eksport sklepu | HTML, skróty, wielkie litery, wtrącenia o wysyłce i zwrotach |
3 języki: polski, niemiecki i angielski. Każdy opis jest napisany tak, jak napisałby go lokalny sprzedawca, a nie jak tłumaczenie. Fakty są te same we wszystkich językach. Średnia długość opisu to około 750-800 znaków.
Opisy przygotowali agenci AI według spisanej instrukcji, na podstawie danych źródłowych każdego produktu. Ci sami agenci ułożyli idealną odpowiedź (o niej niżej).
409 pułapek. W opisach celowo umieściliśmy miejsca, w których łatwo o pomyłkę:
- przeliczenia jednostek, np. wymiary w centymetrach, gdy ETIM oczekuje milimetrów, a Kaufland metrów;
- zaprzeczenia, np. „bez regulacji temperatury” albo „nie nadaje się do zmywarki”;
- kilka podobnych liczb naraz, np. trzy pojemności lodówki albo dwa biegi wiertarki;
- liczby-zmyłki, np. wymiary i waga opakowania, okres gwarancji czy czas dostawy;
- zakres tam, gdzie pole przyjmuje jedną liczbę;
- wzmianki o produktach kompatybilnych, które nie są cechą samego produktu.
Idealna odpowiedź (wzorzec)
Dla każdego produktu i każdej klasyfikacji przygotowaliśmy pełną listę wartości atrybutów, które wynikają z opisu. To z nią porównywaliśmy odpowiedzi API.
Zasady
- Wzorzec zawiera tylko to, co wynika z opisu. Wiedza o konkretnym produkcie spoza opisu się nie liczy. Jeśli opis nie podaje koloru, wzorzec nie ma koloru, nawet gdy wiemy, jaki jest.
- Wartość pewna należy do wzorca, przypuszczenie nie. Wartość nie musi być zapisana w opisie wprost. Należy do wzorca także wtedy, gdy wynika z opisu z pewnością: z przeliczenia, z rodzaju produktu (prostownica daje proste włosy, listwa z gniazdami typu F ma wtyczkę typu F), z cechy prawdziwej dla każdego produktu tego rodzaju (kosmetyk ma termin ważności) albo z tego, że produkt jest sprzedawany pojedynczo (liczba sztuk 1). Ogólnej reguły tu nie ma, więc każdą taką wartość ocenialiśmy osobno. Wartość tylko typowa albo prawdopodobna, np. „lekki”, „klasyczny styl” albo uznanie jednego z nieopisanych wymiarów za szerokość, to przypuszczenie.
- Wartości wymagane i nieobowiązkowe. Wymagane są wartości, które opis podaje albo które z niego pewnie wynikają. „Wymagana” znaczy tu tylko tyle, że skoro opis ją daje, API powinno ją wpisać. Nie chodzi o atrybuty obowiązkowe w klasyfikacji. Atrybut, o którym opis nic nie mówi, nie ma wartości we wzorcu i nie wpływa na wynik, o ile API go nie wypełni. Nieobowiązkowe są tylko pola ogólnikowe (np. styl albo opisowy rozmiar), pola, w których opis dopuszcza kilka odczytów (np. który kod oznacza wersję produktu), i przybliżone odpowiedniki w słowniku. Brak wartości nieobowiązkowej nie jest błędem.
- Wartości alternatywne. Gdy poprawnych odpowiedzi jest kilka (np. 230 V albo zakres 220-240 V), wzorzec przyjmuje każdą z nich.
- Tylko klasy pewne. Atrybuty ocenialiśmy tylko wtedy, gdy klasa na pewno pasuje do produktu. ETIM nie obejmuje odzieży, zabawek ani żywności, więc w ETIM oceniliśmy 66 produktów, w Kauflandzie 93, w Amazonie 96.
- Test mierzy odczyt opisu, a nie jakość samych klasyfikacji. Gdy definicja klasyfikacji utrudniała poprawną odpowiedź (np. słownik bez pasującej wartości albo niejasna etykieta), pole było nieobowiązkowe.
- Bez pól do pozycjonowania. Amazonowe „Ogólne słowo kluczowe” i „Słowo kluczowe tematyki” to frazy, po których klienci szukają produktu, a nie jego cechy. Test ich nie ocenia.
Jak powstał
Wzorzec przygotowali agenci AI według spisanej instrukcji. Każdy z 10 agentów-autorów opracował 10 produktów: opisy w trzech językach i idealną odpowiedź dla każdej klasyfikacji. Potem 6 innych agentów, którzy nie byli autorami, sprawdziło całość i wprowadziło 193 poprawki. Zasady i przypadki sporne, np. granicę między wartością pewną a przypuszczeniem, rozstrzygał człowiek.
Po pierwszej ocenie wzorzec przeszedł jeszcze cztery rundy kontroli:
- Luki. Gdy API zwróciło wartość, której wzorzec nie miał, a sędzia uznał, że wynika ona z opisu, wartość trafiła do wzorca. Po pierwszej ocenie takich wartości było 675, w większości nieobowiązkowych. Tę samą kontrolę powtórzyliśmy po kolejnych przebiegach Amazonu, z wyjątkiem opisanym niżej.
- Spójność między językami. To samo pole tego samego produktu musi dostać ten sam werdykt w każdym języku. Każdą rozbieżność rozstrzygnęliśmy we wzorcu, a nie zostawiliśmy sędziemu.
- Znaczenie pól według Amazonu. Instrukcje Amazonu dla sprzedawców pokazały, że część pól znaczy co innego, niż sugeruje nazwa. „Podmarka” obejmuje też licencję, np. Minecraft na puzzlach. Wzorzec Amazonu przejrzeliśmy pole po polu według tych instrukcji i według słowników Amazonu w getName.ai z 27 października 2026 r. Razem z lukami zmieniliśmy albo dopisaliśmy 393 pola w 95 produktach, w tym 246 nowych. W każdym rynku pole ma znaczenie z instrukcji tego rynku.
- Wartości wywnioskowane. Wartości, których opis nie podaje wprost, tylko z niego wynikają, były początkowo nieobowiązkowe. Każdą z nich, łącznie 674, sprawdziliśmy osobno pod kątem tego, czy wynika z opisu z pewnością. 568 jest teraz wymaganych, 84 uznaliśmy za przypuszczenia, a 22 zostały nieobowiązkowe (pola ogólnikowe, przybliżenia w słowniku i listy, w których pewna jest tylko część elementów). Sprawdzał model Claude Opus 5.5 według zasad ustalonych przez człowieka.
Ograniczenia testu
- Próba wystarcza do porównania klasyfikacji i typów pól, ale nie węższych przekrojów. 100 produktów i 7994 wartości wymaganych to dość, żeby porównać klasyfikacje i typy atrybutów. Pojedyncza kategoria produktów ma w teście od 1 do 14 produktów, więc wyniki kategorii traktujemy orientacyjnie.
- Klasa była podana z góry. Test nie mierzy rozpoznawania klasy, a w praktyce błędna klasa oznacza złe atrybuty.
- Opisy powstały na potrzeby testu na podstawie prawdziwych danych produktów. Mają oddawać różnorodność prawdziwych katalogów, ale prawdziwe opisy bywają jeszcze krótsze i uboższe.
- Opisy i wzorzec przygotowali agenci AI pod kontrolą człowieka, a pola tekstowe ocenia sędzia LLM. Wzorzec przeszedł niezależną recenzję i kontrolę spójności, ale może zawierać pojedyncze błędy. Dlatego udostępniamy go w całości.
- Wzorzec uzupełnialiśmy po zobaczeniu odpowiedzi API. W rundzie luk dopisaliśmy do niego wartości, które zwróciło API, a sędzia uznał za wynikające z opisu (więcej w części „Jak powstał”). Nie mamy osobnej próby, dla której wzorzec powstałby bez wglądu w odpowiedzi API. Ta runda działała w obie strony: atrybut dopisany jako wymagany obniża wynik w tych językach, w których API go nie wypełniło. Wartości wywnioskowane sprawdzaliśmy bez odpowiedzi API.
- Sędzia LLM to też model. Przy ponownej ocenie tych samych odpowiedzi (po doprecyzowaniu jego instrukcji) zmienił kilkanaście z około 3 tysięcy ocen pól tekstowych, głównie między „niepełna” a „poprawna”.
- Jeden przebieg. Główny test to jeden przebieg. Amazon powtórzyliśmy jeszcze dwa razy i w trzech przebiegach jakość wyniosła od 93,0% do 93,1% w PL, od 92,7% do 92,9% w DE i od 93,4% do 93,7% w UK. Dla ETIM i Kauflandu powtórzeń nie robiliśmy.
- Trzy klasyfikacje i trzy języki z wielu, które obsługuje getName.ai. Na innych klasyfikacjach wynik może być inny.
Pliki do pobrania
Wszystko w jednym archiwum: pakiet_testowy_getname.zip (1,8 MB). Albo osobno:
| plik | zawartość |
|---|---|
| opisy_pl.csv, opisy_de.csv, opisy_en.csv | 100 opisów produktów w każdym języku (kolumny: id, description); te same dane w formacie JSONL |
| wzorzec.xlsx | idealna odpowiedź: arkusz „produkty” (kategoria, styl opisu, pułapki, źródła danych) i arkusz na każdą klasyfikację (klasa, atrybut, typ, jednostka, wartość, wartości alternatywne, wymagany, podstawa, uwaga) |
| wzorzec_json.zip | ta sama idealna odpowiedź w 8 plikach JSON, po jednym na klasyfikację i język |
| macierz_testu.json | które klasyfikacje dostawał opis w każdym języku |
| wyniki_atrybuty.csv | każda z 10 703 ocenionych wartości: produkt, język, klasyfikacja, klasa, atrybut, typ, czy wymagany, wartość wzorca, odpowiedź API, ocena, sposób liczenia w wyniku, uzasadnienie sędziego |
| wyniki_podsumowanie.csv | wskaźniki dla każdej pary język × klasyfikacja |
| statystyki.xlsx | wszystkie tabele z artykułu oraz wynik każdej z 672 odpowiedzi API |
| prompt_sedziego.txt | pełna instrukcja dla sędziego LLM |
Kolumny pliku wyniki_atrybuty.csv (separator: średnik):
| kolumna | znaczenie |
|---|---|
| product | identyfikator produktu (P001-P100), ten sam co w opisach i we wzorcu |
| language | język opisu: pl, de, en |
| source | klasyfikacja, np. etim_v10_pl, amazon_co_uk, kaufland_de |
| family | rodzina klasyfikacji: etim, amazon, kaufland |
| class | identyfikator klasy |
| attribute, name | identyfikator i nazwa atrybutu |
| type | typ pola: float, integer, boolean, range, dictionary (multi = wiele wartości), string |
| required | True = wartość wymagana, False = nieobowiązkowa albo spoza wzorca |
| gold | wartość ze wzorca (puste = wzorzec nie przewiduje wartości) |
| returned | odpowiedź API (puste = API nie zwróciło wartości) |
| category, category_pl | ocena po angielsku i po polsku |
| gold_count | 1 = wartość liczy się jako wymagana wartość wzorca |
| returned_count | ile wartość liczy się jako zwrócona: 1, 0 (nie liczy się) albo ułamek dla listy spoza wzorca z częścią błędnych elementów |
| hit | trafienie od 0 do 1 |
| language_ok | dla tekstu: czy odpowiedź jest w języku klasyfikacji |
| judge_reason | uzasadnienie sędziego po angielsku (puste, gdy ocenił skrypt); przedrostek [reference conflict] znaczy, że według sędziego wartość wzorca nie pasuje do instrukcji Amazonu |
Jakość dowolnej grupy wierszy to 2 × suma hit / (suma gold_count + suma returned_count).
Jak powtórzyć test
- Weź opis z opisy_<język>.csv i klasę z wzorzec.xlsx dla tej samej klasyfikacji (kolumna „klasa”, tylko wiersze z „klasa pewna” = tak).
- Wyślij je do getName.ai i zapisz zwrócone atrybuty.
- Porównaj z wartością wzorca, wartościami alternatywnymi i polem „wymagany” według zasad opisanych wyżej. Pola tekstowe i wartości spoza wzorca oceń z pomocą prompt_sedziego.txt, w Amazonie razem z instrukcją Amazonu dla sprzedawców dla danego atrybutu. Tych instrukcji nie dołączamy, bo to treść Amazonu udostępniana sprzedawcom.
- Policz precyzję, pokrycie i jakość według wzorów z części „Wskaźniki”.
Jeśli znajdziesz we wzorcu błąd, napisz do nas. Poprawimy go i przeliczymy wynik.