← 返回信息流
GitHub 热榜GitHub Trending · 日·1 小时前

OpenMed:开源医疗AI平台

原标题:maziyarpanahi/openmed
Python1,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 针对性地提供了本地化解决方案:

  1. 数据隐私与合规性风险:传统方案往往依赖云端 API 进行实体提取或去标识化,导致患者敏感数据(PHI/PII)离开本地网络,违反 HIPAA 等法规。OpenMed 强调 100% 本地运行,确保数据不出网。
  2. 厂商锁定与成本高昂:专有医疗 NLP 服务通常昂贵且绑定特定供应商。OpenMed 提供开源替代方案,允许用户在自己的基础设施上运行,无需支付 API 调用费用。
  3. 跨平台部署复杂性:医疗场景多样,从数据中心服务器到边缘设备(如 iPhone)。OpenMed 统一了后端逻辑,通过模型名称自动适配不同硬件(如在非 Apple 设备上自动回退到 PyTorch 检查点),简化了从 Python 到 Swift 原生应用的部署流程。
  4. 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_pii API 调用。

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 服务。

适合谁用 / 上手

适合人群

  • 医疗 AI 开发者:需要构建本地化、隐私合规的临床 NLP 应用。
  • 医院/诊所 IT 部门:希望在不连接互联网的情况下,对电子病历(EMR)进行结构化处理或去标识化。
  • 移动端开发者:需要在 iOS/macOS 应用中集成离线医疗实体提取或隐私过滤功能的开发者。
  • 数据科学家:需要快速原型化医疗文本分析流程,且希望避免云 API 延迟和成本的用户。

上手指南

  1. 安装

    # 基础安装 (Hugging Face 后端)
    pip install "openmed[hf]"
    
    # 添加 REST 服务支持
    pip install "openmed[hf,service]"
    
    # Apple Silicon 加速 (MLX)
    pip install "openmed[mlx]"
    
  2. 快速开始 (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")
    
  3. 离线/空气隔离环境部署: 指向本地模型目录即可,无需连接 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"),
    )
    
  4. **iOS/macOS 集成

查看原文 →github.com