Jak uruchomiliśmy polski model językowy Bielik w aplikacji JayNest na iPhone'a, bez internetu, i co z tego wyszło. Wyniki z listopada 2026, zmierzone na iPhonie 18 Pro i iPhonie 14 Pro Max.
JayNest to aplikacja do spisu rzeczy w domu: pomieszczenia, pudła z etykietami QR, przedmioty ze zdjęciami, gwarancjami i ceną. Bielik 4.5B od SpeakLeash działa w niej w całości w telefonie. Robisz zdjęcie faktury za całe zakupy, a Bielik znajduje na niej przedmiot, który właśnie dodajesz, np. wiertarkę wśród wkrętów i kołków. Aplikacja wpisuje wtedy jego cenę i pełną nazwę z faktury. Na 10 fakturach testowych w iPhonie 18 Pro trafił 10 razy, w ok. 1 sekundę na fakturę.
Problem: faktura z wieloma pozycjami
Przy dodawaniu przedmiotu do katalogu najdłużej trwa przepisywanie danych z paragonu: daty, ceny i sklepu. Z jednym przedmiotem na paragonie aplikacja radziła sobie sama: telefon odczytuje tekst, a reguły znajdują datę, cenę i sklep. Faktura z marketu budowlanego ma jednak wiertarkę, wkręty, kołki i taśmę, a do szuflady trafia tylko wiertarka. Którą cenę wpisać, wiedział dotąd tylko model w chmurze.
Wysyłanie faktury do chmury ma swoją cenę. Na dokumencie są dane kupującego: imię i nazwisko, adres, NIP. Każde zapytanie kosztuje, a część osób w ogóle nie chce wysyłać takich dokumentów. Modele wbudowane w telefony nie pomagają: Apple Intelligence nie działa, gdy iPhone jest po polsku, a Gemini Nano działa tylko na części telefonów z Androidem i ma ograniczone wsparcie dla polskiego.
Jak to działa w aplikacji
Bielika pobierasz sam, gdy chcesz z niego korzystać: Ustawienia → Zdjęcia → Rozpoznawanie → Bielik w telefonie. Plik idzie prosto z repozytorium SpeakLeash na Hugging Face, z przypiętej wersji, a aplikacja sprawdza jego sumę SHA-256, więc to zawsze oryginał bez naszych zmian. Można też wskazać plik pobrany na komputerze, gdy telefon ma limit danych.


Przy nowym przedmiocie wpisujesz nazwę, np. „Wiertarka”, i robisz zdjęcie faktury. Telefon odczytuje tekst (Vision), a reguły aplikacji wyciągają z niego pozycje z ceną jednej sztuki. Bielik dostaje ponumerowaną listę samych pozycji i nazwę przedmiotu, bez nagłówka z danymi kupującego, i odpowiada numerem pozycji albo zerem, gdy żadna nie pasuje. Odpowiedź jest ograniczona gramatyką llama.cpp do numerów z listy, więc model nie może wymyślić ceny: cenę i nazwę bierze aplikacja z wybranego wiersza.


Dlaczego Bielik 4.5B
Sprawdziliśmy trzy Bieliki na 12 wymyślonych paragonach i fakturach: skróty z kas („EKSPR.CIŚN. DELONGHI”), błędy odczytu („DYS0N”), dwie wiertarki różnych marek na jednym paragonie i dokument bez szukanej rzeczy. Model dostawał listę pozycji i wybierał numer.
| Model | Trafione | Czas na Macu | Uwagi |
|---|---|---|---|
| Bielik 1.5B (Q8_0) | 8 z 12 | 0,1–0,4 s | za słaby |
| Bielik 4.5B (Q8_0) | 12 z 12 | 0,3–0,8 s | mieści się w telefonie |
| Bielik 11B (BF16) | 12 z 12 | 0,4–2,7 s | za duży na telefon |
Używamy oficjalnego pliku Q8_0 (5,06 GB) z repozytorium SpeakLeash, z dwóch powodów. Po pierwsze, to najmniejszy wariant, jaki udostępniają autorzy: drugi plik, w pełnej precyzji (fp16), ma 9,5 GB i nie zmieściłby się w pamięci telefonu. Po drugie, plik pobierany prosto od autorów i sprawdzany sumą SHA-256 daje pewność, że to oryginalny model, bez naszych zmian. Mniejszą wersję (np. Q4) moglibyśmy przygotować sami i być może działałaby na starszych iPhone'ach, ale wtedy trzeba by nam wierzyć na słowo, że niczego w modelu nie zmieniliśmy.
Sprawdziliśmy też, czy Bielik nazwie przedmiot z napisów na opakowaniu, bez zdjęcia. Na 9 rzeczach z naszych szuflad 4.5B podał dobrą nazwę 4 razy, a kategorię 2 razy (11B: 7 i 7). Dlatego w telefonie Bielik robi to, w czym mały model jest mocny: wybiera z gotowej listy.
Wyniki na iPhone'ach
Ten sam test jest wbudowany w aplikację (Ustawienia → Testy), więc wyniki pochodzą z tego samego kodu co w aplikacji: 10 faktur i 24 nazwy z kas, każde pytanie z wczytaniem modelu od nowa.
| Urządzenie | Faktury | Czas na fakturę | Wolna pamięć po wczytaniu |
|---|---|---|---|
| iPhone 18 Pro (12 GB, iOS 27.3) | 10 z 10 | ok. 1 s (pierwsza 12,4 s) | ok. 5,9 GB |
| iPhone 14 Pro Max (6 GB, iOS 27.2) | brak odpowiedzi | wczytanie 2–10 s | ok. 3,9 GB |
| Mac z M5 Max (dla porównania) | 10 z 10 | ok. 0,4 s na odpowiedź | nie dotyczy |
Na iPhonie 18 Pro odpowiedzi były takie same jak na Macu, co do znaku. Pierwsze pytanie trwa dłużej, bo telefon przygotowuje GPU. Każde następne wczytuje model w 0,2–0,3 s, bo iOS trzyma plik w pamięci podręcznej, a sama odpowiedź to 0,6–0,7 s.
Na iPhonie 14 Pro Max model się wczytuje, ale nie odpowiada. Najpewniej 5 GB modelu nie mieści się w pamięci, którą dostaje tam GPU. Dlatego na iPhone'ach z mniej niż 8 GB pamięci aplikacja nie pozwala pobrać Bielika i mówi dlaczego. Lepiej nie pobierać 5 GB, które i tak nie zadziałają.


