feat: интеграция LLAIM Legal NER как третьей ступени распознавания
- Подключение ru-legal-ner (ONNX) для юридических реквизитов: ИНН, ОГРН, СНИЛС, паспорт, телефон, email, банковский счёт, дата. - Отдельный проход LEGAL_CANDIDATE, чтобы не вытеснять кандидатов имён и адресов. - coversAny(policy) в Pipeline вместо проверки только FIO. - Нормализация цифровых ПД (ИНН/СНИЛС/карта/ОГРН) в свободной форме. - Фикс ложного срабатывания ФИО на аббревиатуре «ИНН» (PD_MARKERS). - Рефакторинг конструкторов NameCascade через record EngineConfig (Sonar S107).
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package ru.pdguard;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import ru.pdguard.config.SystemPolicy;
|
||||
import ru.pdguard.core.PayloadStore;
|
||||
import ru.pdguard.core.Pipeline;
|
||||
import ru.pdguard.detect.RuleRegistry;
|
||||
import ru.pdguard.mask.Masker;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
|
||||
/**
|
||||
* Нормализация цифровых ПД: находит ИНН/СНИЛС/карту/ОГРН(ИП) в свободной форме,
|
||||
* где жёсткий шаблон ломается на нестандартном разделителе.
|
||||
*/
|
||||
class NormalisedDigitsTest {
|
||||
|
||||
private final Pipeline pipeline =
|
||||
new Pipeline(new RuleRegistry(), new Masker(), new PayloadStore(1_000_000L, 30));
|
||||
|
||||
private void assertHidden(String text, String secret) {
|
||||
String masked = pipeline.process(text, UUID.randomUUID().toString(), SystemPolicy.DEFAULT);
|
||||
assertFalse(masked.contains(secret), "не замаскировано: «" + secret + "» в ответе «" + masked + "»");
|
||||
}
|
||||
|
||||
@Test
|
||||
void masksCardWithDots() {
|
||||
assertHidden("Карта 4111.1111.1111.1111 клиента", "4111.1111.1111.1111");
|
||||
}
|
||||
|
||||
@Test
|
||||
void masksCardWithSlashes() {
|
||||
assertHidden("Оплата картой 4111/1111/1111/1111 прошла", "4111/1111/1111/1111");
|
||||
}
|
||||
|
||||
@Test
|
||||
void masksCardWithMixedSeparators() {
|
||||
assertHidden("Номер карты 4111-1111 1111.1111 клиента", "4111-1111 1111.1111");
|
||||
}
|
||||
|
||||
@Test
|
||||
void masksInnWithDashes() {
|
||||
assertHidden("ИНН: 7703-0123-4550 плательщика", "7703-0123-4550");
|
||||
}
|
||||
|
||||
@Test
|
||||
void masksSnilsWithDots() {
|
||||
assertHidden("СНИЛС 112.233.445.95 застрахованного", "112.233.445.95");
|
||||
}
|
||||
|
||||
@Test
|
||||
void keepsNumberThatFailsChecksum() {
|
||||
String text = "Заказ 1234 5678 9012 3456 отгружен";
|
||||
org.junit.jupiter.api.Assertions.assertEquals(text,
|
||||
pipeline.process(text, UUID.randomUUID().toString(), SystemPolicy.DEFAULT));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user