TopGit
Đánh giá repo GitHub

OpenMed: NLP Lâm Sàng & Ẩn Danh PII Cục Bộ

maziyarpanahi/openmed
OTopGit review image for maziyarpanahi/openmed
Review by Topgit.dev for maziyarpanahi/openmed, with GitHub repository stats and README context.
Nhận định nhanh

OpenMed là một SDK để chạy NER lâm sàng và ẩn danh PII theo hướng HIPAA cục bộ trong Python, Swift, hoặc Kotlin, xử lý văn bản bệnh nhân trên phần cứng của chính bạn thay vì một API được host. Hãy dùng nếu bạn cần xử lý văn bản y tế offline hoặc air-gapped trên Apple MLX, Android ONNX, hoặc trình duyệt WebGPU; bỏ qua nếu bạn muốn một cam kết tuân thủ có sẵn — README nói rõ dùng SDK không tự thiết lập tuân thủ HIPAA.

Sao
★ 5.3k
Fork
⑂ 672
Ngôn ngữ
Python
Giấy phép
Apache-2.0
Chủ đề
AI Tools
Cập nhật
Sep 2026
Trang chủ
GitHub

Tìm Hiểu AI Y Tế On-Device Của OpenMed

OpenMed là một SDK theo giấy phép Apache-2.0, đóng gói hơn 2.200 model y tế cho NER lâm sàng và ẩn danh PII sau một API Python — analyze_text, extract_pii, deidentify — cùng bản build native cho Swift/MLX, Android ONNX, và Transformers.js trong trình duyệt. Nó xử lý văn bản cục bộ khi file model đã có sẵn; chỉ lần tải đầu hoặc remote adapter được bật mới chạm mạng. Nó cũng có MCP server và catalog skills/ cho coding agent.

Năng Lực Cốt Lõi Cho Xử Lý Văn Bản Y Tế

  • Cùng một API cho mọi backend: analyze_text() và extract_pii()/deidentify() định tuyến tới CPU, CUDA, Apple MLX, ONNX, hoặc WebGPU trên trình duyệt chỉ bằng cách đổi tham số model_name, theo README.
  • Bốn phương thức de-identification tích hợp sẵn trong deidentify() — mask, replace (thay thế tổng hợp dựa trên Faker), hash, và shift_dates (dịch ngày theo số ngày cấu hình được) — tất cả đều được minh hoạ trong README trên cùng một hồ sơ bệnh nhân mẫu.
  • Smart entity merging giữ nguyên các span PII nhiều token, như một ngày tháng đầy đủ, thay vì tách chúng ra qua ranh giới tokenizer, theo README.
  • Một họ model Privacy Filter: ba bản fine-tune — OpenAI Privacy Filter, một bản tune Nemotron-PII, và một biến thể OpenMed Multilingual — dùng chung một kiến trúc sparse-MoE và API; benchmark trong chính README cho thấy MLX chạy nhanh hơn CPU PyTorch 24-33 lần cho họ model này (độ trễ trung vị mỗi bước suy luận).
  • 35 mã ngôn ngữ PII được hỗ trợ, 33 trong số đó có model riêng ngay hiện tại; tiếng Nga hiện dùng một model mặc định đa ngôn ngữ được ghi rõ trong tài liệu, và một add-on Indic NER tuỳ chọn bổ sung thêm bốn route khi người dùng đặt biến OPENMED_INDIC_NER_MODEL.
  • Hỗ trợ mã số định danh quốc gia có validator riêng cho các locale chỉ-ID mà README nêu tên trực tiếp, gồm Ba Lan, Latvia, Slovakia, Malaysia, Philippines, và Phần Lan.
  • Một REST service FastAPI cung cấp /health, /analyze, /pii/extract, và /pii/deidentify song song với API Python.
  • Sẵn sàng cho agent theo thiết kế: một MCP server, một tool registry có kiểu, và một catalog skills/ với các thư mục SKILL.md cài được vào Claude Code, Codex, và OpenCode qua install-skills.sh.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Ứng Dụng OpenMed Trong Quy Trình Y Tế

  • Trích xuất thực thể bệnh, thuốc, hoặc giải phẫu từ một ghi chú lâm sàng cục bộ, dùng các model trong registry như disease_detection_superclinical hay pharma_detection_superclinical thay vì gửi ghi chú đó tới một API bên thứ ba.
  • Ẩn danh một bản tóm tắt xuất viện trước khi nó rời khỏi mạng của bệnh viện, chọn mask, replace, hash, hoặc shift_dates tuỳ theo việc output cần giữ khả năng đọc được hay trở thành hoàn toàn tổng hợp.
  • Chạy cùng một model PII ONNX từ một backend Python, một app Android qua ONNX Runtime Mobile, và một tab trình duyệt qua Transformers.js/WebGPU — README trình bày cả ba cho cùng một model.
  • Xử lý PII trong một ghi chú không phải tiếng Anh: README có các ví dụ thực tế bằng tiếng Bồ Đào Nha, Hà Lan, Hindi, Ả Rập, Nhật, và Thổ Nhĩ Kỳ, mỗi ví dụ đều có output thực thể riêng.
  • Kết nối một coding agent — Claude Code, Codex, hoặc OpenCode — để gọi pipeline de-identify/analyze của OpenMed trên dữ liệu placeholder tổng hợp qua catalog skills, sau đó chạy pipeline đó cục bộ trên ghi chú thật.
  • Xây dựng một pipeline offline hoặc air-gapped bằng cách trỏ model_id tới một thư mục model cục bộ để OpenMed bỏ qua hoàn toàn Hugging Face Hub.

