Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 23 червня 2026

Privacy Filter: виявлення персональних даних у тексті з Laravel

Privacy Filter - це Laravel-пакет, який виявляє приватні сутності: імена, електронні адреси та іншу персональну інформацію у довільному тексті. Він обгортає бінарний файл командного рядка privacy-filter.cpp - GGML-движок інференсу для моделей класифікації токенів privacy-filter від OpenAI - і надає результати через PHP API.

Класифікація тексту на сутності

Основна точка входу - метод entities(), який прогоняє модель через рядок і повертає екземпляри Entity. Кожна сутність містить свій тип, знайдений текст, початкове та кінцеве байтове зміщення, а також оцінку впевненості:

use DirectoryTree\PrivacyFilter\Facades\PrivacyFilter;

$entities = PrivacyFilter::entities('Contact John Doe at jdoe@example.com.');

foreach ($entities as $entity) {
    echo $entity->type; // private_email
    echo $entity->text; // jdoe@example.com
}

Оскільки зміщення є точними UTF-8 байтовими позиціями, ви можете прив'язати кожну виявлену сутність до її розташування в оригінальному тексті, замість того щоб покладатися лише на збіг рядків.

Пороги впевненості

Класифікації за замовчуванням використовують поріг впевненості 0.5. Ви можете підвищити або знизити його для кожного виклику, щоб збалансувати повноту охоплення та точність - вищий поріг повертає менше, але більш певних сутностей:

$entities = PrivacyFilter::entities(
    text: 'Contact John Doe at jdoe@example.com.',
    threshold: 0.75,
);

Редагування виявленого тексту

Пакет виявляє сутності, а те, що ви з ними робите - ваша справа. Процес редагування є операцією reduce над поверненими сутностями:

$redacted = collect($entities)->reduce(function (string $text, $entity) {
    return str_replace($entity->text, '[redacted]', $text);
}, $text);

Фейкові класифікації в тестах

Запуск бінарного файлу та завантаження моделі в тестовому середовищі відбувається повільно, тому Privacy Filter постачається з методом fake(), який повертає заздалегідь визначені сутності без виклику бінарного файлу:

use DirectoryTree\PrivacyFilter\Entity;
use DirectoryTree\PrivacyFilter\Facades\PrivacyFilter;

PrivacyFilter::fake([
    new Entity(type: 'private_email', start: 20, end: 36, score: 0.98),
]);

Ваш код під тестом отримає ці сутності так, ніби їх згенерувала модель.

Встановлення та налаштування

Встановіть пакет через Composer, потім запустіть інсталятор, щоб завантажити скомпільований бінарний файл для вашої операційної системи та необхідну GGUF-модель:

composer require directorytree/privacy-filter
php artisan privacy-filter:install

Попередньо зібрані бінарні файли для Linux, macOS (включно з ARM64) та Windows розповсюджуються через PrivacyFilterBinaries. Передайте параметр --force, щоб перезаписати існуючі файли.

Щоб налаштувати шлях до бінарного файлу, шлях до моделі, таймаут процесу, URL моделі або джерело релізу, опублікуйте конфігураційний файл:

php artisan vendor:publish --tag=privacy-filter-config

Рекомендації щодо продакшену

Кожна класифікація завантажує модель у пам'ять, тому пакет рекомендує запускати класифікації на виділених queue workers у продакшені, щоб зберігати передбачуване споживання пам'яті.

Вихідний код та документацію можна знайти на GitHub.

56

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Filament v5.10.0
Новини 12 жовтня 2026

Filament v5.10.0: сітка в rich editor, скелетони таблиць і десятки виправлень

Вийшов Filament v5.10.0: елементи керування сіткою в rich editor, допоміжний контент для віджетів-графіків, скелетони завантаження таблиць, submitOnCompletion() для OneTimeCodeInput та багато виправлень авторизації, доступності й стану.

15
Laravel AI SDK на практиці
Новини 09 жовтня 2026

Laravel AI SDK на практиці: агент, що стоїть за There There

Фрік Ван дер Гертен розповідає, як у Spatie побудували AI-шар хелпдеска There There на Laravel AI SDK: клас агента, інструменти з типізованою JSON-схемою та делегування роботи звичайним domain-діям.

11

Вакансії за темою

GGLUXOUTLET
10 днів тому

Senior+/Tech Lead Full-Stack WordPress Developer / Code Architect

Досвідчений Senior+/Tech Lead Full-Stack WordPress розробник для проєктування та розробки високонавантажених e-commerce рішень. Потрібні глибокі знання WordPress Core, WooCommerce, PHP 8.1+ з SOLID/ООП, React/Next.js для фронтенду, Python для автоматизації, DevOps (VPS, Docker, CI/CD) та AI-інтеграцій. Роль включає архітектуру, код-рев'ю, менторство і комунікацію з бізнесом. Мінімум 7 років досвіду, з них 3+ на WordPress/WooCommerce у високонавантажених проєктах.

Optimizee Group
31 день тому

Product Lead (Strategy + Full Stack)

Product Lead з відповідальністю за розробку та лідерство. Гібридна роль: 60% управління продуктом (дорожна карта, пріоритизація, аналітика) та 40% full stack розробки на PHP Laravel. Потрібен досвід розробника (5+ років), знання бекенду, баз даних, здатність приймати продуктові рішення та керувати командою. Основний стек: PHP 8.2+, Laravel 12, MySQL, Redis, Alpine.js, Livewire.

Пакети за темою

Pest

pestphp/pest

Тестовий фреймворк з лаконічним синтаксисом поверх PHPUnit: тести описуються функціями замість класів. Має паралельний запуск, тести архітектури, покриття і мутаційне тестування.

11,667 v5.1.1 3

Laravel Dusk

laravel/dusk

Браузерні тести з виразним API: керує справжнім Chrome через ChromeDriver, тож перевіряє і JavaScript, і те, що бачить користувач. Робить скріншоти невдалих тестів автоматично.

1,943 v8.6.0 13 1