Rynek
· 7 min czytania

Narzędzia do zaczerniania tworzone dla programistów

Autor: Amine Gaaliche · szkic przygotowany z pomocą Claude'a, sprawdzony i poprawiony ręcznie

Większość narzędzi do zaczerniania powstaje z myślą o programistach. Przyjmują tekst i zakładają, że ktoś wcześniej zamienił stronę dokumentu w tekst. Nikt z ich twórców nie mówi, czyje to zadanie, a w kancelarii spada ono na osobę, która ma do tego najmniej środków.

Od czego zaczyna biblioteka

Presidio to dobry przykład, bo to solidne oprogramowanie. Projekt powstał w Microsofcie, a dziś rozwija go społeczność. Instalacja zaczyna się od pip install presidio-analyzer i pobrania modelu spaCy. Pierwsze wywołanie przyjmuje ciąg znaków i zwraca listę wyników z pozycjami.

Dla programisty to rozsądne podejście, bo jego dane są już tekstem: zgłoszenia, czaty, rekordy w bazie danych. Zespół inżynierów ma też czas na konfigurację: dobiera modele, pisze własne reguły rozpoznawania i dopisuje testy. Biblioteka jest skrojona właśnie na potrzeby takiego odbiorcy.

Krok przed pierwszym wywołaniem

Kancelaria nie ma ciągu znaków, tylko skan umowy, zdjęcie dowodu osobistego i PDF, który wydrukowano, podpisano i zeskanowano ponownie. Zanim cokolwiek trafi do biblioteki, ktoś musi zamienić te strony w tekst i zapisać, gdzie na stronie leży każde słowo.

Ten krok wymaga rozpoznawania tekstu (OCR), wyboru języka i rozdzielczości. Potem wyniki trzeba przenieść z powrotem na obraz, żeby zakryć właściwe piksele. Sam tekst z OCR mówi, co jest na stronie, ale nie mówi, gdzie to jest. Dokumentacja bibliotek zakłada, że ten krok został już wykonany.

Presidio ma osobny moduł do obrazów: pip install presidio-image-redactor. Wymaga silnika Tesseract zainstalowanego osobno. Według indeksu pakietów Snyk w październiku 2026 r. moduł ten pobierano około 2800 razy tygodniowo.

Na tle liczby skanów w kancelariach, biurach rachunkowych i szpitalach to niewiele. Moduł przyjmuje przy tym gotowy obraz, a zamiana wielostronicowego PDF w obrazy, wybór języka i sprawdzenie wyniku należą do wdrażającego.

Kto ponosi koszt przeoczenia

Błąd na tym etapie przechodzi bez żadnego komunikatu: gdy OCR nie odczyta strony, biblioteka dostaje pusty tekst i zwraca pustą listę. Plik wygląda na przetworzony, a nazwisko na skanie zostaje.

Programista ma pod ręką testy, logi i czas. Może dobrać rozdzielczość, sprawdzić odczyt na próbce i poprawić konfigurację. Prawnik z terminem na jutro nie ma żadnej z tych możliwości.

Przeoczenie zauważy dopiero odbiorca dokumentu. Odpowiedzialność za dane w dokumencie spoczywa na administratorze danych w rozumieniu RODO, a w kancelarii dochodzi jeszcze tajemnica adwokacka albo radcowska. Koszt przeoczenia ponosi więc ten, kto ma najmniejszy wpływ na to, czy do niego dojdzie.

Ten sam błąd popełniliśmy sami

W trzech miejscach przyjęliśmy w promptShield to samo założenie co inni twórcy takich narzędzi:

  1. Powierzchnię obrazu traktowaliśmy jako miarę jego znaczenia. Małe obrazy pomijaliśmy, a podpis lub pieczątka z nazwiskiem bywają małe.
  2. Kod wywoływał metodę, której nasza biblioteka PDF nie miała, a błąd trafiał tylko do logu na poziomie debugowania. W efekcie funkcja zwracała „brak obrazów” dla każdego pliku.
  3. Prostokąt narysowany ręcznie na skanie niczego nie obejmował: strona nie miała warstwy tekstu, więc w zaznaczeniu nie było żadnych słów.

Żaden z tych błędów nie powodował awarii: aplikacja działała, a wyniki wyglądały poprawnie, więc trudno było te błędy zauważyć.

Każdy wynikał z założenia, że strona jest już tekstem. Wszystkie trzy poprawiliśmy, ale nie zakładamy, że były jedyne, dlatego wyniki wciąż trzeba przeglądać.

Jak to działa teraz

Aplikacja renderuje zeskanowaną stronę w 300 dpi i uruchamia Tesseract z językiem dokumentu oraz angielskim. Dane osobowe lokalizuje jako obszary obrazu i zakrywa odpowiadające im piksele. Pod spodem odbudowuje warstwę tekstu, którą można przeszukiwać.

Szczegóły opisujemy w tekście o anonimizacji zeskanowanych PDF-ów i obrazów. Skan odczytany z niewłaściwym pakietem językowym daje tekst pełen błędów, a aplikacja o tym nie ostrzega, więc język dokumentu trzeba ustawić świadomie.

Zaczernianie usuwa treść ze strony, zamiast rysować na niej prostokąt. Eksport zmienia też ukryte części PDF, takie jak teksty alternatywne, metadane i pola formularzy. Zakodowana wartość dostaje tam swój kod, a zaczerniona neutralny znacznik. Miniatury stron sprzed zaczernienia są usuwane.

Wykrywanie działa warstwowo: wzorce dla danych o stałym formacie, model wykrywania nazw i opcjonalny model językowy, domyślnie wyłączony. Żaden lokalny model nie znajduje wszystkiego. Porównanie z Presidio omawiamy szerzej w tekście o tym, dlaczego napisaliśmy własny silnik.

Dokument nie opuszcza komputera ani w aplikacji na komputer, ani w bezpłatnej aplikacji w przeglądarce.

Najczęstsze pytania

Czy Presidio obsługuje zeskanowane dokumenty?

Presidio ma osobny moduł do obrazów, który wymaga osobno zainstalowanego Tesseracta. Zamiana plików PDF w obrazy i wybór języka należą do wdrażającego.

Jak sprawdzić, czy skan został zanonimizowany?

Trzeba obejrzeć każdą stronę po przetworzeniu i porównać zaczernione obszary z danymi na skanie. Pusta lista wyników może oznaczać nieodczytany tekst, a nie dokument bez danych osobowych.

Czy w PDF wystarczy zakryć dane czarnym prostokątem?

Prostokąt narysowany na tekście nie usuwa go: tekst zostaje pod spodem i można go skopiować. Treść trzeba usunąć ze strony i z ukrytych części pliku.

Czy promptShield wykrywa wszystkie dane osobowe na skanach?

Tego nie gwarantujemy. Odczyt zależy od jakości skanu i pakietu językowego, dlatego aplikacja wymaga przeglądu wyników przed pobraniem pliku.

Czy ten tekst był przydatny? Prosimy dać nam znać.

Udostępnij