Bắt Đầu Với OpenMed

Python: pip install --upgrade "openmed[hf]" cho phần lõi cộng runtime Hugging Face trên Linux, macOS, hoặc Windows với CPU hoặc CUDA — README yêu cầu Python 3.10+. Thêm [hf,service] cho REST service hoặc [mlx] để tăng tốc trên Apple Silicon. Swift: thêm package qua Swift Package Manager — .package(url: "https://github.com/maziyarpanahi/openmed.git", from: "2.1.0") — package này resolve OpenMedKit để dùng import OpenMedKit. Android: thêm repository JitPack giới hạn nhóm com.github.maziyarpanahi trong settings.gradle.kts, sau đó khai báo dependency com.github.maziyarpanahi:openmed:v2.1.0. Trình duyệt: npm install openmed @huggingface/transformers, rồi nạp một model ONNX đã export bằng loadOnnxModel(). Docker: docker build -t openmed:local . cho REST service.

Thực Hiện NER Lâm Sàng Và Ẩn Danh PII

NER lâm sàng chạy qua một lệnh gọi duy nhất: analyze_text(text, model_name="disease_detection_superclinical") trả về result.entities, mỗi entity có nhãn, đoạn văn bản, và điểm tin cậy — ví dụ trong chính README gắn nhãn 'chronic myeloid leukemia' là DISEASE với độ tin cậy 0.98. Ẩn danh PII đi theo cùng khuôn mẫu: extract_pii(text, model_name="pii_superclinical_large", use_smart_merging=True) tìm các entity như NAME, DATE, và SSN, sau đó deidentify(text, method="mask"|"replace"|"hash"|"shift_dates") viết lại văn bản — README chạy cả bốn phương thức trên cùng một hồ sơ tổng hợp. Với khối lượng lớn, BatchProcessor(model_name=..., group_entities=True) xử lý một danh sách văn bản trong một lệnh gọi; README báo cáo throughput cao hơn tới 3.3 lần so với xử lý từng văn bản một trên CPU và 2.2 lần trên MLX.

