Presidio Anonymizer包 - 用期望的值替换分析过的文本。
项目描述
Presidio匿名化器
描述
Presidio匿名化器是一个基于Python的模块,用于使用期望的值匿名化检测到的PII文本实体。
在Azure中部署Presidio匿名化器
使用以下按钮将Presidio匿名化器部署到您的Azure订阅。
Presidio-Anonymizer 包包含匿名化工具和去匿名化工具。
- 匿名化工具 用于将 PII 实体文本替换为其他值。
- 去匿名化工具 用于恢复匿名化操作。例如,解密加密文本。
匿名化工具
Presidio 匿名化工具默认包含以下匿名化工具
-
替换:用所需值替换 PII。
- 参数:
new_value
- 用给定值替换现有文本。如果未提供或为空,默认行为为:<entity_type> 例如:<PHONE_NUMBER>
- 参数:
-
删除:完全从文本中删除 PII。
- 参数:无
-
散列:使用 sha256、sha512 或 md5 对 PII 进行散列。
- 参数
hash_type
:设置散列类型。可以是sha256
、sha512
或md5
。默认散列类型为sha256
。
- 参数
-
屏蔽:用给定字符序列替换 PII。
-
参数
chars_to_mask
:要替换的 PII 中字符的数量。masking_char
:要替换成的字符。from_end
:是否从 PII 的末尾开始屏蔽。
-
-
加密:加密 PII 实体文本并用加密字符串替换原始文本。
-
自定义:用对 PII 字符串执行函数的结果替换 PII。
- 参数:
lambda
:对 PII 字符串执行的 Lambda 函数。Lambda 返回类型必须是字符串。
- 参数:
匿名化工具 默认使用高级加密标准 (AES) 作为加密算法,也称为 Rijndael。
- 参数
key
:用于加密的加密密钥。密钥长度需要为 128、192 或 256 位,以字符串格式。
注意:如果未提供默认匿名化工具,则所有实体的默认匿名化工具为 "替换"。替换值将是实体类型,例如:<PHONE_NUMBER>
处理实体之间的重叠
由于输入文本可能包含重叠的 PII 实体,存在不同的匿名化场景
- 无重叠(单个 PII):当实体跨度之间没有重叠时,Presidio 匿名化工具使用给定或默认匿名化操作员对 PII 文本实体进行匿名化和替换。
- PII 实体跨度完全重叠:
将采用具有更高分数的 PII。在分数相同的 PIIs 之间,选择是任意的。 - 一个 PII 包含在另一个中:即使分数较低,Presidio 匿名化工具也将使用包含文本较大的 PII。
- 部分交叉:Presidio 匿名化工具将单独匿名化每个实体,并将返回匿名化文本的连接。例如:对于以下文本
假设一个实体是I'm George Washington Square Park.
George Washington
,另一个是Washington State Park
,并且假设默认匿名化工具,则结果将是I'm <PERSON><LOCATION>.
重叠 PII 场景的附加示例
文本
My name is Inigo Montoya. You Killed my Father. Prepare to die. BTW my number is:
03-232323.
- 无重叠:假设只有
Inigo
被识别为 NAMEMy name is <NAME> Montoya. You Killed my Father. Prepare to die. BTW my number is: 03-232323.
- 完全重叠:假设号码被识别为 PHONE_NUMBER 且得分为 0.7,以及作为 SSN 的得分为 0.6,较高的分数将被计算
My name is Inigo Montoya. You Killed my Father. Prepare to die. BTW my number is: < PHONE_NUMBER>.
- 一个 PII 包含在另一个中:假设 Inigo 被识别为 FIRST_NAME,而 Inigo Montoya 被识别为 NAME,则将使用较大的一个
My name is <NAME>. You Killed my Father. Prepare to die. BTW my number is: 03-232323.
- 部分交叉:假设号码 03-2323 被识别为 PHONE_NUMBER,而 232323 被识别为 SSN
My name is Inigo Montoya. You Killed my Father. Prepare to die. BTW my number is: < PHONE_NUMBER><SSN>.
去匿名化工具
Presidio 去匿名化工具目前包含一个操作符
- 解密:用解密文本替换加密文本。使用高级加密标准 (AES) 作为加密算法,也称为 Rijndael。
- 参数
key
- 用于加密的加密密钥。密钥长度需要为 128、192 或 256 位,以字符串格式。
- 参数
请注意:您可以使用 "DEFAULT" 作为操作符密钥来定义所有实体上的操作符。
安装
作为 Python 包
要安装 Presidio 匿名化工具,运行以下命令,最好在虚拟环境中运行
pip install presidio-anonymizer
入门
from presidio_anonymizer import AnonymizerEngine
from presidio_anonymizer.entities import RecognizerResult, OperatorConfig
# Initialize the engine with logger.
engine = AnonymizerEngine()
# Invoke the anonymize function with the text,
# analyzer results (potentially coming from presidio-analyzer) and
# Operators to get the anonymization output:
result = engine.anonymize(
text="My name is Bond, James Bond",
analyzer_results=[
RecognizerResult(entity_type="PERSON", start=11, end=15, score=0.8),
RecognizerResult(entity_type="PERSON", start=17, end=27, score=0.8),
],
operators={"PERSON": OperatorConfig("replace", {"new_value": "BIP"})},
)
print(result)
本例使用匿名化引擎加密的PII实体输出,并将其解密回原始文本
from presidio_anonymizer import DeanonymizeEngine
from presidio_anonymizer.entities import OperatorResult, OperatorConfig
# Initialize the engine with logger.
engine = DeanonymizeEngine()
# Invoke the deanonymize function with the text, anonymizer results and
# Operators to define the deanonymization type.
result = engine.deanonymize(
text="My name is S184CMt9Drj7QaKQ21JTrpYzghnboTF9pn/neN8JME0=",
entities=[
OperatorResult(start=11, end=55, entity_type="PERSON"),
],
operators={"DEFAULT": OperatorConfig("decrypt", {"key": "WmZq4t7w!z%C&F)J"})},
)
print(result)
作为Docker服务
在presidio/presidio-anonymizer文件夹中运行
docker-compose up -d
HTTP API
遵循API规范获取匿名化REST API的详细信息
项目详情
关闭
presidio_anonymizer-2.2.355-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c85f5f155fcb66aff8e962fcf3984552a5512ab34bb1a433b1a52193e635c23f |
|
MD5 | 1620a33a65d527023d6eb6967521977f |
|
BLAKE2b-256 | a4740501c714dd0bc7d986cd2c2d9155c2ba8db6ade49e362281ec0e389e6de3 |