متن بالینی را روی سختافزار تحت کنترل خود به بینش ساختارمند و حذفهویتشده تبدیل کنید.
زمان اجرای محلی اصلی OpenMed پس از فراهم شدن مصنوعات مدل موردنیاز، استخراج و حذف هویت را انجام میدهد. دانلود مدل، رابطهای ارائهدهندهٔ راهدور، مسیرهای دارای تلهمتری و یکپارچهسازیهای پیکربندیشده توسط کاربر ممکن است از شبکه استفاده کنند؛ شرایط هر مدل و مجموعهداده را بررسی کنید.
PyPI package · Python 3.10+ · Model catalog · Research paper · Apache-2.0 SDK source
OpenMedKit · Apple Silicon / MLX · Android / ONNX Runtime Mobile · Browser / Transformers.js · Documentation
اجرای محلیمحور · 33 زبان PII با پشتیبانی مدل · Apache-2.0 SDK
English · 简体中文 · Español · Français · Deutsch · Italiano · Português · Nederlands · العربية · हिन्दी · తెలుగు · 日本語 · Türkçe · فارسی
حذف بلادرنگِ اطلاعات شناساییکننده: فیلترِ حریمِ خصوصیِ Nemotron در حال پنهانسازیِ نامها، نشانیها، شناسهها و اطلاعات صورتحساب از یک برگهٔ ترخیص بالینی، کاملاً روی دستگاه. (همهٔ مقادیر نمایشدادهشده ساختگیاند.)
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یک مدل NER بالینی پس از فراهم شدن مصنوعات موردنیاز از زمان اجرای محلی استفاده میکند.
| ملاحظهٔ استقرار | مرز OpenMed SDK |
|---|---|
| زمان اجرای اصلی | پس از فراهم شدن مصنوعات لازم، محلی پردازش میکند |
| مسیرهای اختیاری شبکه | دانلودها، رابطهای راهدور، تلهمتری و یکپارچهسازیها ممکن است از شبکه استفاده کنند |
| اعتبارسنجی | مالک استقرار شرایط مدل و داده، رفتار حریم خصوصی و تناسب بالینی را بررسی میکند |
| رابطها | Python، Swift، Android، مرورگر و سرویسها در صورت پشتیبانی |
- فهرست گزینششدهٔ مدلها: هر مدل، مجوز و مجموعهداده را برای کاربرد خود اعتبارسنجی کنید.
- پیکربندی همراستا با Safe Harbor: میتواند ۱۸ دستهٔ شناسه را هدف بگیرد؛ بازبینی تخصصی استقرار همچنان لازم است و استفاده از SDK بهتنهایی انطباق HIPAA را اثبات نمیکند.
- مسیرهای اجرای پشتیبانیشده: رابطهای CPU، CUDA، MLX، موبایل، سرویس و مرورگر به محیط و مصنوع بستگی دارند.
- رابطهای استقرار: Python، کانتینرها، سرویسها و جریانهای دستهای به پیکربندی و اعتبارسنجی نیاز دارند.
- کد منبع SDK: تحت Apache-2.0 License منتشر شده است؛ شرایط مدل و مجموعهداده متفاوت است.
روی سختافزار پشتیبانیشدهٔ Apple، OpenMed میتواند پس از فراهم شدن مصنوعات لازم از MLX و OpenMedKit برای پردازش محلی استفاده کند. دریافت مدل و یکپارچهسازیهای راهدور پیکربندیشده توسط کاربر، مرزهای شبکهای جداگانه هستند.
// Add OpenMedKit to your app
dependencies: [
.package(url: "https://github.com/maziyarpanahi/openmed.git", from: "2.0.0"),
]- زماناجرای MLX برای دستهبندیِ توکنیِ PII، خانوادهٔ Privacy Filter و وظایفِ zero-shot آزمایشیِ خانوادهٔ GLiNER، بههمراه مسیرِ جایگزینِ CoreML.
- یک نامِ مدل، همهٔ پلتفرمها: نامهای مدلِ MLX روی سختافزارِ غیرApple بهطور خودکار به نقطهبازرسیِ متناظرِ PyTorch بازمیگردند.
- پایتون روی Apple Silicon هم:
pip install --upgrade "openmed[mlx]".
راهنماها: بکاندِ MLX · OpenMedKit (Swift) · خروجیِ CoreML
flowchart LR
A["متن بالینی"] --> B["OpenMed<br/>(محلیمحور)"]
B --> C["موجودیتهای پزشکی"]
B --> D["PII شناساییشده"]
B --> E["متنِ حذفهویتشده"]
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 --upgrade "openmed[hf]"
# Add the REST service
pip install --upgrade "openmed[hf,service]"
# Apple Silicon acceleration (MLX)
pip install --upgrade "openmed[mlx]"|
API پایتون from openmed import analyze_text
analyze_text(
"Patient received 75mg "
"clopidogrel for NSTEMI.",
model_name=
"pharma_detection_superclinical",
) |
سرویس REST uvicorn openmed.service.app:app \
--host 0.0.0.0 --port 8080
|
دستهای from openmed import BatchProcessor
p = BatchProcessor(
model_name=
"disease_detection_superclinical",
group_entities=True,
)
p.process_texts([...]) |
آفلاین / ایزوله؟ کافی است model_name (یا model_id) را به یک پوشهٔ محلی اشاره دهید تا OpenMed آن را بدونِ تماس با Hugging Face Hub بارگذاری کند:
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"),
)یک رجیستریِ گزینششده از مدلهای تخصصیِ NER پزشکی. کاتالوگِ کامل را مرور کنید.
| مدل | تخصص | انواعِ موجودیت | اندازه |
|---|---|---|---|
disease_detection_superclinical |
بیماریها و شرایط | DISEASE, CONDITION, DIAGNOSIS | 434M |
pharma_detection_superclinical |
داروها | DRUG, MEDICATION, TREATMENT | 434M |
pii_superclinical_large |
PII و حذفِ هویت | NAME, DATE, SSN, PHONE, EMAIL, ADDRESS | 434M |
anatomy_detection_electramed |
آناتومی و اعضای بدن | ANATOMY, ORGAN, BODY_PART | 109M |
gene_detection_genecorpus |
ژنها و پروتئینها | 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را بهجای تکهتکهشدن، یکپارچه نگه میدارد. - مبهمسازیِ مبتنی بر Faker با ارائهدهندههای سفارشیِ شناسههای بالینی (CPF، CNPJ، BSN، NIR، Codice Fiscale، NIE، Aadhaar، Steuer-ID، NPI).
- مرز HIPAA: دستههای همراستا با Safe Harbor و آستانههای قابلتنظیم ابزارهای پیادهسازیاند؛ بازبینی تخصصی استقرار همچنان لازم است و استفاده از SDK بهتنهایی انطباق را اثبات نمیکند.
خانوادهٔ Privacy Filter: سه خانوادهٔ مدل بر پایهٔ معماریِ OpenAI Privacy Filter
کدِ مدل یکسان است (ترانسفورمرِ sparse-MoE به سبکِ gpt-oss با توجهِ محلی، توکنهای sink، RoPE+YaRN، توکنایزرِ tiktoken o200k_base)، فقط دادهٔ آموزشی متفاوت است. همه از طریقِ همان APIِ extract_pii() / deidentify() کار میکنند. تنها آرگومانِ model_name= تغییر میکند.
| گونه | PyTorch (CPU + CUDA) | MLX (Apple Silicon) | MLX ۸-بیتی |
|---|---|---|---|
| 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، نامهای مدلِ MLX بهطور خودکار با نقطهبازرسیِ متناظرِ PyTorch جایگزین میشوند (با یک هشدارِ یکباره). یک نامِ مدل بنویسید، همهجا اجرا کنید. معماریِ Privacy Filter و مسیریابیِ بکاند را ببینید.
استخراج و حذفِ هویت در زبانهای en، fr، de، it، es، nl، hi، te، pt، ar، ja و tr، در مجموع فهرست ثبتشدهٔ مدلهای PII.
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])"نمونههای هر زبان (پرتغالی، هلندی، هندی، عربی، ژاپنی، ترکی)
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])یک سرویسِ FastAPI سازگار با Docker، با اعتبارسنجیِ درخواست، پیشبارگذاریِ خطلولهٔ مشترک و پاکتهای خطای یکپارچه.
pip install --upgrade "openmed[hf,service]"
uvicorn openmed.service.app:app --host 0.0.0.0 --port 8080
# or with Docker
docker build -t openmed:local .
docker run --rm -p 8080:8080 -e OPENMED_PROFILE=prod openmed:localcurl -X POST http://127.0.0.1:8080/pii/extract \
-H "Content-Type: application/json" \
-d '{"text":"Paciente: Maria Garcia, DNI: 12345678Z","lang":"es"}'راهنمای کاملِ سرویس REST را ببینید.
راهنماهای کامل در openmed.life/docs.
| شروع به کار | تحلیلِ متن | رجیستریِ مدل |
| راهنمای تشخیصِ PII | ناشناسسازی | پردازشِ دستهای |
| پروفایلهای پیکربندی | سرویس REST | بکاندِ MLX |
نگهبانِ OpenMed یک گربهٔ ایرانیِ پشمالوست که بهشکلِ بوعلی سینا (ابنسینا) درآمده، پزشکِ بزرگِ ایرانی که کتابِ «قانون در طب» او نزدیک به 600 سال متنِ پزشکیِ مرجعِ جهان بود. او نگهبانِ کتابِ گشودهٔ دانشِ پزشکی است، با پالتی برگرفته از فیروزهٔ ایرانی: نگهبانی محلیمحور برای خصوصیترین دادههای شما.
از مشارکتها استقبال میکنیم: گزارشِ اشکال، درخواستِ ویژگی و Pull Requestها.
- ثبتِ یک issue
- ترجمهها پذیرفته میشوند: به تکمیلِ READMEهای زبانهای دیگر (در سوییچرِ بالای صفحه) کمک کنید.
OpenMed بر پایهٔ کارهای عالیِ متنباز ساخته شده، با سپاسِ ویژه از OpenAI (معماریِ Privacy Filter)، NVIDIA (مجموعهدادهٔ Nemotron PII)، Hugging Face (transformers و اکوسیستمِ مدل)، Apple (MLX)، و نگهدارندگانِ Faker.
کد منبع OpenMed SDK تحت Apache-2.0 License منتشر میشود.
اگر OpenMed در پژوهشِ شما مفید بود، لطفاً به آن استناد کنید:
@misc{panahi2025openmedneropensourcedomainadapted,
title={OpenMed NER: Open-Source, Domain-Adapted State-of-the-Art Transformers for Biomedical NER Across 12 Public Datasets},
author={Maziyar Panahi},
year={2025},
eprint={2508.01630},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2508.01630},
}4,700+ GitHub stars · 29 Jul 2026 snapshot
ساختهشده بهدستِ تیمِ OpenMed
وبسایت · مستندات · X / توییتر · لینکدین