资讯动态

OpenMed 快速入门:从零搭建本地医疗 NER 与 PII 去标识化环境

发布时间:2026/9/18 16:18:03 来源:尧图企业网站定制
OpenMed 快速入门从零搭建本地医疗 NER 与 PII 去标识化环境【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed本指南基于 docs/getting-started.hi.md 的中文解读带你从一台空白工作站出发在几分钟内完成 OpenMed 的安装、首次analyze_text实体抽取、deidentify隐私去标识化、离线模型拉取与运行配置固定。OpenMed 是一个 Local-first本地优先医疗 AI SDK主打临床命名实体识别NER与符合 HIPAA 的 PII 去标识化可 100% 在设备端离线运行患者数据不离开你的网络。读完本文你将掌握一套可复现、可离线、可上生产的最小启动路径。本文全部命令与代码均可直接复制运行并以仓库中的 pyproject.toml、openmed/init.py、openmed/core/pii.py、openmed/cli/main.py 等源码为事实依据。1. 环境准备用 uv 创建干净的 Python 3.11 环境OpenMed 使用 uv 作为依赖管理工具任何 Python 3.11 环境均可工作仓库requires-python声明为3.10见 pyproject.toml。推荐做法是为项目创建独立虚拟环境避免污染系统 Python。macOS / Linuxcurl -LsSf https://astral.sh/uv/install.sh | sh # 安装 uv若已安装可跳过 uv venv --python 3.11 # 创建专用虚拟环境 source .venv/bin/activate # 或直接用 uv python 管理解释器 # 安装 OpenMed包含 Hugging Face extras 与文档工具链 uv pip install .[hf]Windows PowerShellpowershell -ExecutionPolicy ByPass -c irm https://astral.sh/uv/install.ps1 | iex uv venv --python 3.11 .venv\Scripts\Activate.ps1 # 安装 OpenMed包含 Hugging Face extras 与文档工具链 uv pip install .[hf].[hf]中的hf是核心 extras对应 pyproject.toml 中的依赖组合transformers4.50、huggingface-hub0.30、accelerate0.29、tokenizers0.15。这些依赖支撑了从 Hugging Face Hub 拉取模型与运行 token 分类 pipeline 的全部能力。按需选择 extras根据你的使用场景可以按需组合安装以下 extrasuv pip install .[hf,gliner] # 加入 GLiNER 与 transformerszero-shot 模型栈 uv pip install .[dev] # 开发工具pytest、覆盖率与 lintingglinerextra 定义于 pyproject.toml引入gliner[tokenizers]0.2.0与torch2.0用于 zero-shot GLiNER 场景devextrapyproject.toml则包含pytest、pytest-cov、ruff、mypy、pre-commit等开发依赖。如果需要扫描图片与文档 OCR安装多模态 extra 以及系统 Tesseract 二进制uv pip install .[multimodal] brew install tesseract # macOS sudo apt-get install tesseract-ocr # Debian/Ubuntu多模态 extra 覆盖了 pyproject.toml 中的pdfplumber、python-docx、python-pptx、pytesseract、easyocr、pydicom、pikepdf等依赖支撑 PDF、Office 文档、DICOM 影像的文本提取与 OCR。PaddleOCR 作为更重型的可选 OCR 后端单独提供它依赖 paddlepaddle体积大且平台敏感故不并入通用多模态 extra见 pyproject.toml 注释uv pip install .[ocr-paddle]CDA/C-CDA XML 去标识化开箱即用CDA/C-CDA XML 去标识化随主安装包提供无需额外 extras。它会对结构化头部元素中的 PHI 做脱敏检查 CDA 章节的叙述性文本保持 XML 可解析并且只处理形似 CDA 文档的.xml文件。其实现位于 openmed/interop/cda.py通过数据驱动的PhiElementRule规则表如对recordTarget/patientRole/id做hash、对地址做null_flavor处理见 openmed/interop/cda.py保证命名空间感知的精准脱敏from openmed.interop.cda import redact_cda redacted_xml redact_cda(synthetic_ccda.xml, date_shift_days30)Apple Silicon直接走 MLX 路径在 Apple Silicon Mac 上可以直接安装 MLX 后端并验证运行环境uv pip install .[mlx] # Python MLX 运行时及 tokenizer/artifact 依赖 uv run python -c from openmed.core.backends import get_backend; print(type(get_backend()).__name__)mlxextra 定义于 pyproject.toml包含mlx0.22、mlx-lm0.31、safetensors、tiktoken等依赖。get_backend()会按当前环境返回实际生效的后端类型是验证安装是否成功的快速手段。全量安装组合 extras如果希望在一台机器上拥有完整的启动面Hugging Face 模型、MLX 运行时、文档构建直接组合安装uv pip install .[hf,mlx,docs]2. 运行analyze_text第一次临床实体抽取analyze_text是 OpenMed 顶层 API 之一定义见 openmed/init.py默认使用disease_detection_superclinical模型走 token-classification pipeline。它支持output_format参数dict默认、json、html、csv、置信度阈值、句子检测、上下文断言assert_context等丰富选项。from openmed import analyze_text text Metastatic breast cancer treated with paclitaxel and trastuzumab. resp analyze_text(text, model_namedisease_detection_superclinical) print(resp.entities[0]) # 需要可嵌入的 HTML选择 html 输出格式 html analyze_text(text, model_namedisease_detection_superclinical, output_formathtml) print(html) # 可直接用于仪表盘或文档从源码看analyze_text内部会依次执行输入校验、模型名校验、pipeline 创建、句子切分sentence_detectionTrue默认开启、按句子分块推理、跨块偏移还原、置信度过滤与格式化输出见 openmed/init.py最终返回包含实体列表的AnalyzeResult或指定格式的渲染结果。喜欢一行脚本的快速验证直接运行仓库自带的 smoke 脚本uv run python examples/pii_model_comparison.py3. PII 去标识化deidentify的五种脱敏方法deidentify()是面向 HIPAA 合规的顶层接口定义见 openmed/core/pii.py支持mask、remove、replace、hash、shift_dates五种核心方法另有aadhaar_mask、format_preserve等扩展方法from openmed import deidentify result deidentify(Patient John Doe, DOB 01/15/1970, methodmask) print(result.deidentified_text) # Patient [first_name] [last_name], DOB [date]五种核心方法的行为依据 openmed/core/pii.py 的 docstring方法行为典型用途mask替换为占位符如[NAME]、[EMAIL]、[DATE]默认方法最直观的脱敏展示remove完全删除 PII 文本替换为空串追求最大程度的信息移除replace替换为伪造但逼真的数据保留文本可读性的仿真场景hash替换为一致的哈希值实体链接同一实体多次出现得到相同值shift_dates日期按随机偏移量平移同时保持时间间隔保留时间语义的临床研究此外deidentify还内置了智能合并smart merging逻辑用正则把被切碎的实体重新拼合例如把拆成01和/15/1970的日期合并成完整的01/15/1970并默认开启 safety sweep 提高召回安全性。每种方法的可运行示例以及如何用reidentify()恢复结果见 匿名化快速入门。4. 离线使用可靠地拉取模型在开始离线工作前先用模型拉取命令预热 Hugging Face cache。该命令支持断点续传中断后自动恢复、对临时网络故障自动重试并会针对 Hub 元数据逐一校验每个文件的完整性openmed models pull disease_detection_superclinical在按流量计费或不稳定的网络环境下可以固定 revision、限制传输速度并显式设置重试次数openmed models pull disease_detection_superclinical \ --revision main \ --max-bandwidth 524288 \ --retries 5这些参数在 openmed/cli/main.py 中定义--revision可选的分支、tag 或 commit用于固定模型版本--max-bandwidth以字节/秒为单位的聚合下载带宽上限--max-bandwidth 524288即约 512 KiB/s--retries临时网络失败的重试次数默认 5 次。底层实现是prefetch_model见 openmed/core/hf_hub.py它会校验max_bandwidth必须为正整数超过retries上限或带宽非法时抛出ValueError下载完成后还会对照 Hub 报告的 commit hash、文件大小与 ETag 做完整性验证任一不匹配即抛DownloadIntegrityError。进度输出只包含 repository 文件名与字节/文件总数不含内容避免敏感信息泄露。Pull 完成后设置OPENMED_OFFLINE1再次运行同一命令将只做 cache 查找、绝不尝试网络连接export OPENMED_OFFLINE1若你的目标场景是间歇性网络、离线诊所、OpenMRS 或 DHIS2 集成可进一步参考 非洲开发者上手指南低带宽模型配置、纯本地推理、隐私 profile 指南与 FHIR 集成配方若需要为 metered/离线部署准备安装包或身处机构 proxy / package mirror 之后参见 低带宽、镜像与 proxy 安装指南其中包含 pip、HF_ENDPOINT、共享模型 cache 与诊断的完整配置。5. 从文档复制代码片段本文档的所有代码块均带 Material for MkDocs 的复制按钮。也可以打开命令面板/或cmd/ctrl K搜索 GLiNER、OpenMedConfig 或 token classification在预览中直接复制对应片段。若你使用 AI 编程助手可将已发布文档的 URL 交给它让助手读取这份结构化 Markdown 后给出有依据的回答。6. 可选固定配置OpenMedConfig ModelLoader对于需要长期复用同一模型管线、或在服务中管理多个模型的场景推荐显式构造OpenMedConfig与ModelLoaderfrom openmed.core import OpenMedConfig, ModelLoader config OpenMedConfig.from_env_fallback( cache_dir~/.cache/openmed, devicecuda, default_orgOpenMed, ) loader ModelLoader(configconfig) ner loader.create_pipeline(disease_detection_superclinical) entities ner(Hydroxyurea dose reduced after platelet drop.)from_env_fallback支持从环境变量读取配置并回退到显式参数非常适合在开发、CI 与生产之间复用同一套配置逻辑。ModelLoader则是模型注册、加载与 pipeline 构建的统一入口openmed顶层包中的analyze_text、list_models、get_model_max_length等都依赖它按需解析见 openmed/init.py。完整的 YAML/ENV 配置 schema、PHI 感知的校验辅助工具与日志设置参见仓库中的 配置文档。小结一条通往离线生产的启动路径从本文你可以得到一条清晰的路径用 uv 创建 Python 3.11 环境并安装.[hf]必要时叠加gliner、multimodal、mlx等 extras→ 用analyze_text验证临床实体抽取 → 用deidentify的五种方法完成 PII 脱敏 → 用openmed models pull预热离线缓存并设置OPENMED_OFFLINE1→ 用OpenMedConfig与ModelLoader固定生产配置。每一步都有对应的仓库源码实现可查证整条链路完全本地化运行适合在数据不出网的合规要求下快速落地。【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价