maziyarpanahi /openmed
Local-first healthcare AI: clinical NER and HIPAA PII de-identification on hardware you control. 2,200+ medical models, 35 model-backed PII languages, and Python, MLX, Android and browser runtimes. Apache-2.0 SDK.
★ 5,769⑂ 735👁 23▤ 47
5,769
stars
+0+4+321
735
forks
23
watchers
–
prs
–
issues
47
releases
–
discussions
README
你的数据。你的模型。你的硬件。
在你掌控的硬件上,将临床文本转化为结构化、去标识化的洞见。
OpenMed 的核心本地运行时会在所需模型制品就绪后执行抽取和去标识化。模型下载、远程提供商适配器、启用遥测的路径及用户配置的集成可能使用网络;请核查每个模型和数据集的条款。
PyPI package ·
Python 3.11+ ·
Model catalog ·
Research paper ·
Apache-2.0 SDK source
OpenMedKit ·
Apple Silicon / MLX ·
Android / ONNX Runtime Mobile ·
Browser / Transformers.js ·
Documentation
2,266 条清单记录 · 35 种模型支持的 PII 语言 · Apache-2.0 SDK
English ·
简体中文 ·
Español ·
Français ·
Deutsch ·
Italiano ·
Português ·
Nederlands ·
العربية ·
हिन्दी ·
తెలుగు ·
日本語 ·
Türkçe ·
فارسی ·
Kiswahili
---
现场演示
此 iPhone 示例会在所需模型制品就绪后使用 OpenMed 的本地运行时:
通过 OpenMedKit 在 iPhone 上运行:在此配置中,由 Apple MLX 在本地扫描临床记录、完成去标识化并抽取临床信号。
实时 PII 去标识化:在此配置的本地工作流中,Nemotron Privacy Filter 会对合成临床出院记录中的姓名、地址、证件号和账单数据进行脱敏。(图中所有数值均为合成数据。)
---
30 秒上手示例
python
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:
Apple Silicon 上的 MLX 比 CPU PyTorch 快 24–33 倍:Privacy Filter 每次推理步骤的中位延迟,数值越低越好。
---
在 Android 设备上本地运行:Kotlin 与 ONNX Runtime Mobile
OpenMedKit 也以原生 Android/Kotlin 库的形式提供,用于本地文档导入、OCR 交接、PII 脱敏,
并通过 ONNX Runtime Mobile 进行 token 分类推理。移动端模型仓库包含稳定的 tensor 名称、
动态序列轴、tokenizer 文件、标签,以及可供 Android 使用的 fp32、fp16、INT8 和可选 .ort 输出。
在 settings.gradle.kts 中添加限定范围的 JitPack 仓库:
kotlin
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven {
url = uri("https://jitpack.io")
content { includeGroup("com.github.maziyarpanahi") }
}
}
}
然后使用不可变的 OpenMed v3.2.0 版本:
kotlin
dependencies {
implementation("com.github.maziyarpanahi:openmed:v3.2.0")
}
本地构建和发布详情参见 Android 安装指南。
kotlin
val model = OpenMedKit.fromDirectory(modelDir)
val entities = model.analyzeText("Patient Alice Nguyen was seen in cardiology.")
- Android ONNX 配置会生成 model.onnx、model_fp16.onnx、
model_int8.onnx、tokenizer 资源、标签和 openmed-onnx.json。
- ORT Mobile 支持会在安装 ONNX Runtime 转换工具时记录最小构建所需的算子配置。
- Kotlin 对等测试确保 tokenizer offset、span 边界和 decoder 输出与 Python 运行时保持一致。
指南:Android ONNX 导出 ·
Android span 对等性 ·
OpenMedKit Android
在 Python CPU 上使用同一个 ONNX 模型
python
from openmed import OnnxModel
model = OnnxModel.from_pretrained(
"OpenMed/OpenMed-PII-ClinicalE5-Small-33M-v1-onnx-android"
)
entities = model("Patient Alice Nguyen was seen in cardiology.")
在浏览器中使用同一个 ONNX 模型
bash
npm install openmed @huggingface/transformers
typescript
import { loadOnnxModel } from "openmed";
const model = await loadOnnxModel(
"OpenMed/OpenMed-PII-ClinicalE5-Small-33M-v1-onnx-android",
);
const entities = await model("Patient Alice Nguyen was seen in cardiology.");
---
工作原理
mermaid
flowchart LR
A["临床文本"] -- B["OpenMed(本地优先)"]
B -- C["医疗实体"]
B -- D["检测到的 PII"]
B -- E["去标识化文本"]
style B fill:0D6E