Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас
Новини 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.

55

Коментарі

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

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

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

Документація Laravel українською: 103 сторінки і щоденна синхронізація Рекомендовано
Новини 07 серпня 2026

Документація Laravel українською: 103 сторінки і щоденна синхронізація

Відкриваємо український переклад документації Laravel 13.x - усі 103 сторінки, від маршрутизації до Passport. Переклад тримається в синхроні з laravel/docs автоматично: щоночі GitHub Action звіряє наші файли з апстрімом і перекладає лише ті секції, яких торкнувся diff. Текст машинний, вичитка триває.

6
dominantColor()
Новини 07 серпня 2026

Отримання домінантного кольору зображення в Laravel

Laravel 13.24 додав метод dominantColor() до вбудованого API для роботи із зображеннями. Він дозволяє витягти середній колір фото без сторонніх пакунків - ідеально для плейсхолдерів, заповнення letterbox-смуг та тонування карток.

2

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

Docudoodle

genericmilk/docudoodle

Генерування документації для вашого Laravel-додатку за допомогою OpenAI.

159 2.3.0 13 6