Polityka Prywatności
Ostatnia aktualizacja: Październik 2026
Wersja wiążąca: wiążącą wersją niniejszej Polityki Prywatności jest wersja angielska. Prosimy zapoznać się z angielską Polityką Prywatności. Poniższe podsumowanie ma charakter wyłącznie informacyjny i opisuje, co aplikacja robi obecnie.
Administrator Danych
Creatiwi AI
Rzeczpospolita Polska
Kontakt: [email protected]
Przetwarzanie Lokalne
Maskeno stawia przetwarzanie lokalne na pierwszym miejscu. Wykrywanie i maskowanie danych osobowych (PII) odbywa się na Twoim urządzeniu: wzorce i sumy kontrolne z Microsoft Presidio oraz modele nym (wielojęzyczny) i OPF (osoby i adresy), a dla tekstu polskiego także GLiNER2, uruchamiane przez ONNX Runtime. Żaden etap wykrywania nie wysyła Twoich dokumentów na serwer. Rozpoznawanie tekstu (OCR) zeskanowanych stron i obrazów również działa wyłącznie lokalnie: za pomocą wbudowanego w aplikację silnika Tesseract (domyślnie) lub Ollamy na tym komputerze. OCR w chmurze nie istnieje, a oryginalny dokument nigdy nie opuszcza Twojego urządzenia. Aplikacja nie działa jednak bez sieci w sensie absolutnym: wykonuje żądania wymienione poniżej. Wykrywanie nie jest też nieomylne, a zamaskowany tekst nie jest zanonimizowany, dlatego przed wysłaniem go gdziekolwiek przeczytaj go uważnie.
Co Opuszcza Twoje Urządzenie
Działanie aplikacji wiąże się z żądaniami sieciowymi. Wymieniamy je otwarcie, zamiast twierdzić, że nic "nigdy" nie opuszcza Twojego urządzenia:
- Wersja próbna: przy rejestracji identyfikator urządzenia, platforma systemu operacyjnego i wersja aplikacji; przy sprawdzaniu statusu identyfikator urządzenia; w raportach użycia identyfikator urządzenia wraz z liczbą projektów i stron. Dane trafiają na nasz serwer próbny (Cloudflare Worker), nie zależą od zgody na analitykę i nie ustają po wprowadzeniu licencji: licencja znosi limity wersji próbnej, ale aplikacja nadal sprawdza status i wysyła raporty użycia.
- Dane językowe OCR: gdy uruchamiasz OCR w języku, którego pliku językowego nie ma w pamięci podręcznej danych językowych aplikacji (przy pierwszym użyciu i ponownie po jej opróżnieniu), aplikacja pobiera plik językowy Tesseract dla tego języka (na przykład polskiego i angielskiego) z sieci CDN danych językowych tesseract.js (jsDelivr). Pamięć podręczną aplikacja trzyma w folderze tymczasowym systemu operacyjnego, który system lub program czyszczący może opróżnić. To zwykłe żądanie pobrania, bez treści dokumentów, identyfikatora urządzenia i klucza licencyjnego. Aby OCR działał całkowicie offline, ustaw zmienną środowiskową
TESSDATA_PATHw środowisku, z którego uruchamiana jest aplikacja, na folder ze spakowanymi gzipem plikami językowymi o nazwach<lang>.traineddata.gz(dla dokumentu polskiegopol.traineddata.gzieng.traineddata.gz). Zwykłe, niespakowane pliki.traineddatarównież działają, jeśli folder zawiera w tej postaci wszystkie języki, których aplikacja potrzebuje, i żadnego z nich jako pliku.gz; nie mieszaj obu postaci w jednym folderze. Dla języka, którego pliku tam brakuje, aplikacja nie wraca do pobierania. - Licencjonowanie: jeśli wprowadzisz klucz licencyjny, klucz i identyfikator urządzenia są wysyłane do Polar.sh w celu aktywacji, a mniej więcej co 7 dni w celu ponownej weryfikacji. Aktywacja przesyła też platformę systemu i wersję aplikacji.
- Pobieranie modeli wykrywania: gdy preset wymaga modelu, którego nie ma jeszcze na urządzeniu, pliki są pobierane. Presety secure, legal i medical potrzebują modelu nym (około 376 MB). Presety legal i medical potrzebują ponadto modelu OPF (około 917 MB), a preset secure potrzebuje go dla tekstu innego niż polski. Dla tekstu polskiego presety legal i medical potrzebują także modelu GLiNER2 dla polskiego (około 395 MB). Wszystkie trzy pochodzą z models.audior.app, naszego własnego magazynu na Cloudflare R2, a modele nym i OPF wracają do Hugging Face, gdy ten host jest nieosiągalny, odpowiada błędem lub zwraca inne bajty. Model GLiNER2 nie ma rezerwy. Każdy plik jest po pobraniu sprawdzany względem ustalonego rozmiaru i skrótu SHA-256. Nie są wysyłane żadne dane z dokumentów, ale jeśli ustawiona jest zmienna środowiskowa
HF_TOKEN, trafia ona do Hugging Face jako token bearer przy pobraniu zapasowym. Preset developer korzysta wyłącznie z rozpoznawania wzorców i niczego nie pobiera. - Lista modeli Ask AI i sprawdzanie klucza API: gdy selektor modeli Ask AI nie ma listy w pamięci podręcznej (lista jest przechowywana przez godzinę) albo gdy ją odświeżysz, aplikacja pobiera listę modeli z OpenRouter, z Twoim kluczem API OpenRouter, jeśli go zapisałeś lub zapisałaś. Test klucza OpenRouter w Ustawieniach wysyła ten klucz do OpenRouter. Nie są wysyłane dane z dokumentów. Jeśli nie skonfigurujesz OpenRouter, te żądania nie występują.
- Ollama: aplikacja łączy się wyłącznie z Ollamą na tym komputerze. Dla Ollamy akceptuje tylko adres pętli zwrotnej (localhost, 127.x.x.x lub ::1) i odrzuca każdy inny. Sprawdza go przy zapisie, przy każdym uruchomieniu usuwa zapisany adres spoza pętli zwrotnej i sprawdza go ponownie przed każdym uruchomieniem OCR, ponieważ OCR widzi oryginalny, niezamaskowany dokument. Są to zapytania o status, wersję i listę modeli, pobieranie i usuwanie modeli, obrazy stron przy OCR przez Ollamę oraz prompt z zamaskowanym tekstem przy Ask AI przez Ollamę. Sprawdzanie statusu uruchamia się automatycznie za każdym razem, gdy otwierasz Ustawienia lub panel Ask AI, także jeśli nigdy nie używasz Ollamy, i nie ma ustawienia, które by je wyłączało. Wszystkie te żądania trafiają pod ten adres pętli zwrotnej.
- OCR: nic nie opuszcza Twojego urządzenia. OCR działa wyłącznie lokalnie: za pomocą wbudowanego w aplikację silnika Tesseract (domyślnie) lub Ollamy na tym komputerze. OCR w chmurze nie istnieje, a obrazy stron nigdy nie są wysyłane do dostawcy chmurowego.
- Ask AI i pakiety promptów (opcjonalnie): wybrany prompt wraz z zamaskowanym tekstem projektu trafia do OpenRouter (z Twoim kluczem API), do Ollamy na tym komputerze, na chatgpt.com przez link zawierający ten tekst albo tam, gdzie wkleisz skopiowany prompt. Co zawiera ten tekst, opisuje następna sekcja.
- Raporty o awariach i analityka użycia (opt-in): domyślnie wyłączone. Po wyrażeniu zgody w oknie zgody lub w Ustawieniach Sentry otrzymuje raporty o awariach (komunikaty błędów i ślady stosu, z losowym identyfikatorem instalacji) a Aptabase zdarzenia użycia. Treść dokumentów nie jest celowo dołączana. W procesie głównym tekst błędu (komunikat, stos, ślad nawigacji, tagi) przechodzi przez ścisły filtr, który zastępuje ścieżki, adresy e-mail, numery IBAN, długie liczby i tekst w cudzysłowie oraz każde słowo, które nie należy do własnych komunikatów aplikacji, znakiem podkreślenia; raportowanie awarii w oknie aplikacji oczyszcza tylko ścieżki plików, więc inny tekst może stamtąd zostać wysłany. Filtr jest siatką bezpieczeństwa, nie gwarancją. Nazwy i wartości tekstowe zdarzeń użycia są sprawdzane i skracane przed wysłaniem. Cofnięcie zgody zatrzymuje nowe zdarzenia użycia i nowe raporty awarii procesu głównego; raporty już zakolejkowane mogą jeszcze zostać wysłane, a raportowanie awarii w oknie aplikacji działa do ponownego uruchomienia.
- Opinie (opcjonalnie): po wysłaniu formularza opinii nasz zespół otrzymuje przez webhook Slacka Twoje odpowiedzi i wybory z formularza (część pól tekstowych jest skracana, a rozpoznane wrażliwe ciągi zastępowane), znacznik czasu wysłania, wersję aplikacji, platformę i wersję systemu, nazwę skonfigurowanego dostawcy OCR oraz informację, czy istnieje plik licencji. Przy zgłoszeniach błędów pole "dołącz logi" jest domyślnie zaznaczone. Formularz pokazuje linie dziennika przed wysłaniem, a pokazany tekst jest tekstem wysyłanym: tylko wpisy ostrzeżeń i błędów zapisane przez wersję czyszczącą treść, najwyżej 20 wpisów i 2900 znaków. Każda linia przechodzi przez ścisły filtr (zastępowane są ścieżki, adresy e-mail, numery IBAN, długie liczby i tekst w cudzysłowie oraz każde słowo, które nie należy do własnych komunikatów aplikacji). Aplikacja zapisuje wpisy jako stałe komunikaty z liczbami i kodami, nie jako wolny tekst. To zabezpieczenie, nie gwarancja: słowo z dokumentu, które jest też własnym słowem aplikacji, może przejść. Tekst wpisany w formularzu jest oczyszczany tak samo. Odznacz pole, jeśli nie chcesz wysyłać żadnych linii dziennika. Jeśli w aplikacji nie skonfigurowano adresu webhooka, nic nie jest wysyłane.
- Aktualizacje: aplikacja sprawdza GitHub Releases około 10 sekund po każdym uruchomieniu i na żądanie, a aktualizacje pobiera automatycznie. Żądania zawierają platformę i losowy identyfikator aktualizacji, a pobranie aktualizacji może ujawnić, której wersji używasz. Dotyczy to każdej kompilacji wydaniowej, także przenośnej (portable), i nie ma ustawienia, które by to wyłączało. W spakowanych kompilacjach deweloperskich publikowanie jest wyłączone.
Każde żądanie opuszczające Twój komputer ujawnia serwerowi, który je odbiera, Twój adres IP (lub adres Twojego VPN-a albo proxy).
Identyfikator urządzenia to pseudonimowy odcisk sprzętowy (skrót adresów MAC Twoich kart sieciowych lub losowy identyfikator), a nie Twoje imię i nazwisko ani adres e-mail. Służy do egzekwowania limitów wersji próbnej i powiązania licencji z urządzeniem.
Co Otrzymuje Dostawca AI z Ask AI
Ask AI wysyła Twój prompt oraz zamaskowany tekst. Nie jest to tekst bezpieczny z założenia:
- Fragmenty, które odrzuciłeś lub odrzuciłaś, pozostają widoczne, chyba że pokrywa je inna maska.
- Dane osobowe, których detektory nie wykryły, są wysyłane bez zmian.
- Znaczniki zastępcze, takie jak
<PRIVATE_PERSON_1>, to pseudonimy, a nie anonimizacja. Pasujące, znormalizowane wartości tej samej kategorii dzielą znacznik, a niektóre formy odmienione dzielą znacznik formy źródłowej. Fragmenty połączonych wykryć i fragmenty dodane ręcznie dostają własne numery. Powtarzające się znaczniki pokazują więc dostawcy, jak aplikacja pogrupowała wzmianki. Nie jest to wiarygodna tożsamość ani liczba osób, ale nadal sugeruje, ilu mniej więcej różnych osób, numerów telefonów lub kont dotyczy dokument. - Wszystko wokół znaczników (role, daty, miejsca, zdarzenia i każdy szczegół niewykryty jako PII) trafia do dostawcy w oryginalnej postaci.
Przeczytaj zamaskowany tekst przed wysłaniem. Wykrywanie bywa niepełne, zależnie od presetu i języka. Przy wysokim ocenianym ryzyku wysyłka przez OpenRouter, skopiowanie promptu i otwarcie linku ChatGPT wymagają potwierdzenia, a przy Ollamie na tym komputerze aplikacja o nic nie pyta. Samo wysokie ryzyko nie blokuje wysyłki po potwierdzeniu, ale Ask AI jest niedostępne, gdy wykrywanie jest oznaczone jako niepełne lub niedostępne.
Wbudowane OCR ocenia każdą zeskanowaną stronę, którą odczytuje. Jeśli strona zostanie oceniona jako słaba lub nieczytelna, Ask AI i eksport zamaskowanego tekstu proszą o potwierdzenie, że ją obejrzano, a proces główny odmawia eksportu, dopóki tego nie zrobisz; potwierdzenie dotyczy tekstu tej strony i traci ważność, gdy strona zostanie odczytana ponownie. Ocena jest siatką bezpieczeństwa z ograniczeniami: nie obejmuje stron odczytanych przez Ollamę (bez wyniku pewności), dokumentów, które nie wymagały OCR, ani starszych projektów, a dobra ocena nie dowodzi, że odczytano wszystko na stronie, ponieważ tekst odrzucony przez analizę strony nie jest liczony.
Usługi Chmurowe Podmiotów Trzecich
Oryginalny, niezamaskowany dokument nigdy nie trafia do dostawcy chmurowego: ekstrakcja tekstu i OCR działają na Twoim urządzeniu (OCR za pomocą wbudowanego silnika Tesseract lub Ollamy na tym komputerze; OCR w chmurze nie istnieje). Do dostawcy chmurowego może trafić wyłącznie zamaskowany tekst, który zdecydujesz się wysłać przez Ask AI. Żądania do OpenRouter idą bezpośrednio z Twojego urządzenia, z kluczem API, który wprowadziłeś lub wprowadziłaś, i nie przechodzą przez serwer Maskeno; lokalną alternatywą jest model Ollama na tym komputerze. Link do ChatGPT otwiera chatgpt.com (OpenAI), a pobieranie modeli wykrywania, pobieranie danych językowych OCR, aktualizacje, licencje i opinie trafiają odpowiednio do Hugging Face, jsDelivr, GitHub, Polar.sh i Slacka. Korzystanie z tych usług podlega ich politykom prywatności.
Przechowywanie Danych na Urządzeniu
Baza danych projektów (SQLite3 Multiple Ciphers, ChaCha20-Poly1305, nie format SQLCipher) jest szyfrowana. Jej klucz leży w pliku db.key i jest chroniony przez safeStorage Electrona: DPAPI w Windows (każdy program działający na Twoim koncie Windows może go odszyfrować), Keychain w macOS, a w Linuksie usługa sekretów systemu. Jeśli safeStorage jest niedostępny, klucz zapisywany jest otwartym tekstem, a w dzienniku pojawia się tylko ostrzeżenie. Klucze API i klucz licencyjny używają tego samego mechanizmu. Gdy jest niedostępny, klucze API są zapisywane otwartym tekstem (Ustawienia pokazują wtedy ostrzeżenie), a klucz licencyjny jest jedynie zakodowany w base64, co nie jest szyfrowaniem. Zwykłe żądania wysyłają zapisany klucz bezpośrednio do wybranego dostawcy, z pominięciem serwera Maskeno. Czyszczenie opinii i raportów błędów nie gwarantuje usunięcia każdego poświadczenia z tekstu dowolnego.
Pobrane pliki modeli i dane językowe OCR to publiczne pliki do pobrania, bez treści dokumentów. Aplikacja ich nie szyfruje, a "Zresetuj wszystkie dane" ich nie usuwa. Modele wykrywania leżą w domyślnym folderze pamięci podręcznej biblioteki transformers.js: w folderze .cache wewnątrz folderu pakietu biblioteki, wśród plików aplikacji. Aplikacja nie ustawia innego miejsca. Pliki językowe OCR (pol.traineddata, eng.traineddata i tak dalej) leżą w folderze o nazwie maskeno-tessdata wewnątrz folderu tymczasowego systemu operacyjnego, który system lub program czyszczący może opróżnić. Aplikacja pobiera je wtedy ponownie przy następnej potrzebie, chyba że ustawiono TESSDATA_PATH. Gdy ustawiono TESSDATA_PATH, aplikacja trzyma dodatkowo kopie plików odczytanych z tego folderu w podfolderze maskeno-tessdata, którego nazwa to src- i dwanaście znaków szesnastkowych.
Klucze API, jakość odczytu i logi: Ustawienia przechowują tylko Twój klucz OpenRouter. Klucze, które wcześniejsze wersje zapisały dla dostawców, z których aplikacja już nie korzysta (ElevenLabs, Resemble, Gemini, OpenAI i Anthropic), są usuwane z pliku ustawień jednorazowo, przy pierwszym uruchomieniu tej wersji; jeśli usunięcie się nie powiedzie, jest ponawiane przy kolejnym uruchomieniu. Dla każdej zeskanowanej strony odczytanej przez wbudowane OCR baza danych przechowuje ponadto podsumowanie jakości odczytu (ocenę, średnią pewność, liczbę słów i zakresy znaków wątpliwych słów, bez tekstu) oraz chwilę, w której ją potwierdzono. Dziennik aplikacji powstaje ze stałej listy zdarzeń (stałe komunikaty z liczbami, odwołaniami i kodami). Aplikacja jest zbudowana tak, aby nie zapisywać nazw plików, ścieżek, tekstu dokumentów ani, przy operacjach mogących obsługiwać dokument, komunikatów błędów, a tekst, którego nie kontroluje, przechodzi najpierw przez filtr. To zasada projektowa poparta testami, nie gwarancja; wpisy starszych wersji mogą zawierać więcej. Dziennik awarii w folderze domowym zawiera dla błędu klasę, kod i pozycje wewnątrz aplikacji, bez komunikatu, oraz identyfikator instalacji.
Nie są szyfrowane: obrazy stron, kopie zaimportowanych plików źródłowych, dziennik aplikacji, metadane pliku licencji, pliki identyfikatora urządzenia i identyfikatora aktualizacji, plik stanu wersji próbnej (czytelny tekst chroniony przed manipulacją), plik pamięci współdzielonej SQLite oraz w folderze domowym dziennik awarii, dziennik czasu uruchamiania i dziennik debugowania przy włączonym debugowaniu uruchamiania. Sam plik ustawień nie jest zaszyfrowany, choć poszczególne klucze w nim są.
Przechowywanie i Usuwanie Danych
- Usunięcie projektu usuwa jego wiersze z bazy i folder z obrazami stron, ale starsze kopie projektu pozostają w zaszyfrowanych kopiach zapasowych, dopóki nie zastąpią ich nowsze. Pliki skopiowane do folderu importu nie są usuwane.
- "Zresetuj wszystkie dane" w Ustawieniach usuwa bazę wraz z plikami WAL i pamięci współdzielonej, kopie zapasowe, plik ustawień (z kluczami API), próbki głosu i plik licencji. Pozostają obrazy stron, zaimportowane pliki, dzienniki,
db.key, pliki z identyfikatorem urządzenia i identyfikatorem aktualizacji, kopie odzyskiwaniaMaskeno.db.corrupted-*z plikami towarzyszącymi (mogą nadal zawierać dane projektów), pobrane pliki modeli i dane językowe OCR, dzienniki w folderze domowym oraz plik stanu wersji próbnej, który celowo leży poza folderem danych użytkownika, aby ponowna instalacja nie resetowała wersji próbnej. Usuń je samodzielnie, jeśli chcesz się ich pozbyć. - Nasz serwer próbny przechowuje identyfikator urządzenia, liczniki użycia, platformę systemu i wersję aplikacji oraz czasy zapisu rekordu. Aplikacja nie wyświetla obecnie identyfikatora urządzenia. Aby zażądać usunięcia rekordu, napisz na [email protected].
- Dane licencji są obsługiwane przez Polar.sh zgodnie z ich polityką prywatności.
Analityka Strony Internetowej
Ta strona ładuje skrypt Plausible Analytics. Co zbiera, opisuje polityka danych Plausible.
Twoje Prawa na Mocy RODO
Jako osoba, której dane dotyczą w Unii Europejskiej, masz prawa dostępu, sprostowania, usunięcia, przenoszenia danych, sprzeciwu oraz wycofania zgody. Opisane przepływy danych to rekord wersji próbnej, krótkotrwałe wpisy limitu żądań według adresu IP, to, co prześlesz w formularzu opinii, raporty o awariach i użyciu, na które wyraziłeś lub wyraziłaś zgodę, analityka strony internetowej oraz dane licencji w Polar.sh. Skontaktuj się z nami pod adresem [email protected].
Kontakt
- Email: [email protected]
- GitHub: Otwórz issue