OpenMed:开源医疗AI平台
原标题:maziyarpanahi/openmed
Python★ 1,610 stars+165 今日
速览
该项目是一个开源的医疗AI框架,专注于为医疗保健行业提供智能化的AI工具与服务。它通过整合先进的机器学习技术,帮助开发者快速构建和部署医疗场景下的AI应用,适用于辅助诊断、医疗数据分析等场景。
AI 深度解读
这是什么
OpenMed 是一个基于 Python 的开源医疗自然语言处理(NLP)工具库,由 maziyarpanahi 开发并托管在 GitHub 上。该项目旨在通过一行代码将非结构化的临床文本转化为结构化洞察,同时确保患者数据完全在本地设备(On-Device)处理,不依赖云端 API。
OpenMed 的核心优势在于其极高的部署灵活性和隐私安全性。它支持在 CPU、CUDA GPU、Apple Silicon(通过 MLX 加速)以及原生 iOS/macOS 应用(通过 OpenMedKit)上运行。项目包含 1,000 多个经过专门优化的生物医学和临床模型,支持 12 种语言,并严格遵循 Apache-2.0 许可证,实现了真正的“零锁定”(Zero Lock-in)。
解决的问题
在医疗 AI 应用中,开发者通常面临以下核心痛点,OpenMed 针对性地提供了本地化解决方案:
- 数据隐私与合规性风险:传统方案往往依赖云端 API 进行实体提取或去标识化,导致患者敏感数据(PHI/PII)离开本地网络,违反 HIPAA 等法规。OpenMed 强调 100% 本地运行,确保数据不出网。
- 厂商锁定与成本高昂:专有医疗 NLP 服务通常昂贵且绑定特定供应商。OpenMed 提供开源替代方案,允许用户在自己的基础设施上运行,无需支付 API 调用费用。
- 跨平台部署复杂性:医疗场景多样,从数据中心服务器到边缘设备(如 iPhone)。OpenMed 统一了后端逻辑,通过模型名称自动适配不同硬件(如在非 Apple 设备上自动回退到 PyTorch 检查点),简化了从 Python 到 Swift 原生应用的部署流程。
- PII 去标识化的准确性:传统正则表达式难以处理复杂的医疗实体(如日期、混合格式的 ID)。OpenMed 引入了智能实体合并(Smart Entity Merging)和基于 Faker 的格式保留伪造技术,提高了去标识化的质量和合规性。
核心功能
1. 临床实体提取 (Clinical NER)
OpenMed 拥有超过 1,000 个专门针对生物医学和临床领域微调的模型。
- 高精度识别:能够识别疾病、药物、症状等实体。
- 本地化部署:无需 API Key,直接在本地加载模型(如
disease_detection_superclinical)。 - 示例代码:
from openmed import analyze_text result = analyze_text( "Patient started on imatinib for chronic myeloid leukemia.", model_name="disease_detection_superclinical", ) for entity in result.entities: print(f"{entity.label:<12} {entity.text:<28} {entity.confidence:.2f}") # 输出: DISEASE chronic myeloid leukemia 0.98
2. 智能 PII 去标识化 (PII De-identification)
提供 HIPAA 合规的隐私过滤功能,支持所有 18 种 Safe Harbor 标识符。
- 智能合并:防止分词器将完整实体(如日期
01/15/1970)碎片化。 - 多种去标识方法:
mask: 替换为[NAME],[DATE]。replace: 使用 Faker 生成符合本地格式的真实感伪造数据(支持 CPF, CNPJ, BSN 等特定国家 ID 格式)。hash: 加密哈希处理。shift_dates: 日期偏移处理。
- 隐私过滤器家族:基于 OpenAI Privacy Filter 架构(稀疏 MoE Transformer),提供不同权重变体(如 Nemotron, MLX 版本),统一通过
extract_piiAPI 调用。
3. 多语言支持
支持英语、简体中文、西班牙语、法语、德语、意大利语、葡萄牙语、荷兰语、阿拉伯语、印地语、泰卢固语、日语和土耳其语等 12 种语言,共 247 个 PII 检查点。
4. 跨平台运行时
- Python (Linux/macOS/Windows): 支持 CPU 和 CUDA。
- Apple Silicon: 通过 MLX 运行时加速,支持 CoreML 回退。
- iOS/macOS 原生: 通过 OpenMedKit (Swift Package) 直接在 App 中集成,实现离线 PII 检测和临床提取。
- Docker/REST: 提供 FastAPI 服务,支持请求验证、共享管道预加载和模型生命周期管理(加载/卸载)。
亮点 / 与同类相比
- 真正的本地优先 (Local-First):与依赖云端大模型 API 的竞品不同,OpenMed 的所有推理均在用户硬件上完成。这不仅降低了长期成本,还彻底消除了数据泄露风险。
- 统一的模型抽象层:开发者只需指定
model_name,OpenMed 会自动根据硬件环境选择最佳后端(PyTorch 或 MLX)。例如,在 Apple 设备上使用OpenMed/privacy-filter-mlx,在非 Apple 设备上会自动回退到匹配的 PyTorch 检查点。 - 丰富的医疗模型库:内置 1,000+ 经过策展的医疗模型,许多模型的性能优于专有堆栈,且覆盖了从通用 NER 到特定疾病检测的广泛场景。
- 先进的 PII 处理技术:
- Smart Merging:解决了传统 NLP 模型在处理复合实体(如带格式的电话号码或身份证号)时的碎片化问题。
- Locale-aware Fakes:生成的伪造数据符合特定地区的格式规范(如巴西 CPF、印度 Aadhaar),便于测试而不泄露真实数据。
- 极简的集成体验:
- Python:
pip install openmed - iOS: Swift Package Manager 一行依赖。
- REST: 一键启动 Docker 服务。
- Python:
适合谁用 / 上手
适合人群
- 医疗 AI 开发者:需要构建本地化、隐私合规的临床 NLP 应用。
- 医院/诊所 IT 部门:希望在不连接互联网的情况下,对电子病历(EMR)进行结构化处理或去标识化。
- 移动端开发者:需要在 iOS/macOS 应用中集成离线医疗实体提取或隐私过滤功能的开发者。
- 数据科学家:需要快速原型化医疗文本分析流程,且希望避免云 API 延迟和成本的用户。
上手指南
-
安装:
# 基础安装 (Hugging Face 后端) pip install "openmed[hf]" # 添加 REST 服务支持 pip install "openmed[hf,service]" # Apple Silicon 加速 (MLX) pip install "openmed[mlx]" -
快速开始 (Python):
from openmed import extract_pii, deidentify text = "Patient: John Doe, DOB: 01/15/1970, SSN: 123-45-6789" # 提取 PII result = extract_pii(text, model_name="pii_superclinical_large", use_smart_merging=True) # 去标识化 deidentified_text = deidentify(text, method="mask") -
离线/空气隔离环境部署: 指向本地模型目录即可,无需连接 Hugging Face Hub:
from openmed import OpenMedConfig, analyze_text result = analyze_text( "Patient presents with chronic myeloid leukemia.", model_id="./models/OpenMed-NER-DiseaseDetect-SuperClinical-434M", config=OpenMedConfig(device="cpu"), ) -
**iOS/macOS 集成
查看原文 →github.com
