
Klinik metni tek satır kodla yapılandırılmış içgörüye dönüştürün.
Varlık çıkarımı, PII kimliksizleştirme ve tamamen kendi donanımınızda çalışan 1.000'den fazla özelleşmiş tıbbi model — Python'da tek satırdan, Apple MLX destekli iPhone'da yerel bir Swift uygulamasına kadar. Bulut yok. Tedarikçi bağımlılığı yok. Hasta verileri ağınızdan çıkmıyor.
1.000+ model · 12 dil · 247 PII denetim noktası · %100 cihazda · Apache-2.0
English · 简体中文 · Español · Français · Deutsch · Italiano · Português · Nederlands · العربية · हिन्दी · తెలుగు · 日本語 · Türkçe · فارسی

Gerçek zamanlı PII kimliksizleştirme — Nemotron Privacy Filter, bir klinik taburcu belgesindeki adları, adresleri, kimlik numaralarını ve fatura verilerini tamamen cihazda maskeliyor. (Gösterilen tüm değerler sentetiktir.)
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
# DRUG imatinib 0.95
Yerel olarak çalışan son teknoloji bir klinik NER modeli — API anahtarı yok, ağ çağrısı yok.
| OpenMed | Bulut tıbbi API'leri | |
|---|---|---|
| Cihazınızda/sunucularınızda çalışır | ✅ | ❌ |
| Hasta verileri ağınızdan çıkar | Asla | Tedarikçiye gönderilir |
| Maliyet | Ücretsiz ve açık kaynak | Çağrı başına ücret |
| Özelleşmiş tıbbi modeller | 1.000+ | Sınırlı |
| Diller | 12+ | Değişken |
| Çevrimdışı / izole (air-gapped) | ✅ | ❌ |
| Apple Silicon (MLX) hızlandırma | ✅ | yok |
| Yerel iOS / macOS uygulamaları | ✅ OpenMedKit ile | ❌ |
| Tedarikçi bağımlılığı | Yok — Apache-2.0 | Var |
OpenMed, verilerinizin zaten bulunduğu yerde çalışmak için tasarlandı. Apple donanımında MLX ile hızlanır ve OpenMedKit aracılığıyla doğrudan iPhone, iPad ve Mac uygulamalarına girer — böylece PII tespiti ve klinik çıkarım tamamen çevrimdışı, cihaz üzerinde gerçekleşir.
// Add OpenMedKit to your app
dependencies: [
.package(url: "https://github.com/maziyarpanahi/openmed.git", from: "1.5.5"),
]
pip install "openmed[mlx]".Kılavuzlar: MLX arka ucu · OpenMedKit (Swift) · CoreML dışa aktarma
flowchart LR
A["Klinik metin"] --> B["OpenMed
(%100 cihazda)"]
B --> C["Tıbbi varlıklar"]
B --> D["PII tespit edildi"]
B --> E["Kimliksizleştirilmiş metin"]
style B fill:#0D6E6E,stroke:#0A5656,stroke-width:2px,color:#ffffff
style C fill:#D6EBEB,stroke:#0D6E6E,color:#0E1116
style D fill:#F7DCD8,stroke:#C5453A,color:#0E1116
style E fill:#F5E27A,stroke:#A9A088,color:#0E1116
# Core + Hugging Face runtime (Linux, macOS, Windows; CPU or CUDA)
pip install "openmed[hf]"
# Add the REST service
pip install "openmed[hf,service]"
# Apple Silicon acceleration (MLX)
pip install "openmed[mlx]"
**Python API**
|
**REST servisi**
`GET /health`
`POST /analyze`
`POST /pii/extract`
`POST /pii/deidentify`
|
**Toplu**
|
Çevrimdışı / izole mi? model_name'i (veya model_id'yi) yerel bir dizine yönlendirin; OpenMed onu Hugging Face Hub'a bağlanmadan yükler:
from openmed import OpenMedConfig, analyze_text
result = analyze_text(
"Patient presents with chronic myeloid leukemia and Type 2 diabetes.",
model_id="./models/OpenMed-NER-DiseaseDetect-SuperClinical-434M",
config=OpenMedConfig(device="cpu"),
)
Özelleşmiş tıbbi NER modellerinden oluşan özenle seçilmiş bir kayıt — tam kataloğa göz atın.
| Model | Uzmanlık | Varlık türleri | Boyut |
|---|---|---|---|
disease_detection_superclinical |
Hastalıklar ve durumlar | DISEASE, CONDITION, DIAGNOSIS | 434M |
pharma_detection_superclinical |
İlaçlar ve tedaviler | DRUG, MEDICATION, TREATMENT | 434M |
pii_superclinical_large |
PII ve kimliksizleştirme | NAME, DATE, SSN, PHONE, EMAIL, ADDRESS | 434M |
anatomy_detection_electramed |
Anatomi ve vücut bölümleri | ANATOMY, ORGAN, BODY_PART | 109M |
gene_detection_genecorpus |
Genler ve proteinler | GENE, PROTEIN | 109M |
from openmed import extract_pii, deidentify
text = "Patient: John Doe, DOB: 01/15/1970, SSN: 123-45-6789"
# Extract PII with smart merging (prevents tokenization fragmentation)
result = extract_pii(text, model_name="pii_superclinical_large", use_smart_merging=True)
# De-identify with the method you need
deidentify(text, method="mask") # [NAME], [DATE]
deidentify(text, method="replace") # Faker-backed, locale-aware, format-preserving fakes
deidentify(text, method="hash") # Cryptographic hashing
deidentify(text, method="shift_dates", date_shift_days=180)
01/15/1970'i parçalamak yerine bütün tutar.Tam PII defteri · Akıllı birleştirme · Anonimleştirme
Privacy Filter ailesi — OpenAI Privacy Filter mimarisi üzerinde üç model ailesi
Model kodu aynıdır (yerel dikkat, sink token'ları, RoPE+YaRN, tiktoken o200k_base tokenizasyonlu gpt-oss tarzı seyrek MoE Transformer); yalnızca eğitim verisi farklıdır. Tümü aynı extract_pii() / deidentify() API'sini kullanır — yalnızca model_name= argümanı değişir.
| Varyant | PyTorch (CPU + CUDA) | MLX (Apple Silicon) | MLX 8-bit |
|---|---|---|---|
| OpenAI Privacy Filter | openai/privacy-filter |
OpenMed/privacy-filter-mlx |
…-mlx-8bit |
| Nemotron-PII fine-tune | OpenMed/privacy-filter-nemotron |
…-nemotron-mlx |
…-nemotron-mlx-8bit |
| OpenMed Multilingual | OpenMed/privacy-filter-multilingual |
…-multilingual-mlx |
…-multilingual-mlx-8bit |
from openmed import extract_pii
text = "Patient Sarah Connor (DOB: 03/15/1985) at MRN 4471882."
extract_pii(text, model_name="openai/privacy-filter") # PyTorch baseline
extract_pii(text, model_name="OpenMed/privacy-filter-nemotron") # same code, different weights
extract_pii(text, model_name="OpenMed/privacy-filter-mlx") # Apple Silicon (MLX)
Apple Silicon olmayan ana makinelerde MLX model adları otomatik olarak ilgili PyTorch denetim noktasıyla değiştirilir (tek seferlik bir uyarıyla) — bir model adı yazın, her yerde çalıştırın. Bkz. Privacy Filter mimarisi ve arka uç yönlendirme.
en, fr, de, it, es, nl, hi, te, pt, ar, ja ve tr dillerinde çıkarım ve kimliksizleştirme — toplam 247 PII denetim noktası.
python -c "from openmed import extract_pii; print([(e.label, e.text) for e in extract_pii('Dr. Pedro Almeida, CPF: 123.456.789-09, email: pedro@hospital.pt', lang='pt').entities])"
Dile göre örnekleri göster (Portekizce, Felemenkçe, Hintçe, Arapça, Japonca, Türkçe)
from openmed import extract_pii
portuguese = extract_pii("Paciente: Pedro Almeida, CPF: 123.456.789-09, telefone: +351 912 345 678", lang="pt", use_smart_merging=True)
dutch = extract_pii("Patiënt: Eva de Vries, BSN: 123456782, telefoon: +31 6 12345678", lang="nl", use_smart_merging=True)
hindi = extract_pii("रोगी: अनीता शर्मा, फोन: +91 9876543210, पता: नई दिल्ली 110001", lang="hi", use_smart_merging=True)
arabic = extract_pii("المريضة ليلى حسن، الهاتف +20 10 1234 5678، الرقم القومي 29801011234567.", lang="ar", use_smart_merging=True)
japanese = extract_pii("患者 佐藤 花子、電話 +81 90 1234 5678、マイナンバー 1234 5678 9012.", lang="ja", use_smart_merging=True)
turkish = extract_pii("Hasta Ayşe Yılmaz, telefon +90 532 123 45 67, TCKN 10000000146.", lang="tr", use_smart_merging=True)
for r in (portuguese, dutch, hindi, arabic, japanese, turkish):
print([(e.label, e.text) for e in r.entities])
İstek doğrulama, paylaşımlı pipeline ön yükleme ve birleşik hata zarfları içeren, Docker dostu bir FastAPI servisi.
```bash pip insta
$ claude mcp add openmed \
-- python -m otcore.mcp_server <graph>