已安装transformers仍提示Presidio Transformers引擎不可用求助
Presidio Transformers引擎配置报错解决
问题
在Mac系统的VS Code虚拟环境Jupyter Notebook中运行Presidio的Transformers引擎示例代码时,已安装transformers包且导入无报错,但使用config.yaml配置文件时触发「NLP engine 'transformers' is not available」错误,移除配置文件则代码可正常运行。
运行代码
from presidio_analyzer import AnalyzerEngine, RecognizerRegistry from presidio_analyzer.nlp_engine import NlpEngineProvider conf_file = 'config.yaml' provider = NlpEngineProvider(conf_file=conf_file) nlp_engine = provider.create_engine() analyzer = AnalyzerEngine( nlp_engine=nlp_engine, supported_languages=["en"] ) results_english = analyzer.analyze(text="My name is Morris", language="en") print(results_english)
错误信息
ValueError Traceback (most recent call last) Cell In[3], line 6 4 # Create NLP engine based on configuration 5 provider = NlpEngineProvider(conf_file=conf_file) ----> 6 nlp_engine = provider.create_engine() 8 # Pass the created NLP engine and supported_languages to the AnalyzerEngine 9 analyzer = AnalyzerEngine( 10 nlp_engine=nlp_engine, 11 supported_languages=["en"] 12 ) File ~/Projects/pii/lib/python3.12/site-packages/presidio_analyzer/nlp_engine/nlp_engine_provider.py:81, in NlpEngineProvider.create_engine(self) 79 nlp_engine_name = self.nlp_configuration["nlp_engine_name"] 80 if nlp_engine_name not in self.nlp_engines: ----> 81 raise ValueError( 82 f"NLP engine '{nlp_engine_name}' is not available. " 83 "Make sure you have all required packages installed" 84 ) 85 try: 86 nlp_engine_class = self.nlp_engines[nlp_engine_name] ValueError: NLP engine 'transformers' is not available. Make sure you have all required packages installed
配置文件内容(config.yaml)
nlp_engine_name: transformers models: - lang_code: en model_name: spacy: en_core_web_sm transformers: StanfordAIMI/stanford-deidentifier-base ner_model_configuration: labels_to_ignore: - O aggregation_strategy: simple # "simple", "first", "average", "max" stride: 16 alignment_mode: strict # "strict", "contract", "expand" model_to_presidio_entity_mapping: PER: PERSON LOC: LOCATION EMAIL: EMAIL PHONE: PHONE_NUMBER low_confidence_score_multiplier: 0.4 low_score_entity_names: - ID
解决方案
这个错误的核心原因是:presidio-analyzer本身不包含Transformers引擎的实现,仅安装transformers包不足以让Presidio识别到该引擎,必须额外安装专门的Presidio Transformers扩展包:
- 激活当前代码使用的虚拟环境,执行以下安装命令:
pip install presidio-transformers
- 安装完成后,重启Jupyter Notebook内核(或重新运行代码),即可正常加载配置文件中的Transformers引擎。
额外检查项:
- 确认安装命令是在当前虚拟环境中执行的,避免安装到全局Python环境导致无法识别
- 若仍有问题,可检查
presidio-transformers的版本是否与presidio-analyzer兼容,建议安装对应版本的包
内容的提问来源于stack exchange,提问作者NeoFahrenheit
相关产品推荐
相关产品推荐

