技术知识库 · 工具评测 · · 国科智飞 Gavin
OpenMed:医疗 AI 的完全本地化路线
1,500+ 医疗模型、12 语言 PII 去标识、MCP 与苹果端原生,Apache-2.0 全栈。本地优先这条路,它把地基打得很全。
OpenMed 是 Maziyar Panahi 开源的本地优先医疗 AI 全栈,Apache-2.0 协议。作者在巴黎 ISC-PIF / CNRS 有十六年研究经历,曾是 John Snow Labs 旗下 Spark NLP 的团队负责人——这个背景基本决定了项目的可信度锚点。
它的定位不是某个医疗大模型,而是一条落地流水线:1,500+ 医疗模型(PII、NER、零样本、医疗影像试验)、12 语言 PII 去标识化、MCP server、FastAPI REST、Docker、Apple Silicon 的 MLX 加速,以及 iOS 原生包。所有推理都可以在本地完成,患者数据不出内网。
它跟几种常见选择的区别。 跟云端医疗 API 比,患者数据不出医院网络、没有按次计费、没有厂商锁定;跟单个医疗大模型(BioGPT、Med-PaLM 这类)比,它解决的不是问答和生成,而是结构化抽取、去标识化和部署管道;跟作者老东家的 Spark NLP 比,模型权重公开在 Hugging Face、Python 直接调用,没有 Spark 集群的部署门槛。零样本抽取另有 GLiNER 作为补充,可以当兜底。
能力与亮点
模型注册表是真实家底。 仓库里的 models.jsonl 实测 1,518 条,按家族分为 PII 978 个、NER 385 个、零样本 145 个、视觉试验 7 个、通用 3 个。参数规模主力在 1 亿到 6 亿之间,对 CPU 和 Apple Silicon 单机相当友好。每条带语言、格式、发布日期等元数据。
临床 NER 一行调用。 疾病、药物、解剖、基因、化学物质等专科抽取都有对应模型,analyze_text 传入模型名即可。
PII 去标识化覆盖 HIPAA 十八项。 抽取与处理分开:extract_pii 支持智能实体合并,避免日期这类字段被切碎;去标识化有四种方法——mask 占位符、replace 区域感知的假数据、hash 加密哈希、shift_dates 日期漂移(保留时序关系又改变真实日期)。12 种语言包含中文、印地语、阿拉伯语、日语等。
部署形态齐全。 Python 库直接内嵌;FastAPI REST 服务带健康检查和模型生命周期管理(空闲自动卸载、手动卸载、已加载列表);MCP server 暴露七个工具,可直接接进 Claude、Cursor 这类 Agent;Docker 镜像开箱可用。批处理接口适合文档级的大批量抽取。
苹果端是差异化能力。 openmed[mlx] 在 M 系列芯片上走 MLX 后端,同一个模型名在非苹果主机自动回退到 PyTorch 权重;OpenMedKit 是 iOS 17+ / macOS 14+ 的 Swift 包,可以完全离线地在 iPhone、iPad 上跑 PII 与临床抽取。对「患者自录入 + 本地脱敏」这类需求,这是现成答案。
安全姿态克制且透明。 全仓库没有出站遥测,没有硬编码密钥。历史上 PrivacyFilterTorchPipeline 的 trust_remote_code 默认开着,等于任意可控的模型名可以触发远程代码执行;1.5.2 版本修掉了它——默认改为关闭,只对白名单内的一方模型开启,自定义微调可通过环境变量显式扩展。项目方把这次修复写进 CHANGELOG,这种主动披露在开源医疗 AI 里并不多见。
局限与坑
模型准确率要靠自己验证。 注册表里 1,518 条模型没有任何一条带 benchmark 数据,「state-of-the-art」的表述需要落到具体子模型和具体数据集上验证。上手前准备一小份标注样本,选中候选模型实测,比相信 README 靠谱。
性能数字是自报口径。 README 声称 MLX 相比 CPU PyTorch 有大幅加速,批处理也有数倍吞吐提升,但没有第三方复现;8-bit 量化带来的精度损失文档里没给。对精度敏感的临床场景,这些数字只能当线索,不能当结论。
它是 NER/PII 工具箱,不是医疗问答模型。 不能拿它做临床问诊、诊断建议或医学对话;需要生成能力时得自己接别的大模型。
PHI 的边界最终由使用者负责。 工具本身本地推理,但如果你把抽取结果再送进外部 LLM,隐私保护链条就断了。官方的 MCP 说明也明确提醒:测试用合成数据,真实 PHI 只发给用户自己运营、信任的实例。
维护集中度高。 项目实质上由一位作者主导,更新节奏依赖个人;克隆时注意默认分支是 master 而非 main,CI 与脚本要相应处理。
文档的完整性要留一分怀疑。 官方文档里部分页面链接带锚点,是否全部可达没有逐页验证;上手主要靠 README、CHANGELOG 和源码里的示例,对习惯完善文档的团队会多出一点摸索成本。
适用场景
- 医院、健康信息平台、医学研究机构等要求数据不出内网的场景;
- 需要结构化抽取 + 去标识化流水线的病历、文献处理——音频转写后接 OpenMed 做实体抽取与脱敏,是一条完整的数据清洗链;
- 面向苹果设备的离线临床应用;
- 做多语言合规去标识、需要覆盖阿拉伯语、印地语、日语等语种的团队。
不适合:想要开箱即用医疗问答机器人的团队;无法投入人力做模型评测的小团队;通用 PII 脱敏需求(Presidio 这类通用工具可能已经够用)。
选型建议
第一步不是部署整套服务,而是用一周做最小验证:装 Python 包,选一个隐私过滤模型加一个疾病抽取模型,拿自己的标注样本跑准确率与速度。PII 场景重点看漏检——漏掉一个姓名比多标十个词的代价大得多。
验证通过后再选部署形态:单机脚本用 Python 库,团队内服务用 REST,Agent 工作流用 MCP,苹果端应用走 OpenMedKit。服务化之后记得配置模型生命周期参数,控制长跑进程的内存占用。
还没有 NLP 团队的机构,建议先用它的通用隐私过滤模型做一层「PII 防火墙」,而不是一上来训练自有模型;等流程跑顺、评测集建起来,再考虑专科微调。
商业使用没有协议障碍(Apache-2.0),但医疗合规不是一张 License 能解决的:数据分级、审计日志、人工复核流程仍要按所在地区的监管要求建设。把 OpenMed 当底座,不要当合规本身。