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
PythonCreated 2025-10-04openmed.life/
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

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON