
医疗 AI 最大的矛盾是什么?
你想用 AI 分析患者的病历,提取诊断、药物这些关键信息。但问题来了——你能把患者数据发到云端吗?
HIPAA(美国健康保险法)、GDPR(欧盟数据保护条例)……医疗数据受到最严格的保护。大多数云端 AI 服务根本无法满足医疗机构对数据隐私的需求。
Github:
OpenMed 是什么?
OpenMed 是个本地优先的医疗 AI 工具库,核心理念很简单:患者的病历永远不应该离开设备。
它由 Maziyar Panahi 开发,提供了 1000 多个专业医疗模型,所有模型都在你的设备上运行——不需要云端,不需要 API Key,不需要网络调用。从 Python 一行代码到 iPhone 原生 Swift 应用,患者数据永不离开你的网络。
这个项目已经发表了 arXiv 论文,采用 Apache-2.0 开源协议,完全免费。

为什么"本地优先"很重要?
在医疗这个领域,"本地优先"不是技术偏好,而是基本要求。
云端 AI 服务有个致命问题:患者数据要发送到供应商的服务器。这意味着你的数据离开了自己的网络,进入了别人的控制范围。对互联网公司来说这可能没问题,但对医院和诊所来说,这是红线。
OpenMed 的做法是:所有模型在你的设备或服务器上运行。患者数据从不离开你的网络。这意味着:
- 符合 HIPAA、GDPR 等医疗数据法规
- 没有供应商锁定
- 离线也能用
- 成本可控——模型是免费的
支持什么功能?

OpenMed 的核心功能集中在临床文本处理上,主要分为两大类:
医疗实体提取:从病历文本中提取诊断、药物、症状、解剖部位、基因等结构化信息。比如"患者因慢性粒细胞白血病开始服用伊马替尼",它可以提取出"DISEASE: 慢性粒细胞白血病"和"DRUG: 伊马替尼"。
PII 脱敏:识别并移除病历中的患者个人信息,包括姓名、日期、身份证号、电话号码、邮箱、地址等。支持 12 种语言,覆盖 HIPAA 规定的 18 种安全港标识符。
怎么用?
用起来非常简单。Python 环境下,一行代码就能分析文本:
from openmed import analyze_text
result = analyze_text(
"患者因慢性粒细胞白血病开始服用伊马替尼。",
model_name="disease_detection_superclinical",
)
for entity in result.entities:
print(f"{entity.label:<12} {entity.text:<28} {entity.confidence:.2f}")
输出结果类似:
DISEASE 慢性粒细胞白血病 0.98
DRUG 伊马替尼 0.95
脱敏也很简单:
from openmed import deidentify
text = "患者:张三,生日:1970年1月15日,身份证号:123456789"
# 用占位符替换
result = deidentify(text, method="mask")
# 输出:患者:[NAME],生日:[DATE],身份证号:[ID]
# 用随机假数据替换
result = deidentify(text, method="replace")
支持哪些平台?
OpenMed 的设计是"一次编写,到处运行"。模型可以在多种环境中运行:
Python:最主流的使用方式,支持 CPU、CUDA(NVIDIA GPU)、Apple Silicon(通过 MLX 加速)。安装命令:pip install "openmed[hf]"。
Apple 设备:通过 MLX 框架在 iPhone、iPad、Mac 上运行,速度比 CPU 快 24-33 倍。提供了 OpenMedKit(Swift SDK),可以原生集成到 iOS/macOS 应用中。
REST API:可以部署为本地 REST 服务,通过 Docker 容器运行。适合需要在局域网内提供服务的场景。
离线模式:即使完全断网也能用。把模型下载到本地目录,设置 model_id 指向本地路径即可。
隐私保护有多强?
OpenMed 在隐私保护上做得很细致。
PII 检测支持智能实体合并,防止"1970年1月15日"这样的日期被拆成三个独立的 token。脱敏支持多种方式:掩码(替换为 [NAME])、随机替换(用 Faker 生成格式正确的假数据)、哈希加密、日期偏移等。
支持 12 种语言的 PII 检测,包括英语、法语、德语、西班牙语、葡萄牙语、荷兰语、印地语、泰卢固语、阿拉伯语、日语、土耳其语和波斯语。总共覆盖了 247 种 PII 检测规则。
还有隐私过滤器家族(Privacy Filter Family),基于 OpenAI 的隐私过滤器架构,提供了三个变体:OpenAI 原版、NVIDIA Nemotron 微调版、OpenMed 多语言版。
和其他方案比怎么样?
医疗 AI 领域也有不少商业方案,但 OpenMed 有几个明显优势。
商业医疗 AI 服务通常按调用次数收费,用得多就贵得多。OpenMed 是免费的,模型是开源的,没有按次计费的问题。
云端方案有个根本问题:患者数据要离开你的网络。这对大多数医疗机构来说是不可接受的。OpenMed 完全在本地运行,数据永不离开你的设备或服务器。
一些开源工具也做医疗 NLP,但模型数量有限。OpenMed 提供了 1000+ 个专业医疗模型,覆盖疾病、药物、解剖、基因等多个领域。
适合谁用?
如果你符合以下情况,OpenMed 会很有用:
你在开发医疗相关的 AI 应用,需要处理临床文本。你对数据隐私要求很高,不能使用云端服务。你需要在本地部署医疗 AI 模型,可能是出于合规要求,也可能是因为网络条件限制。你想在 iPhone 或 iPad 上做医疗应用开发。
具体来说,医院和诊所的信息系统、医疗研究机构、远程医疗平台、移动医疗应用开发者,都可能用到 OpenMed。
写在最后
OpenMed 代表了一个很重要的方向:让 AI 去往数据所在的地方,而不是把数据送到 AI 那里。
在医疗这个对隐私、合规和可靠性要求最高的领域,本地优先不是可选项,而是必选项。OpenMed 用 1000 多个专业模型证明,开源方案完全可以达到甚至超越闭源方案的性能。
作者 Maziyar Panahi 有 20 年机器学习系统开发经验,之前在 Spark NLP 工作了 7 年。这个项目是他"午休时的开源项目",没有委员会、没有路线图政治,就是 20 年经验积累下来的东西。
如果你在开发医疗 AI 应用,或者对本地优先的医疗技术感兴趣,不妨看看 OpenMed。毕竟,患者的病历属于患者本人,不应该随便发到云端。
关注
觉得有用的话,点个关注,后续会分享更多实用的开源工具和 AI 技巧。