OpenMed — ذكاء اصطناعي صحي محلي

ذكاء اصطناعي صحي محلي لا يغادر جهازك أبدًا

حوِّل النص السريري إلى رؤى منظَّمة بسطر واحد من التعليمات البرمجية.
استخراج الكيانات، وإزالة معرّفات الهوية الشخصية (PII)، وأكثر من 1,000 نموذج طبي متخصص تعمل بالكامل على عتادك الخاص — من سطر واحد في بايثون إلى تطبيق Swift أصلي على iPhone، مدعومًا بـ Apple MLX. بدون سحابة. بدون ارتباط بمورّد. وبدون خروج بيانات المريض من شبكتك.

PyPI Python Models arXiv License Stars

Swift — OpenMedKit Apple Silicon — MLX Platforms Docs

1,000+ نموذج  ·  12 لغة  ·  247 نقطة تحقق PII  ·  100% على الجهاز  ·  Apache-2.0

English · 简体中文 · Español · Français · Deutsch · Italiano · Português · Nederlands · العربية · हिन्दी · తెలుగు · 日本語 · Türkçe · فارسی

---
## شاهده أثناء العمل
OpenMed يزيل معرّفات الهوية من تقرير خروج سريري في الوقت الفعلي
إزالة معرّفات الهوية في الوقت الفعلي — يقوم 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:<12} {entity.text:<28} {entity.confidence:.2f}") # DISEASE chronic myeloid leukemia 0.98 # DRUG imatinib 0.95 ```
نموذج NER سريري حديث يعمل محليًا — بدون مفتاح API، وبدون أي اتصال شبكي.
---
## لماذا OpenMed؟ | | **OpenMed** | واجهات برمجة طبية سحابية | | ------------------------------------- | :----------------------: | :-----------------------: | | يعمل على جهازك/خوادمك | ✅ | ❌ | | بيانات المريض تغادر شبكتك | **أبدًا** | تُرسل إلى المورّد | | التكلفة | مجاني ومفتوح المصدر | تسعير لكل طلب | | نماذج طبية متخصصة | 1,000+ | محدودة | | اللغات | 12+ | متفاوتة | | دون اتصال / معزول (air-gapped) | ✅ | ❌ | | تسريع Apple Silicon (MLX) | ✅ | غير متاح | | تطبيقات iOS / macOS أصلية | ✅ عبر OpenMedKit | ❌ | | الارتباط بمورّد | لا يوجد — Apache-2.0 | نعم | - **نماذج متخصصة** — أكثر من 1,000 نموذج طبي حيوي وسريري منتقى، يتفوق كثير منها على الحلول الاحتكارية. - **إزالة هوية متوافقة مع HIPAA** — جميع معرّفات Safe Harbor الثمانية عشر، ودمج ذكي للكيانات، وبدائل وهمية تحافظ على التنسيق. - **يعمل في كل مكان** — CPU وCUDA وApple Silicon (MLX)، وبشكل أصلي في تطبيقات iOS/macOS عبر OpenMedKit. - **نشر بسطر واحد** — واجهة Python، خدمة REST عبر Docker، أو مسارات معالجة دفعية. - **بدون ارتباط** — Apache-2.0، بنيتك التحتية، بياناتك.
---
## على الجهاز، على Apple — Swift وMLX وiOS صُمِّم OpenMed ليعمل حيث توجد بياناتك بالفعل. على عتاد Apple يتسارع باستخدام **MLX**، ويصل مباشرةً إلى تطبيقات iPhone وiPad وMac عبر **[OpenMedKit](swift/OpenMedKit)** — بحيث يجري كشف PII والاستخراج السريري دون اتصال بالكامل، على الجهاز نفسه.
```swift // Add OpenMedKit to your app dependencies: [ .package(url: "https://github.com/maziyarpanahi/openmed.git", from: "1.5.5"), ] ```
- **زمن تشغيل MLX** لتصنيف رموز PII، وعائلة Privacy Filter، ومهام zero-shot التجريبية لعائلة GLiNER — مع مسار احتياطي عبر CoreML. - **اسم نموذج واحد، كل المنصات** — على العتاد غير التابع لـ Apple، تعود أسماء نماذج MLX تلقائيًا إلى نقطة تحقق PyTorch المقابلة. - **Python على Apple Silicon** أيضًا: `pip install "openmed[mlx]"`. الأدلة: [خلفية MLX](docs/mlx-backend.md) · [OpenMedKit (Swift)](docs/swift-openmedkit.md) · [تصدير CoreML](docs/coreml-export.md)
---
## كيف يعمل
```mermaid flowchart LR A["نص سريري"] --> B["OpenMed
(100% على الجهاز)"] 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 ``` ---
## البدء السريع
```bash # 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** ```python from openmed import analyze_text analyze_text( "Patient received 75mg " "clopidogrel for NSTEMI.", model_name= "pharma_detection_superclinical", ) ``` **خدمة REST** ```bash uvicorn openmed.service.app:app \ --host 0.0.0.0 --port 8080 ``` `GET /health` `POST /analyze` `POST /pii/extract` `POST /pii/deidentify` **دفعي** ```python 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:
```python 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 الطبية المتخصصة — تصفّح [الكتالوج الكامل](https://openmed.life/docs/model-registry).
| النموذج | التخصص | أنواع الكيانات | الحجم | |---------|--------|----------------|-------| | `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 | ---
## الخصوصية: كشف PII وإزالة الهوية
```python 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 الثمانية عشر، مع عتبات ثقة قابلة للضبط. [دفتر PII الكامل](examples/notebooks/PII_Detection_Complete_Guide.ipynb) · [الدمج الذكي](docs/pii-smart-merging.md) · [إخفاء الهوية](docs/anonymization.md)
عائلة Privacy Filter — ثلاث عائلات نماذج على معمارية OpenAI Privacy Filter
شِفرة النموذج واحدة (محوّل Sparse-MoE بأسلوب gpt-oss مع انتباه محلي، ورموز sink، وRoPE+YaRN، وتجزئة tiktoken `o200k_base`)؛ تختلف بيانات التدريب فقط. تمرّ جميعها عبر **نفس** واجهة `extract_pii()` / `deidentify()` — يتغيّر فقط الوسيط `model_name=`.
| المتغيّر | PyTorch (CPU + CUDA) | MLX (Apple Silicon) | MLX 8-bit | | --- | --- | --- | --- | | **OpenAI Privacy Filter** | [`openai/privacy-filter`](https://huggingface.co/openai/privacy-filter) | [`OpenMed/privacy-filter-mlx`](https://huggingface.co/OpenMed/privacy-filter-mlx) | [`…-mlx-8bit`](https://huggingface.co/OpenMed/privacy-filter-mlx-8bit) | | **Nemotron-PII fine-tune** | [`OpenMed/privacy-filter-nemotron`](https://huggingface.co/OpenMed/privacy-filter-nemotron) | [`…-nemotron-mlx`](https://huggingface.co/OpenMed/privacy-filter-nemotron-mlx) | [`…-nemotron-mlx-8bit`](https://huggingface.co/OpenMed/privacy-filter-nemotron-mlx-8bit) | | **OpenMed Multilingual** | [`OpenMed/privacy-filter-multilingual`](https://huggingface.co/OpenMed/privacy-filter-multilingual) | [`…-multilingual-mlx`](https://huggingface.co/OpenMed/privacy-filter-multilingual-mlx) | [`…-multilingual-mlx-8bit`](https://huggingface.co/OpenMed/privacy-filter-multilingual-mlx-8bit) | ```python 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 وتوجيه الخلفية](docs/anonymization.md#privacy-filter-family).
---
## PII متعدد اللغات (12 لغة) الاستخراج وإزالة الهوية في `en`، `fr`، `de`، `it`، `es`، `nl`، `hi`، `te`، `pt`، `ar`، `ja` و`tr` — **247 نقطة تحقق PII** إجمالاً.
```bash 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])" ```
عرض أمثلة لكل لغة (البرتغالية، الهولندية، الهندية، العربية، اليابانية، التركية)
```python 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]) ```
---
## REST API خدمة FastAPI صديقة لـ Docker، مع التحقق من الطلبات، والتحميل المسبق لخط أنابيب مشترك، وأغلفة أخطاء موحّدة.
```bash pip install "openmed[hf,service]" uvicorn openmed.service.app:app --host 0.0.0.0 --port 8080 # or with Docker docker build -t openmed:1.5.5 . docker run --rm -p 8080:8080 -e OPENMED_PROFILE=prod openmed:1.5.5 ``` ```bash curl -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 الكامل](docs/rest-service.md).
---
## التوثيق الأدلة الكاملة على **[openmed.life/docs](https://openmed.life/docs/)**.
| | | | |---|---|---| | [البدء](https://openmed.life/docs/) | [تحليل النص](https://openmed.life/docs/analyze-text) | [سجل النماذج](https://openmed.life/docs/model-registry) | | [دليل كشف PII](examples/notebooks/PII_Detection_Complete_Guide.ipynb) | [إخفاء الهوية](docs/anonymization.md) | [المعالجة الدفعية](https://openmed.life/docs/batch-processing) | | [ملفات الإعداد](https://openmed.life/docs/profiles) | [خدمة REST](docs/rest-service.md) | [خلفية MLX](docs/mlx-backend.md) | ---
## تعرّف على التميمة تميمة OpenMed حارس OpenMed قطة فارسية كثيفة الفرو في هيئة **ابن سينا (Avicenna)** الصغير — الطبيب الفارسي العظيم الذي ظل كتابه «القانون في الطب» المرجع الطبي القياسي في العالم نحو 600 عام. يحرس كتاب المعرفة الطبية المفتوح، بلوحة ألوان مستوحاة من **الفيروز الفارسي (fīrūza)**: حارس محلي أولاً لأكثر بياناتك خصوصية.
---
## المساهمة المساهمات مُرحَّب بها — تقارير الأخطاء وطلبات الميزات وطلبات السحب (PR). - [افتح مشكلة (issue)](https://github.com/maziyarpanahi/openmed/issues) - **الترجمات مُرحَّب بها** — ساعد في إكمال ملفات README بلغات أخرى المرتبطة في مبدّل اللغات بالأعلى. ## شكر وتقدير يعتمد OpenMed على أعمال مفتوحة المصدر ممتازة — شكر خاص لـ **OpenAI** (معمارية [Privacy Filter](https://huggingface.co/openai/privacy-filter))، و**NVIDIA** (مجموعة بيانات [Nemotron PII](https://huggingface.co/datasets/nvidia/Nemotron-PII-v1))، و**Hugging Face** (`transformers` ومنظومة النماذج)، و**Apple** ([MLX](https://github.com/ml-explore/mlx))، ومشرفي **[Faker](https://faker.readthedocs.io/)**. ## الترخيص صادر بموجب [ترخيص Apache-2.0](LICENSE). ## الاستشهاد إذا كان OpenMed مفيدًا في بحثك، فيرجى الاستشهاد به:
```bibtex @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}, } ``` ---
## سجل النجوم إذا كان OpenMed مفيدًا لك، فإن نجمة تساعد الآخرين على اكتشافه.
رسم بياني لسجل النجوم ---
صُنع بواسطة فريق OpenMed الموقع · التوثيق · X / تويتر · LinkedIn