Điểm mạnh

  • Một bề mặt API trải trên năm target triển khai — Python/CPU/CUDA, Apple MLX, Android ONNX Runtime Mobile, trình duyệt WebGPU, và một service FastAPI — nên đổi backend chỉ cần đổi model_name, không phải viết lại code gọi.
  • Các tuỳ chọn de-identification cụ thể thay vì một kiểu redaction chung: mask, replace, hash, và shift_dates cho phép chọn output vẫn đọc được hoặc hoàn toàn tổng hợp tuỳ theo mục đích dùng tiếp theo.
  • Độ phủ PII đa ngôn ngữ vượt xa một danh sách ngôn ngữ suông — các ví dụ thực tế trong README bằng tiếng Bồ Đào Nha, Hà Lan, Hindi, Ả Rập, Nhật, và Thổ Nhĩ Kỳ đều cho output thực thể thật.
  • Đường đi offline được ghi rõ ràng, không phải ngẫu nhiên: việc trỏ model_id tới một thư mục cục bộ được xác nhận là bỏ qua Hugging Face Hub, điều quan trọng cho môi trường lâm sàng air-gapped.
  • Công cụ cho agent — một MCP server, một tool registry có kiểu, và một catalog skills/ — là một interface hạng nhất song song với API Python, không phải thứ gắn thêm sau.

Lưu Ý Về Tuân Thủ HIPAA Và Triển Khai

  • Tuân thủ HIPAA không phải một ô tick đơn giản: README nói cấu hình theo hướng Safe Harbor có thể nhắm tới 18 nhóm định danh, nhưng vẫn cần rà soát triển khai bởi chuyên gia, và việc dùng SDK một mình không tự thiết lập tuân thủ.
  • Lời hứa xử lý on-device chỉ đúng sau khi thiết lập xong — việc tải model, các remote-provider adapter, các đường dẫn bật telemetry, và bất kỳ tích hợp nào do người dùng cấu hình đều được ghi nhận là ranh giới mạng riêng trong README.
  • Độ phủ ngôn ngữ không đồng đều: trong số 35 mã ngôn ngữ PII được hỗ trợ, chỉ 33 có model riêng, tiếng Nga hiện định tuyến tới một model mặc định đa ngôn ngữ được ghi rõ trong tài liệu, và add-on Indic NER là tuỳ chọn, không được đóng gói sẵn.
  • Giấy phép model và dataset không đồng nhất — bản thân SDK theo Apache-2.0, nhưng README nói điều khoản của từng model và dataset khác nhau, nên mỗi mục trong catalog cần được kiểm tra riêng.
  • Các con số benchmark trong README (MLX nhanh hơn 24-33 lần, throughput batch cao hơn tới 3.3 lần/2.2 lần) không kèm theo phương pháp đo hay thông số phần cứng cụ thể ngoài 'Apple Silicon' và 'CPU', nên nên xem đó là số liệu do nhà phát triển tự báo cáo chứ chưa được kiểm chứng độc lập.

Các Cách Tiếp Cận Khác Cho NLP Y Tế Cục Bộ

transformers — thư viện model tổng quát của Hugging Face; model của OpenMed được publish dưới dạng checkpoint Hugging Face chuẩn, nên bạn có thể nạp chúng (hoặc model lâm sàng khác) trực tiếp qua transformers thay vì dùng API bậc cao của OpenMed.Presidio — framework phát hiện và ẩn danh PII mã nguồn mở của Microsoft; một lựa chọn tổng quát hơn nếu bạn cần de-identification ngoài phạm vi lâm sàng mà OpenMed chuyên về.scispaCy — các model NLP y sinh và lâm sàng dựa trên spaCy; đáng cân nhắc nếu bạn đã ở trong hệ sinh thái spaCy thay vì hệ dựa trên Hugging Face của OpenMed.LocalAI — một runtime suy luận local-first tổng quát hơn cho LLM nói chung, hữu ích nếu bạn cần suy luận on-device vượt ra ngoài phạm vi NER/PII lâm sàng của OpenMed.

Câu Hỏi Thường Gặp Về OpenMed

OpenMed có tuân thủ HIPAA không?

OpenMed không tự nhận là tuân thủ HIPAA — README nói cấu hình theo hướng Safe Harbor của nó có thể nhắm tới 18 nhóm định danh, nhưng vẫn cần rà soát triển khai bởi chuyên gia, và việc dùng SDK một mình không thiết lập tuân thủ.

SDK OpenMed dùng giấy phép gì?

SDK OpenMed được phát hành theo giấy phép Apache-2.0, dù README lưu ý rằng điều khoản của từng model và dataset có thể khác nhau và cần được kiểm tra riêng.

OpenMed hỗ trợ những ngôn ngữ lập trình và nền tảng nào?

OpenMed cung cấp một API Python cho CPU, CUDA, và MLX, một package Swift (OpenMedKit) cho phần cứng Apple, một thư viện Kotlin cho Android qua ONNX Runtime Mobile, và một đường dùng JavaScript qua Transformers.js trong trình duyệt.

OpenMed có thể xử lý văn bản lâm sàng offline hoặc trong môi trường air-gapped không?

OpenMed hỗ trợ dùng offline và air-gapped bằng cách trỏ model_name hoặc model_id tới một thư mục model cục bộ, điều mà README xác nhận là bỏ qua Hugging Face Hub khi các file model đã có sẵn trên đĩa.

OpenMed hỗ trợ bao nhiêu ngôn ngữ để phát hiện PII?

OpenMed ghi nhận 35 mã ngôn ngữ PII được hỗ trợ, trong đó 33 mã có model riêng ngay hiện tại; một add-on Indic NER tuỳ chọn có thể mở rộng độ phủ thêm khi người dùng cấu hình.

OpenMed cung cấp những phương thức nào để ẩn danh PII?

Hàm deidentify() của OpenMed cung cấp bốn phương thức: mask (thay bằng nhãn), replace (thay thế tổng hợp dựa trên Faker), hash (băm không thể đảo ngược), và shift_dates (dịch ngày theo số ngày cấu hình được).

Vấn đề OpenMed giải quyết

Hầu hết cách chạy NER lâm sàng hay ẩn danh PII hiện nay đều phải gửi văn bản bệnh nhân — thông tin sức khoẻ được bảo vệ (protected health information) — tới một API được host, đúng kiểu chuyển giao khiến việc rà soát tuân thủ và quyền riêng tư dữ liệu của bệnh viện thêm khó khăn. README của OpenMed đóng khung lý do tồn tại của dự án quanh khoảng trống đó: một runtime cục bộ xử lý văn bản lâm sàng trên hạ tầng do bạn kiểm soát, sau khi các model artifact cần thiết được tải về một lần, thay vì định tuyến mỗi ghi chú qua một endpoint cloud.

Ai nên dùng — và ai nên bỏ qua

Hãy dùng OpenMed nếu bạn đang xây một sản phẩm lâm sàng hoặc y tế và cần NER y tế hoặc ẩn danh PII chạy trên hạ tầng do bạn kiểm soát — một backend Python, một app iOS qua MLX/OpenMedKit, một app Android qua ONNX Runtime Mobile, hoặc một tab trình duyệt qua WebGPU — và bạn sẵn sàng tự thực hiện việc thẩm định HIPAA của riêng mình trên nền đó. Bỏ qua nếu bạn cần một chứng nhận tuân thủ đi kèm sẵn: README nói rõ cấu hình theo hướng Safe Harbor và việc dùng SDK không tự thiết lập tuân thủ HIPAA, nên việc ký duyệt từ đội pháp lý hoặc compliance của bạn vẫn là việc bạn phải làm.

Repo liên quan

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repository GitHub maziyarpanahi/openmed và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 12 thg 8, 2026Đánh giá bởi Henry
Về TopGit

openmed có đáng để bạn bỏ thời gian?

ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về openmed.

GitHub