Zabezpieczenia przed pomyłkami
- Gramatyka llama.cpp dopuszcza tylko numery istniejących pozycji, więc model nie wymyśli ceny ani nazwy.
- Wskazana pozycja musi mieć z nazwą przedmiotu wspólny początek słowa („Ekspres” i „EKSPR.CIŚN.”). Jeśli nie ma, aplikacja nie zgaduje, tylko pokazuje listę.
- Do modelu trafiają tylko wiersze z produktami i cenami. Nagłówek z danymi kupującego zostaje w telefonie.
- Wynik Bielika zawsze widać i zawsze da się go zmienić.
Czego się nauczyliśmy
Mały model dobrze wybiera, gorzej pisze
W zadaniu z odpowiedzią, którą da się sprawdzić automatycznie (numer z listy), Bielik 4.5B trafia za każdym razem. Gdy prosiliśmy go o poprawę błędów językowych na naszej stronie, z 80 zmian żadna nie była prawdziwą poprawką: dopisywał literówki i zmieniał treść. Bielik 11B był ostrożny i znalazł na stronie prawdziwy błąd gramatyczny, ale też czasem usuwał zdania. Niejasnego nagłówka „Twój dom zostaje u Ciebie” nie zauważył żaden, dopóki nie zapytaliśmy wprost o niejasności. Wtedy 11B wskazał podobny („Dom, który pamięta za Ciebie”).
Poprawianie skrótów z kas to obiecujące zadanie
Bielik 4.5B zamienia „WIERT.UDAR BOSCH PSB750” na „Wiertarka udarowa Bosch PSB750”. Z pięcioma przykładami w poleceniu dobrze poprawił 20 z 24 nazw (bez przykładów 15). Zabezpieczenie odrzuca poprawki, w których zmieniła się liczba albo zniknęła marka, i wyłapało dwie złe, w tym „Przedłużacz 5 m 3 GN” z zamienionymi liczbami. W aplikacji tego jeszcze nie ma.
Mierz na telefonie
Na Macu wszystko działało. Dopiero test na prawdziwych telefonach pokazał dwa problemy. Na iPhonie 14 Pro Max aplikacja zamykała się zaraz po pobraniu modelu. Przyczyna była w naszym kodzie: aplikacja sprawdza sumę kontrolną pliku, czytając go po kawałku, ale przeczytane kawałki zostawały w pamięci. Po ok. 4,3 GB system zamykał aplikację. Po poprawce sprawdzenie całego pliku zajmuje kilkanaście MB pamięci. Drugiego problemu nie dało się obejść: na tym telefonie nawet poprawnie pobrany model nie odpowiada, bo 6 GB pamięci to za mało (wyniki wyżej).
Co dalej
- Android, z tym samym plikiem modelu przez llama.cpp. Tam w telefonie nie ma dziś żadnego modelu.
- Faktury w PDF z maila i wybór pozycji także przy istniejącym przedmiocie.
- Poprawianie nazw ze skrótów z kas, jako propozycja do zaakceptowania.
- Publiczny zbiór testowy faktur bez danych osobowych, żeby mierzyć kolejne wersje modeli.
Wersja z Bielikiem jest w testach (TestFlight) od 11 listopada 2026, a wydanie w App Store planujemy do końca listopada. Projekt zgłosiliśmy do konkursu Bielik Awards 2026.
Model i licencje
Bielik 4.5B v3.0 Instruct: SpeakLeash i ACK Cyfronet AGH, licencja Apache 2.0, plik bez zmian. Silnik: llama.cpp, licencja MIT. Pytania: info@jaynest.app.