Privacy Filter: виявлення PII у текстах застосунків на Laravel

Перекладено ШІ 0 Laravel News 23 червня, 2026

Як ефективно виявляти персональні дані в текстах за допомогою Laravel? Пакет Privacy Filter пропонує потужний API для автоматичного пошуку та маскування конфіденційної інформації.

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

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

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

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);

# Тестування через fakes

Оскільки запуск бінарного файлу та завантаження моделі сповільнюють тести, 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. Щоб налаштувати шляхи до файлів, таймаути або джерела завантаження, опублікуйте конфігурацію:

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

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

Вихідний код та документація доступні на GitHub.

Популярні

Інше, що варто прочитати

31 Оновлено 23 червня, 2026

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

26 Оновлено 23 червня, 2026

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

22 Оновлено 23 червня, 2026

Створення MCP-серверів на PHP

Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту