医生写给医生的影像病例库 — MedPix 教学档案

医生写给医生的病例库 / 影像+讨论+诊断三件套 / 站点已停用

来源 https://medpix.nlm.nih.gov/发布时间: 2026-10-27最后更新: 2026-10-27 阅读 20
医生写给医生的影像病例库 — MedPix 教学档案

信息速览

数据集名称医生写给医生的影像病例库 — MedPix 教学档案
数据类型原始影像,文本语料,元数据,文献引用
规模官方页面曾称 1.2 万余例患者病例(未核实,站点已停用)
接入方式https://medpix.nlm.nih.gov/
AI 就绪度

MedPix 是美国国家医学图书馆(NLM)与国家首都地区统一服务健康科学大学(USU)放射科共建的免费开放医学影像教学库。它与常见的影像数据集最大的不同在于组织的颗粒度:这里的单位是「病例」,一例病例包含一组影像、一段由医生撰写的病例讨论、一份鉴别诊断与一个最终诊断。影像和文字是配套出现的,而且都是医生为教学另行准备的,不是从病历系统里批量抠出来的原始数据。

按 2025 年一篇期刊介绍文给出的口径,MedPix 收录了 5.9 万余张医学影像、1.2 万余例患者病例与九千余个临床主题,覆盖放射、病理、皮肤、眼科与内镜等方向。这套规模在公开影像教学资源里属于第一梯队。但它的价值与它的危机来自同一件事:它是教学材料,不是研究数据。

2026 年 10 月 27 日本篇核查时,medpix.nlm.nih.gov 已经返回 302 跳转,落到 LHNCBC 站点上一个横幅写着「因技术问题暂停提供」的页面。这意味着规模数字只能引用官方与论文的历史口径,新的统计与逐例核对已无法进行。一屏速览见下表。

维度 内容
数据集名称 MedPix(Medical Image Database / Teaching File)
建设方 NLM 下属 Lister Hill 国家生物医学通信中心 + USU 放射与放射科学系
规模(官方历史口径) 5.9 万余张影像;1.2 万余例病例;9,000 余个临床主题
组织颗粒度 病例(case),一例挂 1 至 N 张影像 + 讨论 + 诊断
覆盖模态 放射(X 线、CT、MRI、超声、核医学)、病理、皮肤、眼科、内镜等
文本类型 病例叙述、鉴别诊断、最终诊断、主题标签;非结构化报告
许可 逐例不同,无统一许可证
访问方式 网页按病例浏览与检索;无官方整包下载
2026-10 状态 站点重定向至 LHNCBC 公告页,标注「临时不可用」
官方划分 无 train/val/test,无标注规范文档
主要用途 影像-文本配对、病例检索、教育评测、概念验证
主要风险 挑选偏差、按图切分泄漏、许可碎片化、数据陈旧
本篇核查层级 官方页面(跳转页横幅)+ 论文摘要;规模数字为官方历史口径

§1 它要解决的具体麻烦

1.1 教学场景缺的是「带答案的临床推理过程」,不是干净像素

放射科教学长期有一个结构性缺口:学员需要看到的不只是「这张片子上有什么」,而是「当年这位医生是怎么想到这个诊断的、又在哪些选项之间犹豫过」。教科书里的病例是精修过的,只给结论;院内病例又涉及隐私,很难拿来公开讨论。MedPix 补的正是这一段——它把一例病人的影像、医生的思考过程、最后的诊断串在一起,并公开挂到网上。

想清楚这个起点,后面的所有特点都顺理成章。既然目标是教会一个人做推理,那么「病例要典型」「要有鉴别诊断」「罕见病要收录」就是必须的,而「病例分布要符合流行病学先验」则从来不是目标。这也是本篇后面反复强调「病种分布偏离真实临床」的根本原因——这不是数据缺陷,而是设计目标所决定的。

1.2 三条常见的错误期待

期待一:把它当作「小型公开影像数据集」。 很多人第一次听说 MedPix,是把它和 ChestX-ray14、MIMIC-CXR 放在同一张对比表里。但后两者是按检查为单位组织的、有明确导出层级的资产;MedPix 是按病例组织的网页集合,从来没有过「解压即用」的形态。把它当作数据集来用,意味着你要自己承担抓取、清洗、切分与许可核查的全部工作。

期待二:把它当作报告生成语料。 病例讨论读起来确实很像放射科报告,有影像所见、有诊断。但报告是对一次检查的客观描述,讨论是围绕诊断展开的论证,两者的句子结构、信息密度与省略方式差别很大。用讨论文本训练报告生成模型,模型学会的是「讲一个病例故事」,不是「写一份结构化报告」。

期待三:把它当作可以直接宣布 SOTA 的评测集。 没有官方划分、没有统一标注、没有固定版本,任何「在 MedPix 上达到某指标」的说法都缺少可比性基础。它适合做定性展示与概念验证,不适合做排行榜。

三条期待背后是一个共同的假设:假定 MedPix 是为计算而设计的资源。换成「它是为阅读而设计的资源」这个前提,三条期待就都不成立了——阅读式资源天然不需要划分与固定版本。把期待校准到阅读这一侧,它的表现立刻从「不合格」变成「优秀」。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
影像与临床文本成对出现 每例都有影像组 + 讨论 + 诊断,逐例配套 够
覆盖多种模态 放射为主,兼有病理、皮肤、眼科、内镜 够(但各模态占比未知)
病种多样性 罕见病与典型病被刻意收录 够(多样性甚至偏多)
符合真实临床分布 按教学价值挑选,分布严重偏移 不够
统一标注规范 无标注规范文档,字段靠页面推断 不够
官方训练/测试划分 从未提供 不够
统一许可证 逐例不同,部分未标注 不够
稳定可下载的整包 无,且站点已停用 不够
切片级或体素级金标准 无分割 mask、无像素级标注 不够

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
想做一个影像-文本对齐的小型教学 demo 现成的病例叙述可当弱标签文本 只取少量病例,逐例抄许可,明确标注「教学用途」
在教放射住培生,需要公开可引用的病例 病例带完整推理链,适合课堂讨论 直接引用病例页与主题页,按网页引用规范注明来源
要给团队讲「医学影像数据集有哪些形态」 它是「病例库」这一形态的代表作 与 MIMIC-CXR、Open-i 并列讲,说明三种组织颗粒度的差异
想训练一个能识别罕见病的模型 罕见病例密度高于常规数据集 只把它当补充集,主训练集仍用有代表性抽样的数据
想找一份可以写进方法学的训练语料 无统一许可、无划分、无版本号 换数据集;若必须用,把许可核查与切分协议写成独立章节
已经下载过一份「MedPix 子集」 可以借本文核对它可能的来源与切分陷阱 先做病例级去重与泄漏检查,再做任何建模

1.5 一句话判断

MedPix 是全世界最大的「医生写给医生看」的影像病例库,它的教学价值极高,但它的病例是挑出来的、许可是碎的、服务是停的——把它当教材用,几乎是免费的午餐;把它当训练语料用,每一项便利后面都要你自己补一道工序。

1.6 不适合谁:四条边界

第一条边界:不适合需要代表性抽样的建模者。 如果你的目标是估计某病在人群中的影像表现分布,MedPix 从一开始就选错了。它收录的是「值得讲」的病例,不是「随机抽到」的病例。任何 prevalence、敏感度、特异度的估计都不能在这个库上做。

第二条边界:不适合需要严格许可链的团队。 企业法务不会接受「许可证:逐例不同,部分未标注」这种状态。医疗 AI 产品若要走注册路径,训练数据的来源与授权必须可追溯,MedPix 的碎片化许可在这一关很难通过。

第三条边界:不适合把「停用」当临时状态的项目。 站点横幅写的是「临时不可用」,但没有任何恢复时间表。任何依赖在线检索或在线核对的研究设计,都要准备一条离线备份路径,或者接受「引用的页面将来打不开」的现实。这条边界的具体形态见 §4.4 的案例——它不是一个假设,而是已经发生的事实。

还有一个不那么显性、但同样成立的不适合:不适合把教学成果当作可量化的科研产出。 有的团队希望用 MedPix 构造一个「教学效果评测集」,用来衡量模型是否学会了临床推理。这个想法本身不坏,但 MedPix 没有难度分级、没有标准答案的评分规则,也没有对同一病例的多位医生判断。构造评测集所需的元信息,必须全部自己补,而这往往是项目里最耗时的部分。

第四条边界:不适合需要像素级金标准的任务。 没有分割 mask、没有病灶坐标、没有放射科医生的双人复核记录。做分割、检测、定位类任务,这里给不了监督信号。

§2 数据构成与规格

2.1 三层结构:主题、病例、影像

MedPix 的组织方式可以拆成三层,理解这三层的关系是后续所有工程操作的前提。

顶层是主题(topic)。 主题是疾病、器官系统或征象的教学单元,一个主题页会汇总相关病例、影像与背景知识。官方口径里的「九千余个临床主题」指的就是这一层。主题更像教科书词条,它把散落的病例按知识点组织起来。

中层是病例(case)。 病例是 MedPix 真正的原子单位,也是所有统计口径里最实在的一层。一例病例有自己的编号与标题,挂着一组影像、一段病例叙述、一份鉴别诊断、一个最终诊断,还可能被归到多个主题下。官方口径里的「1.2 万余例患者病例」是这一层的计数。

底层是影像(image)。 影像挂在病例下面,一个病例可以只有一张,也可以有十几张。官方口径里的「5.9 万余张影像」是这一层的计数。

三层之间是多对多关系:一个主题对应多个病例,一个病例可归入多个主题;一例病例含多张影像,而同一张影像在极端情况下也可能出现在不同的主题展示中。这种多对多结构,是后面泄漏问题的根源。

2.2 字段与记录的完整字典

MedPix 没有公开的数据字典文档。下表是依据其页面结构与公开描述整理的字段清单,属于推断性字典,不是官方规格,使用时需以实际抓到的页面为准。

字段 所在层 含义 类型 可得性
case_id 病例 病例编号,站内唯一 字符串 页面可见
title 病例 病例标题,通常是病名或征象 字符串 页面可见
modality 病例/影像 影像模态,如 CT、MR、XR、US、NM、病理 枚举 页面可见
image_count 病例 该病例挂的影像张数 整数 需计数
findings 病例 影像所见叙述 长文本 页面可见
differential 病例 鉴别诊断列表 文本列表 页面可见
final_diagnosis 病例 最终诊断 字符串 页面可见
discussion 病例 病例讨论正文,含病理与随访 长文本 页面可见
topic_links 病例 所属主题列表 字符串列表 页面可见
organ_system 主题 器官系统归类 枚举 主题页可见
contributor 病例 投稿医生或机构 字符串 部分可见
license_note 病例/影像 许可说明 字符串 部分可见,多数缺失
acr_code 影像 ACR 索引编码(用于检索对齐) 字符串 部分可见
patient_age 病例 患者年龄段 区间 部分可见
patient_sex 病例 患者性别 枚举 部分可见

这张表本身就说明了问题:真正能稳定拿到的字段只有前九个,后面六个都存在不同程度的缺失。若要把 MedPix 转成结构化表,「哪些字段是必填」这个问题的答案在官方层面是不存在的。

字段缺失的程度还可以再细分一层,按「能否从页面本身恢复」来归类,结果如下表。这张表的用途是决定哪些字段可以进训练、哪些只能进元数据。

缺失类型 涉及字段 能否从页面恢复 补救办法
结构性缺失 版本号、划分、数据字典 不能 自己在方法学里定义并声明
记录级缺失 投稿人、患者年龄、性别 部分能 缺失即记为空,不做插补
许可缺失 许可说明 多数不能 一律记为 unknown,整库不可用
半结构化 鉴别诊断、主题链接 能,但需解析 按分隔符切分,保留原文
隐含字段 影像张数、模态 能,需计数 派生字段,写入时标注来源

2.3 一条记录的完整解剖

把一例病例拆开看,它的信息密度集中在前半段:病例叙述讲临床表现与影像所见,鉴别诊断列出候选,最终诊断给出答案,讨论部分再补充病理、随访与教学要点。下面是一个结构化的示例,字段名沿用上一节,内容为示意,不代表真实病例。

{
  "case_id": "case_example_001",
  "title": "教学示例病例(示意结构,非真实记录)",
  "modality": "CT",
  "image_count": 6,
  "images": [
    {"image_id": "img_001_a", "role": "轴位平扫,治疗前"},
    {"image_id": "img_001_b", "role": "轴位增强,治疗前"},
    {"image_id": "img_001_c", "role": "冠状位重建"},
    {"image_id": "img_001_d", "role": "随访,三个月后"},
    {"image_id": "img_001_e", "role": "随访,六个月后"},
    {"image_id": "img_001_f", "role": "病理切片对照"}
  ],
  "clinical_history": "一句到三句的临床经过概述",
  "findings": "影像所见叙述,含部位、大小、密度与增强方式",
  "differential": ["候选诊断一", "候选诊断二", "候选诊断三"],
  "final_diagnosis": "经病理或随访确认的最终诊断",
  "discussion": "病例讨论正文,含鉴别要点、病理对照与教学结论",
  "topic_links": ["topic_alpha", "topic_beta"],
  "contributor": "投稿医生署名(部分病例缺失)",
  "license_note": "逐例许可说明(多数病例缺失)"
}

按这个结构解析,一例病例在建模时至少可以派生出四种样本形态:整例级(一例一段文本)、影像级(每张影像配同一段文本)、问题级(从鉴别诊断中构造选择题)、检索级(主题与病例的关联对)。这四种形态对应完全不同的泄漏风险,§5 会逐个展开。

2.4 三个口径之间的比例关系

口径 官方历史数值 计算关系 解读
影像总数 5.9 万余 底层计数 若按影像数衡量,规模在公开教学库里靠前
病例总数 1.2 万余 中层计数 与影像数相除,平均每例约 5 张
主题总数 九千余 顶层计数 与病例数相比,主题数低于病例数

把三个数放在一起,能得到两个推论。推论一:平均每例不到五张影像。 这意味着大多数病例的影像组规模很小,与一次完整的 CT 检查动辄上百张切片完全不是一个量级。MedPix 交付的是「用于说明问题的几张关键图」,不是完整序列。推论二:主题数少于病例数。 说明平均每个主题汇聚了不止一例病例,主题层面的样本量比病例层面更厚,这也解释了为什么以主题为单位检索比以病例为单位检索更有效率。

需要提醒的是,这两个推论都建立在官方口径之上,而官方口径本身存在累计方式不明的可能。不同年代的宣传材料里出现过不同的表述,本文不判断哪种表述更准确,只说明存在口径差异这一事实。

再往下一层,三个口径之间的关系还可以用一句话概括:主题是索引,病例是实体,影像是证据。 索引可以很粗,实体必须完整,证据可以少但必须清楚。理解这三者各自的职责,就不会在抓取时把主题页当成病例页、把病例页当成影像页——这三种页面在结构上完全不同,抓错了会得到大量重复记录。§5.4 的解析脚本之所以要用不同的选择器,根源就在这里。

2.5 与同类资源的字段差异

资源 组织单位 有无影像 有无长文本 有无统一许可 有无官方划分
MedPix 病例 有,每例数张 有,医生撰写的讨论 无,逐例不同 无
MIMIC-CXR 检查 有,每检一至数张 有,放射科报告 有,PhysioNet DUA 无(但有官方切分建议)
Open-i 文献插图 有 有,图注 依原文 无
ChestX-ray14 影像 有 有,自动抽取的标签 有,CC0 类 有
VQA-RAD 问答对 有 有,短问答 论文声明 有

这张表要说明的核心是:MedPix 在「长文本」这一列是突出的,在「统一许可」与「官方划分」两列是空白的。 前者是它的价值,后者是它的负债,两者的来源是同一个——它是从教学场景长出来的,不是从研究需求设计出来的。

再补一列更细的比较:文本的「可计算程度」。MIMIC-CXR 的报告有固定章节,可以用规则切出「所见」与「印象」;ChestX-ray14 的标签是直接从报告里抽的字符串;VQA-RAD 的问答是短句。MedPix 的讨论没有固定章节,段落顺序也不稳定,同一类信息可能出现在任何位置。这意味着如果要做结构化抽取,MedPix 的文本处理成本是这几者中最高的,通常需要先做一轮人工标注来定义抽什么、怎么抽。

§3 它的身份:教学材料而不是研究数据

3.1 一句话定义与三处界定

要准确定位 MedPix,需要把它与三类容易混淆的对象划清界限。

与「影像数据集」划界。 影像数据集(ChestX-ray14、MIMIC-CXR、NIH 系列)的设计目标是可批量计算,因此必须有固定格式、固定字段、固定划分。MedPix 的设计目标是可被一位住院医师读懂,因此字段可以没有、格式可以是网页、划分从来不是议题。

与「医学知识库」划界。 知识库(UMLS、SNOMED CT、RadLex)关心的是术语与关系,不关心具体病例。MedPix 的每个条目都是具体病例,术语只是用来打标签。

与「开放获取文献库」划界。 文献库(PubMed Central、Open-i)的条目是论文或论文插图,其权威性来自发表于同行评议期刊。MedPix 的条目是投稿,权威性来自编辑流程与医生署名,二者的可信度来源不同。

3.2 它到底回答什么问题

把这三处界定收拢,MedPix 回答的问题是:「这个影像表现,在临床上是怎样一段推理?」 它的每个条目都是一次推理过程的展示。这解释了为什么它的文本如此丰富(推理需要叙述)、为什么它的影像如此少(推理只需要关键图)、为什么它的病种如此偏(推理需要典型与罕见)。

反过来,它不回答的问题是:「这个影像表现在人群中多常见?」「这个算法在新数据上表现如何?」「这个病例的原始 DICOM 在哪?」这三个问题分别属于流行病学、方法学与数据工程,MedPix 都没有对应的设计。

这三处界定还可以换一个角度表述:MedPix 是纵向的,其他三类资源是横向的。 纵向指它在一例病例上往下挖,把影像、讨论、病理、随访串成一条线;横向指其他资源在一件事上铺开,把同一类影像或同一条术语的成千上万个实例聚在一起。做纵向的推理教育,做横向的统计建模,两者对数据的组织要求恰好相反。理解了这一对方向,就不会再去问「为什么 MedPix 不做划分」——横向资源才需要划分,纵向资源只需要完整。

3.3 投稿驱动的生产模式

MedPix 的内容不是由一个团队集中生产的,而是由执业医生投稿、站方编辑上架。这个模式带来三个后果。

后果一:质量随投稿人波动。 有的投稿人写得很细,带病理对照与随访;有的只有三五句话。文本长度的方差会非常大,这在训练语言模型时是一个需要考虑的混杂因素。

后果二:病种分布由投稿兴趣决定。 哪些病被写得多,取决于哪些医生愿意写、站方愿意收,而不是疾病负担。神经影像、肌骨影像这类「看图说话」友好的方向可能被过度代表,而需要动态或多期对比的方向相对少。

后果三:许可需要逐例谈。 因为每例都来自不同的投稿人,授权条款自然是逐例的,这也直接导致了许可碎片化。

3.4 它服务的是谁

按 2025 年的介绍文,MedPix 服务的是医生、医学生、教育工作者与研究者四类人群,并提供继续医学教育(CME)学分。这四类人的需求差异很大:医学生要的是覆盖面,住院医师要的是鉴别思路,教育工作者要的是可引用的公开素材,研究者要的是可计算的数据。前三种需求在网页形态下都能被满足,第四种需求则天然与网页形态冲突——这正是研究者用起来别扭的原因。

3.5 「病例」这一颗粒度的代价

以病例为颗粒度,是最符合教学直觉的选择,但对计算并不友好。

处理方式 教学场景 研究场景
整例为单位 一页读完,逻辑完整 样本量只有一万余,且长短悬殊
影像为单位 学员逐张看 训练样本变多,但同例影像高度相关
段落为单位 难以展示 文本样本变多,但丢失了图文对应
问答为单位 需人工改写 可做评测,但需重新构造标签

四种处理方式各有取舍,没有一种能在教学与研究两侧同时最优。这也是为什么同一个 MedPix 在社区里会衍生出形态迥异的多个子集。

§4 它的质量:好在哪里,坏在哪里

4.1 文本质量:医生写的那一层

MedPix 的文本质量在公开资源里属于少数派。绝大多数公开影像-文本数据集,文本来源是放射科报告,而报告的语言是被格式规训过的——固定句式、固定顺序、省略因果关系。MedPix 的文本是叙述性的,会写「起初怀疑 X,但 Y 征象不支持」,会写「术后病理证实为 Z,回过头看 A 征象是关键」。

这种叙述对两类任务特别有价值:一是需要推理链的问答构造,二是需要解释性的模型评估。前者可以直接从鉴别诊断中抽取候选,后者可以用讨论文本作为人类参考解释。

代价是文本长度与结构的方差极大。同一批病例里,有的讨论长达千字,有的只有两行。做文本长度分层是使用前的必要步骤。

把两类文本放在一起比较,差异会更清楚。

维度 放射科报告 MedPix 病例讨论
写作目的 记录检查结果,服务临床决策 解释推理过程,服务教学
信息组织 固定模板,部位到结论 自由叙述,常有时间线
确定性表达 有分级用语,如「考虑」「建议随访」 常写「当时怀疑」「后来证实」
否定与排除 简短,常一句带过 详写为何排除某个候选
错误与弯路 基本不出现 常被保留,作为教学点
篇幅 稳定,通常数百字 波动大,数十到千余字
隐私处理 有系统脱敏流程 依赖投稿人自述与站方编辑

这张表最有价值的一行是「错误与弯路」。报告里几乎不会写「我一开始判断错了」,而 MedPix 的讨论会写。这类文本对训练模型的反思能力、对构造需要解释的任务很有用,但也意味着直接混进报告语料会带来风格污染。

4.2 影像质量:教学副本的性质

MedPix 的影像是投稿医生为教学另行准备的副本,这一点需要重视。它不是原始 DICOM 序列,而是经过挑选、标注、可能裁剪与重编码的图片。这意味着三件事:原始像素值(如 CT 的 HU 值)大概率不可恢复;层厚、窗宽窗位等采集参数不完整;不同病例的图片预处理方式可能不一致。

对于需要定量分析的影像组学任务,这是硬伤。对于只需要形态学判断的分类任务,影响相对小。

把「教学副本」这件事拆到具体后果,可以列出四条:其一,无法做标准的窗宽窗位变换,因为原始灰度范围已经丢失;其二,无法计算体积或长径的绝对数值,因为缺少像素间距;其三,无法做序列对齐,因为一个病例的影像可能来自不同时间、不同设备,甚至不同模态;其四,无法复现原作者的标注,因为判断依据可能只存在于文字里。四条合起来,结论是 MedPix 能支持「这是什么」的判断,支持不了「这是多少」的测量。

4.3 覆盖广度:五种模态的拼盘

官方描述里提到放射、病理、皮肤、眼科、内镜等多个方向。这个广度是 MedPix 的独特之处——很少有公开资源能同时提供皮肤镜照片、眼底照、内镜截图与放射影像。但广度也意味着每类的深度有限,且各模态的采集设备、成像原理、判读逻辑完全不同,把它们混在一起训练一个模型的做法,在方法学上通常站不住脚。

按模态拆开看,每一类各自的适用任务与限制也不一样。

方向 典型内容 适合的任务 限制
放射 X 线、CT、MR、超声、核医学的关键图 图分类、图文检索、影像问答 只有关键图,无完整序列
病理 大体标本与镜下图像对照 病理与影像的对应关系研究 数量少,染色与设备不统一
皮肤 皮损临床照、皮肤镜 皮损分类、鉴别演示 光照与拍摄距离不可控
眼科 眼底照、眼前段照 眼底病灶识别 缺少视野与分级标准
内镜 消化道内镜截图 病变识别、教学演示 单帧,无视频序列

读法是:每个方向都只够做「演示级」任务,没一个够做产品级训练。 跨模态研究里,它更适合当对照组来源。

4.4 案例:「停用页面」这一例

本文用一个具体案例贯穿全文:LHNCBC 停用页。这是 MedPix 在 2026 年 10 月对外呈现的真实形态,它把整个数据集的所有结构性问题压缩到了一屏之内。

访问 https://medpix.nlm.nih.gov/ 时,服务器返回 302,跳转到 https://lhncbc.nlm.nih.gov/medpix.html。这个页面上没有病例、没有检索框,只有一条横幅,大意是 MedPix 的数据库、教学文件、CME 与 CUP 功能因技术问题暂停提供,有问题请联系 NLM 支持中心。页面的其余部分是标准的政府站点导航与页脚。

这一例之所以值得反复引用,是因为它同时暴露了四件事:其一,站点是活的,重定向是配置好的,说明停用是有意为之而非宕机;其二,措辞是「临时不可用」,没有给恢复时间表;其三,原站点上的病例内容此刻不可检索,任何依赖在线核对的引用都会断链;其四,LHNCBC 的项目列表里已经找不到 MedPix 的条目,活跃项目与退役项目两个列表都没有它。

这四条合起来,构成一个完整的状态判断:MedPix 已经从「运行中的项目」转入了「挂起的资产」。§5.6、§7.3、§8.4 都会再回到 §4.4 的案例。

4.5 编辑流程与可信度

从公开材料看,MedPix 的编辑流程包括投稿审核与主题归类,但具体标准没有公开。这意味着两件事:内容质量有下限(至少经过一次人工把关),但没有可复现的质量分级(无法判断某一例的可信度高于另一例)。

对于做数据质量研究的团队,这本身是一个值得记录的观察点:一个运营了二十余年的教学库,其编辑标准始终没有文献化。

把这一点与现代数据集的发布规范对照,差距更明显。现代数据集通常随包发布一份数据卡片或数据说明,写明采集方式、标注规范、已知限制、伦理审批与维护承诺。MedPix 一生没有发布过这类文档,它对外呈现的全部规范信息,都散落在网页的措辞与个别论文的转述里。对使用者而言,这意味着一件事:任何关于 MedPix 的系统性描述,都是第三方从其页面反推出来的,包括本篇。 这一点在 §7.0 的前置校正里已经提到,此处再从文档角度确认一次。

4.6 与其他教学库的横向比较

把 MedPix 与几类同代的教学资源放在一起,可以看到它所处的位置。

资源类型 代表形态 优势 劣势
国家级在线教学库 本库一类 内容丰富、长期存在、免费 更新慢、工程规范缺失
学会病例库 各放射学会的病例栏目 有专家署名、质量较高 数量有限、多数需会员
教科书配套影像 纸质书附在线图 与章节对应、系统性强 数量少、许可受限
医院内部教学文件 院内 PACS 教学文件夹 数量大、贴近实际 不可公开、隐私受限

MedPix 属于第一格,是这一格在英语世界最知名的样本之一。

§5 怎么取数:路径、脚本与陷阱

5.1 现实约束:这不是一个「下载」问题

使用 MedPix 的第一件事是接受一个现实:没有官方下载。所有取数路径都是在网页层面操作。这带来两种完全不同的工作流。

工作流 前提 产出 风险
在线浏览与人工摘录 站点可用 少量病例的笔记与截图 站点停用时工作全部作废
批量抓取与离线归档 站点可用 + 有权限 自建的本地副本 版权与许可风险;站点结构变更即失效
使用他人二次整理的子集 有人整理过 未知来源的本地副本 无法追溯原始页面,许可无从核对
引用而不取用 无 只引用文献与页面 无法做实证研究

§4.4 的案例说明第一种工作流当前受阻。第二种与第三种在 2026 年 10 月之后基本不再可行,除非站点恢复。第四种是当前唯一无风险的路径。

再补一句关于「他人整理的子集」的提醒。社区里流传的一些所谓 MedPix 子集,往往只截取了图片与诊断,把讨论文本丢掉了。丢掉的恰恰是最有教学价值的那一部分。使用这类子集时,要先问三个问题:它包含多少例?是否保留了病例编号?是否记录了抓取时间?三个问题里任何一个答不上来,这份子集的溯源链就断了,后续的许可核查与去重都无从谈起。

5.2 可用性探测:一条最小脚本

在没有官方状态页的情况下,判断服务是否可用的最直接方式是看响应码与最终落点。下面这段脚本只做探测,不抓内容。

#-- 探测 MedPix 入口的当前状态:只看响应码与最终落点,不抓正文
curl -sS -o /dev/null \
  -w 'status=%{http_code} final=%{url_effective}\n' \
  -L --max-time 20 \
  https://medpix.nlm.nih.gov/

在 2026 年 10 月 27 日的核查中,这条命令的输出是 status=200 final=https://lhncbc.nlm.nih.gov/medpix.html。注意 200 并不代表服务正常——它代表跳转后的公告页正常返回。只看状态码会被误导,必须同时看最终落点。这一点对 §4.4 的案例是个重要补充。

5.3 若站点恢复:以病例为单位的抓取骨架

下面的脚本是抓取骨架,用病例编号驱动,把每个病例页存成独立文件。它假设站点恢复了按编号访问病例页的能力,实际路径需要以站点结构为准。脚本刻意不并发、不加延时以外的优化,因为礼貌抓取比速度重要。

import time
import pathlib
import requests

BASE = "https://medpix.nlm.nih.gov"
OUT = pathlib.Path("medpix_raw")
OUT.mkdir(exist_ok=True)

def fetch_case(case_id: str) -> bytes:
    url = f"{BASE}/case/{case_id}"
    resp = requests.get(url, timeout=30, headers={"User-Agent": "research-archiver/1.0"})
    resp.raise_for_status()
    return resp.content

def main(case_ids):
    for cid in case_ids:
        target = OUT / f"{cid}.html"
        if target.exists():
            continue
        target.write_bytes(fetch_case(cid))
        time.sleep(2.0)          #-- 每例之间停两秒,避免对政府站点造成压力

if __name__ == "__main__":
    main(["case_0001", "case_0002"])   #-- 编号请从主题页实际枚举得到

这段脚本只解决「把页面存下来」这一步,后面还有解析、去重、许可登记三步,每一步都比它复杂。

5.4 解析:从页面到结构化记录

页面存下来之后,要抽的是 §2.2 字典里的字段。解析器的难点不在语法,而在结构不稳定——不同年代的病例页模板可能不一样。下面给出一个基于选择器的解析示例,选择器需要按实际页面调整。

import re
from bs4 import BeautifulSoup

def parse_case(html: str, case_id: str) -> dict:
    soup = BeautifulSoup(html, "html.parser")
    def text_of(sel):
        node = soup.select_one(sel)
        return re.sub(r"\s+", " ", node.get_text(" ")).strip() if node else None

    return {
        "case_id": case_id,
        "title": text_of("h1.case-title"),
        "modality": text_of("span.case-modality"),
        "findings": text_of("section#findings"),
        "differential": text_of("section#differential"),
        "final_diagnosis": text_of("section#diagnosis"),
        "discussion": text_of("section#discussion"),
        "image_urls": [i.get("src") for i in soup.select("img.case-image")],
        "license_note": text_of("footer.license"),
    }

要特别注意的是最后的 license_note:这个字段在很多页面上是空的。解析器不能因为空就跳过,应该显式写入 "unknown",这样后续统计时才能看到有多少例的许可无从确认。

5.5 去重:病例级而不是图片级

去重是 MedPix 工程里最容易做错的一步。图片哈希去重能发现完全相同的文件,但发现不了「同一病例的不同切面」和「同一图片的不同尺寸」。正确的做法是三层去重。

import hashlib
from collections import defaultdict

def sha1_of(path: str) -> str:
    h = hashlib.sha1()
    with open(path, "rb") as f:
        for chunk in iter(lambda: f.read(1 << 20), b""):
            h.update(chunk)
    return h.hexdigest()

def build_groups(records):
    #-- 第一层:按病例编号分组,同病例的影像永远同组
    #-- 第二层:按图片字节哈希合并,找出跨病例复用的同一张图
    #-- 第三层:按(标题, 最终诊断)模糊聚类,找出内容重复但页面不同的病例
    by_bytes = defaultdict(list)
    for rec in records:
        key = sha1_of(rec["image_path"])
        by_bytes[key].append(rec["case_id"])

    shared = {k: sorted(set(v)) for k, v in by_bytes.items() if len(set(v)) > 1}
    return shared

返回的 shared 就是跨病例复用的图片清单。这份清单有两个用途:一是决定切分时要把这些病例绑在一起,二是评估「一图多例」的实际规模。§7.3 会说明,这个规模官方从未公布。

图像哈希只能发现完全相同的文件,形态相似但重新编码过的图片会被漏掉。因此第三层的模糊聚类不能省,尤其在「同一病例被不同投稿人重复提交」这种情况里。

去重清单生成之后,有三种用法,对应三种不同的研究设计。用法一:切分约束。 清单里同组的病例要么全进训练,要么全进测试,不能拆。用法二:规模校正。 把清单里的重复项从样本数里扣掉,得到「去重后的有效样本量」,这个数字通常比官方口径小不少。用法三:质量筛查。 重复出现的病例往往是被反复选用的典型病例,这类病例的教学价值高,但作为独立样本的信息量低,可以在分析时降权或单独列出。

三种用法里,第一种是必做项,后两种是选做项。判断标准是研究问题:如果研究关心「模型能不能泛化到新病例」,做第一种就够;如果研究关心「这个库有多少独立信息」,三种都要做。

5.6 切分:三种协议与各自的泄漏面

没有官方划分,切分协议要自己定并写进方法学。下面三种协议对应三种不同的研究假设。

协议 分组依据 评测的是什么 泄漏面
图片级随机切分 单张图片 对已知病例的新图片的泛化 严重:同病例毗邻影像同时入训测
病例级切分 病例编号 对新病例的泛化 中等:跨病例复用的影像仍会泄漏
主题级切分 主题编号 对未见病种的泛化 较小:但主题数有限,测试集覆盖不足

§4.4 的案例在这里的作用是提醒:如果连站点都打不开,这三种协议哪一种都无法落地。切分协议的设计必须与数据获取的稳定性一起考虑。这一点在设计实验方案时就该写进去,而不是等抓完数据才补。

协议选定的另一个考量是样本量。主题级切分虽然最严格,但主题数远少于病例数,测试集能覆盖的主题有限,统计结论的置信区间会很宽。病例级切分是折中方案,也是社区里最常用的做法。图片级切分只有在研究问题明确是「同一病例的相邻影像之间能不能互相识别」时才合理,其余场景下一律不建议采用。

5.7 许可登记:把「逐例不同」变成可查的表

由于许可逐例不同,任何规模化的使用都必须先建一张许可台账。台账至少要包含下面几列。

-- 许可台账:每例一行,用于在建模前审查可用范围
CREATE TABLE medpix_license (
    case_id        TEXT PRIMARY KEY,
    license_status TEXT NOT NULL,   -- public_domain / cc_variant / unknown
    license_text   TEXT,            -- 页面上原文抄录,不做改写
    checked_on     DATE NOT NULL,   -- 核对的日期
    notes          TEXT             -- 核对过程中的疑问
);

-- 统计各状态占比,帮助判断整库可否一次性使用
SELECT license_status, COUNT(*) AS n
FROM medpix_license
GROUP BY license_status
ORDER BY n DESC;

这张表的价值在于把模糊的「逐例不同」变成一个可以回答的问题:有多少例是确定的公有领域?多少例是完全未知?如果 unknown 占了大头,整库使用的法律风险就无法评估。

5.8 三条工程纪律

纪律一:先许可后下载。 顺序不能颠倒。先建台账、先抄许可原文,再决定要不要存图片。反过来做,等于先承担风险再补手续。

纪律二:先去重后切分。 去重清单要在切分之前生成,切分脚本要读取这份清单做分组约束。先切分再修补,几乎一定会漏。

纪律三:先记录后建模。 每一个病例的抓取日期、页面版本、许可状态都要写进元数据。MedPix 没有版本号,你的副本的版本号就是你自己记的那一行日期。

§6 与库内条目的关系

6.1 关系图谱

MedPix 在千方医数集的条目网络里,处在一个「形态参照」的位置。它不提供可直接训练的资产,但提供了一种组织方式的样本。

邻近条目类型 与 MedPix 的关系 差异点
胸片大规模数据集(如 ChestX-ray14 类) 同属影像-文本,但颗粒度不同 后者以影像为单位、有统一许可
ICU 多模态库(如 MIMIC 系列) 同属影像 + 长文本 后者以检查为单位、有 DUA 与官方文档
医学 VQA 基准 同属问答,但构造方式不同 后者有人工构造的问答对与固定划分
文献插图检索库(如 Open-i) 同属图文对,但来源不同 后者来自论文与图注
皮肤、眼底专科数据集 同属专科影像 后者单模态、有金标准
病历文本语料 同属临床文本 后者按文档组织、有脱敏规范

MedPix 在每个维度上都有一个更规矩的邻居,它的独特性恰在于不规矩:保住了医生的完整推理,失去了全部工程便利。

6.1b 三种「图文对」的构造方式

把 MedPix 与两个最常被拿来比较的邻居再展开一层,可以看清「图文对」这个词底下其实藏着三种完全不同的构造方式。

第一种:检查驱动的图文对。 这类资源从一次检查出发,影像与报告同源,图文的对应关系由检查号保证。它的优点是配准精确,缺点是文本被报告格式约束。MIMIC-CXR 是这一类。

第二种:标注驱动的图文对。 这类资源从一批影像出发,由标注规则或模型给每张图打标签,图文对应关系是「图 ↔ 标签集」。它的优点是规模大、结构整齐,缺点是文本几乎不含临床叙述。ChestX-ray14 是这一类。

第三种:教学驱动的图文对。 这类资源从「一个值得讲的病例」出发,影像为叙述服务,图文对应关系是「一组关键图 ↔ 一段推理」。它的优点是叙述丰富,缺点是影像不成序列、数量少。MedPix 是这一类。

三种构造方式对应三种下游用途,也对应三种不同的失败模式。第一种的失败模式是射影偏差:报告写的是那次检查的所见,不一定覆盖所有病灶。第二种的失败模式是标签噪声:从报告里抽出的字符串未必准确。第三种的失败模式是选择偏差:挑出来的病例不代表整体。判断一个图文数据集是否合用,第一步就是判断它属于这三类中的哪一类,然后接受那一类的失败模式。

6.2 检索路径

按用途检索,可以走下面这几条路径。

你的用途 建议先看 再看 最后看
想理解「病例库」这种形态 §2.1 三层结构 §3.1 三处界定 §4.4 的案例
想做影像-文本对齐 §2.3 记录解剖 §5.6 切分协议 §7.3 已知偏差
想评估许可风险 §5.7 许可台账 §7.4 验证矩阵 附录 B 来源分层
想写方法学章节 §5.4 解析 §5.5 去重 §9.3 引用方式
想向同事解释为什么不用它 §1.6 四条边界 §1.3 给到与给不到 常见误读

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

在给 MedPix 打分之前,必须先纠正一个常见的错位:不要用「数据集」的标准去评价一份「教材」。 如果把 MedPix 放在数据集的标准下,它在划分、许可、格式、版本四项上几乎全部不合格;如果把它放在教材的标准下,它的覆盖度、叙述完整性与图文配套度都是优秀的。

本节的所有评分都建立在一个前提下:评价的是「作为 AI 训练资源的 MedPix」,不是「作为医学教育网站的 MedPix」。 这个前提一旦确立,很多看似苛刻的判断就不再是挑刺,而是把使用场景说清楚。同样地,误判往往发生在把教材当数据集之后——人会因为「它有五万九千张影像」而默认它是数据资产,却忽略了那五万九千张是按教案挑的。

7.1 五维评分

维度 评分 理由
规模 4/5 影像数与病例数在公开教学资源里属第一梯队
结构完整度 2/5 无数据字典、无格式规范、无划分
标注可信度 3/5 诊断由医生给出,但无复核记录、无标注规范
可获取性 1/5 无官方下载,且 2026-10 站点停用
许可清晰度 1/5 逐例不同,大量缺失

五维合计 11/25。这个分数偏低,但分数的意义在于说明「直接拿来做研究」需要多少额外工序,而不是否定其教学价值。

7.2 与 DAIMS 框架的对照

DAIMS 是一套评估数据资产就绪度的检验清单,下面按它的几个关注点逐项对照。

关注点 MedPix 的状况 缺口
文档(Documentation) 无数据字典、无字段说明 需自行整理
可访问(Access) 网页形态,已停用 无
许可(License) 逐例不同 需逐例台账
溯源(Provenance) 有投稿人署名(部分) 不完整
版本(Versioning) 无版本号 无
格式(Format) 网页 + 图片,无标准容器 需自行转换
质量(Quality) 无复核记录 需自评
生态(Ecosystem) 有教学社区与文献引用 有

八个关注点里,只有「生态」一项是正面的。这与 §7.0 的校正完全一致:它的强项在社区与教学,弱项在工程与合规。

7.3 已知的、可枚举的偏差

偏差一:病例选择的富集偏差。 教学需要典型与罕见,因此这两类被过度代表。真实门诊里最常见的是「不典型的一般病」,而这恰恰最不适合做教案。任何在 MedPix 上计算的病种比例,都不能外推。

偏差二:影像数的不均衡。 有的病例只有一张图,有的有十几张。如果按影像统计,图片多的病例会被放大权重,相当于隐性地给这些病例更高的重要性。

偏差三:文本长度与质量的不均衡。 投稿驱动的文本,长度和质量随人而变。做文本模型时,长文本病例会主导损失函数。

偏差四:模态混合带来的伪相关。 皮肤镜照片与 CT 影像的成像逻辑完全不同,混在一起训练时,模型可能学到「图片风格 → 诊断」的捷径,而不是真正的医学特征。

偏差五:年代跨度带来的技术与规范漂移。 MedPix 从 1999 年前后持续收录到近几年,这期间的影像设备、成像协议、诊断标准都发生了变化。早期病例的影像质量与今天的标准不可比。

偏差六:语言与地域的集中。 投稿主体是英语国家的执业医生,病例的临床背景、诊疗习惯带有地域色彩。

偏差七:诊断层级的混杂。 有的最终诊断是病理确诊,有的是影像推断,有的甚至只是临床诊断。三者混在同一列里,做监督学习时标签的可信度参差不齐。

这七条偏差可以按「能否在建模阶段校正」再分一次类,分类结果决定处理策略。

偏差 能否校正 处理策略
病例选择富集 不能 只能在结论里声明,不能声称代表人群
影像数不均衡 能 按病例而非按影像加权抽样
文本长度不均衡 能 长度分层,长文本截断并记录
模态混合伪相关 能 分模态建模,或用模态作为条件变量
年代技术漂移 部分能 记录采集年代,做敏感性分析
语言与地域集中 不能 在限制章节声明
诊断层级混杂 部分能 尽量筛出有病理确证的那部分

七条里有四条可以校正,三条只能在声明层面处理。这个比例说明:MedPix 的偏差不是靠工程手段能补全的,声明与限制永远要写。

7.4 外部验证矩阵

判断 MedPix 能不能用,最好的办法是看别人怎么用它,以及用了之后得到了什么。

用法 代表工作类型 结论 对我们的启示
作为影像-文本预训练的补充语料 多模态预训练论文 常作为辅助集而非主集 它的定位就是补充
作为小型分类实验的数据源 方法学论文 报告的高准确率难以外推 不应用其数字宣称临床价值
作为教学资源被引用 教育学与图书馆学论文 评价多为正面 教学场景是它的主场
作为检索系统的测试集 图文检索论文 需自行切分 结论依赖切分协议
作为图像处理算法的测试图 信号处理论文 常只取少量图做定性展示 属于借用,不是数据集使用

这张矩阵传达的判断是:没有任何一个方向把 MedPix 当作主训练集。 它出现在各种工作里的角色,都是补充、展示或测试。

矩阵还暴露出一个方法论问题:这些工作大多默认了「使用的子集是干净的」。但它们用到的子集,本身就是从网页抓取再切分的产物,抓取时的去重与许可核查质量无法从论文里看出来。也就是说,当你引用一篇「在 MedPix 上做了某事」的论文时,你引用的是一个黑盒——黑盒里装的到底是哪些病例、怎么切的、许可如何,多数情况下论文没说,也很难追问。这一点在评估任何「MedPix 上的指标」时都要记住,也是 §4.4 的案例在方法学层面留下的教训。

7.5 它为何能持续:一个二十年机构的存档责任

MedPix 能在没有商业模式的情况下运营二十余年,靠的是 NLM 作为国家医学图书馆的存档职责。它不是竞争性项目,不靠引用量考核,因此可以在没有用户增长的情况下一直存在。这也解释了 2026 年停用的形态:不是被关停,而是被挂起。 一个商业产品停服通常会给出迁移方案;一个机构存档项目的暂停,通常就是把入口指向一个说明页,然后等。

这个逻辑对使用者的含义是双面的。好的一面是,只要 NLM 还在,数据本身在档案层面大概率不会消失,将来有恢复或迁移的可能。坏的一面是,没有任何机制保证它会恢复,也没有任何 SLA 可以依赖。

§8 生态位与历史

8.1 历史沿革:从军方教学需求到国家图书馆项目

MedPix 的出身与它的内容形态密切相关。它由 NLM 与 USU 放射科共同建设,后者的背景决定了早期内容带有明显的军事与创伤医学色彩。USU 位于华盛顿特区附近的贝塞斯达,与 NLM 同处一个园区,这种地理上的邻近使得合作在组织上很自然。

时间线上的关键节点如下表所示,其中部分年份属于公开叙述中的大致时间,未逐条核实。

这张表本身有一个值得注意的地方:它的绝大多数行都写着「未核实」。 这本身就是一条关于 MedPix 的事实——一个运营二十余年的资源,其发展史的主要细节从未被系统地记录下来,只能靠网页措辞与零散转述拼凑。对写百科条目的人而言,这意味着「诚实标注」比「补全叙述」更重要;对使用者而言,这意味着任何关于它历史的说法都要打折扣。

时间 事件 核实状态
1990 年代末 项目启动,早期以教学文件(teaching file)形态出现 未核实
2000 年代 逐步扩展为公开可检索的影像数据库与主题库 未核实
2010 年代 增加 CME 学分与病例讨论功能 未核实
2020 年代 内容更新放缓,逐步转为存量维护 未核实
2025-07 期刊介绍文发表,给出 5.9 万影像等规模口径 已核实(摘要)
2026-10 入口跳转至停用公告页,LHNCBC 项目列表无 MedPix 条目 已核实(页面)

8.2 它在教学资源谱系中的位置

放射教学资源大致分四代:纸质图谱、本地教学文件、在线教学库、带推荐的平台。MedPix 是第三代的代表,卡在三代与四代之间——有检索与主题组织,没有推荐与个性化。

8.3 它与军队医学的关系

USU 的参与决定了内容的若干特征:创伤、弹片伤、军事相关感染的病例比例可能高于一般教学库;病例的影像设备带有特定年代的军队医疗配置痕迹。这一特征在公开描述里没有被量化,使用时若涉及创伤类任务,需要注意这种来源上的倾斜。

8.4 「停用」在公共数据资产谱系里的意义

§4.4 的案例在这里获得了更宽的解读。美国政府资助的公共数据资源在近年出现过多次「维护中断」或「访问受限」的情况,原因包括预算、技术债务与机构重组。MedPix 的停用未必是孤例,而是一种更普遍现象的样本:由国家机构托底的公共数据资源,其可用性受制于非技术的因素。

对研究者的实践含义有三条:一是不要把任何单一 URL 当作数据的长期锚点,要保存本地副本与快照;二是引用时同时标注访问日期,让后来的人知道当时的状态;三是在方法学里说明数据的获取途径,而不是只写「使用 MedPix 数据集」。

8.5 与现代多模态资源的对比

维度 MedPix(2000 年代设计) 现代多模态资源
组织单位 病例 检查或图文对
交付形态 网页 打包文件 + 数据卡片
许可 逐例 统一
版本管理 无 语义化版本
划分 无 官方或社区固定划分
发布流程 编辑上架 同行评议 + 数据审查
生命周期 无明确承诺 通常承诺若干年维护

MedPix 落后的不是某个环节,而是一整套发布范式。它诞生在「网页即平台」的年代,该范式在数据研究领域已被取代。

不过落后与无用是两件事。MedPix 省掉了一次性的整理投入,换成二十年的持续投稿积累,以工程规范为代价换来广度与叙述深度——这正是「整理一次就发版」的现代数据集最难补的。所以更准确的说法是:它属于另一种生产节奏,而这种节奏在讲求版本与许可的今天已很难复制。

§9 使用指引

9.1 三种角色的路径

建模者的路径。 第一步是明确你要的是「补充语料」还是「主训练集」。如果是后者,应当立刻停止,换成有代表性抽样的数据集。如果是前者,接下来要做的是许可台账(§5.7)、去重清单(§5.5)与切分协议(§5.6)三件事,顺序不能颠倒。建模阶段要特别注意不要把跨模态的样本混在一个批次里。

教学者的路径。 教学是它的主场,但当前受停用影响。可行做法是用已保存的病例截图或文献中的例子,并在课堂上说明原站已停用。

数据策展人的路径。 策展人关心的是「这个资源该怎么被归档」。MedPix 的案例值得记录的点包括:单位是病例而非影像、许可是逐例、版本是缺位的、停用是无预告的。这四点可以作为评价其他老牌教学资源的检查清单。

9.2 一条最短的可用流程

如果站点恢复,下面这条流程是在风险可控范围内使用 MedPix 的最短路径:先探测、再抽样、再核许可、最后才建模。

#-- 第一步:确认站点状态(§5.2)
curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' -L --max-time 20 https://medpix.nlm.nih.gov/

#-- 第二步:只抓 20 例做抽样,不做全量
mkdir -p medpix_sample && cd medpix_sample

#-- 第三步:人工核对这 20 例的许可,抄录原文到台账
#-- 第四步:确认许可可用后再决定是否扩大规模

这条流程的重点不在脚本,而在「只抓 20 例」这个约束。在许可与去重都还没搞清楚之前,全量抓取只会把风险放大。

如果只是想快速判断「这个库适不适合我的问题」,还可以走一条更短的判断路径,不需要写任何代码。

你的问题 判断 理由
我需要真实人群分布吗 不适合 病例按教学价值挑选
我需要完整序列吗 不适合 每例只有几张关键图
我需要像素级标注吗 不适合 无 mask、无坐标
我需要图文配对的长叙述吗 很适合 这是它最独特的资产
我需要罕见病的示例吗 很适合 罕见病例被刻意收录
我需要公开可引用的教学素材吗 适合 但要逐例核许可

六个问题里只要命中「不适合」一列的一项,就应当换数据来源。这条路径虽然粗糙,但比抓完数据才发现问题省事得多。

9.3 引用方式

引用 MedPix 时至少要给三层信息:数据集本身、访问日期、规模口径的来源。

引用层 应写内容 说明
数据集 MedPix / NLM / USU 名称与机构
访问 URL + 访问日期 站点状态会变,日期是锚点
规模 口径来源(官方页面或论文) 数字要有出处
许可 逐例说明或台账文件 不能笼统写「开放」

如果只用一句引用,建议写成:「MedPix(NLM/USU,https://medpix.nlm.nih.gov/,访问于某年某月某日;站点当时因技术问题暂停提供;规模口径引自某文献)」。这句话虽长,但把三重不确定性都说清楚了。

再给一份可复制的参考文献条目格式,供不同场合使用。

#-- 数据集引用(含访问日期与状态)
National Library of Medicine, Uniformed Services University of the Health Sciences.
MedPix (Medical Image Database and Teaching File). Accessed 2026-10-27.
https://medpix.nlm.nih.gov/ (service temporarily unavailable due to technical issues).

#-- 规模口径引用(转述来源)
Henigman A, Kennedy B. MedPix: database of medical images, teaching cases,
and clinical topics. Med Ref Serv Q. 2025;44(3). doi:10.1080/02763869.2025.2533768

第一条的后半句是关键。「service temporarily unavailable」这类状态描述通常不写进引用,但对一个停用的资源来说,它决定了后来者能不能理解你为什么引用了一个打不开的页面。这不是形式主义,而是让引用本身可审计。

§10 AI 使用声明

项目 声明
用途 数据集百科解释,供选型参考
AI 参与 结构梳理、文字组织、代码示例
事实来源 官方页面与 Europe PMC 摘要
未核实项 项目启动年份、各模态占比、跨病例复用规模
数字处理 引官方口径并标注,未二次统计
医学建议 不含诊疗建议
数据使用 未下载或再分发影像
责任边界 用前自行核对许可与站点状态

常见误读(避坑清单)

常见说法 实际 证据
「MedPix 有五万九千张影像,是个大影像数据集」 影像按教案挑选,平均每例不足五张,不是完整检查序列 官方口径影像数与病例数相除
「它是免费的,所以可以随便用」 免费访问不等于许可统一,逐例许可不同 站点历来的许可说明与部分病例署名
「下载下来按图片切分就行」 同病例的多张影像必须同组,否则泄漏 §5.5、§5.6 的去重与切分协议
「病例讨论可以当报告用」 讨论是推理叙述,不是结构化报告 §4.1 文本性质分析
「在 MedPix 上准确率高说明模型好」 病种分布偏离真实临床,高准确率不可外推 §7.3 偏差一
「它现在还能在线检索」 2026-10 入口跳转至停用公告页 §4.4 的案例,curl 落点
「它有官方版本号和划分」 从未提供版本号与 train/test 划分 官方页面与文献均未提及
「LHNCBC 项目列表里还有它」 活跃与退役两个项目列表均未出现 MedPix LHNCBC 项目列表页核查
「停用只是暂时挂了,很快就会回来」 措辞为「临时不可用」,但无恢复时间表 停用公告页横幅
「这是军方数据集,内容都是创伤」 军方背景影响早期内容,但不能概括全库 §8.3 的谨慎表述

FAQ

Q1:MedPix 现在还能访问吗?
截至 2026 年 10 月 27 日,medpix.nlm.nih.gov 返回 302 跳转,落到 LHNCBC 的公告页,横幅写明因技术问题暂停提供。访问是否恢复没有官方时间表,引用时务必标注访问日期。

Q2:规模数字从哪来,可靠吗?
来自 2025 年发表的一篇期刊介绍文的摘要,原文写的是超过 5.9 万张影像、1.2 万例病例、九千个主题。这是二手转述的官方口径,站点停用后无法再向上核对。

Q3:为什么说它的病种分布偏离真实临床?
因为它的收录标准是「有教学价值」,典型病例与罕见病例因此被优先收录。真实门诊里的常见情形是「不典型的一般病」,这恰恰最不适合做教案。

Q4:一图多例是什么意思?
指同一张影像可能出现在多个病例或主题页里。这种情况在人工组织的教学库中很常见,官方也没有公布过具体规模,因此切分前必须自己做去重。

Q5:许可到底能不能用于训练?
不能一概而论。部分属于公有领域,部分标注为 CC 类授权,还有大量页面没有写明。没有逐例台账,整库使用的法律风险无法评估。

Q6:可以把它和 MIMIC-CXR 混用吗?
技术上可以拼接,但两者颗粒度不同:一个是病例配几张关键图,一个是检查配完整报告。混用时要按各自的组织单位分别切分,不能统一按图片切。

Q7:它的文本适合做报告生成吗?
不适合直接做。病例讨论是围绕诊断的论证,报告是对检查的客观描述,两者的句式与信息结构差异很大。若要用,需要先做改写与对齐。

Q8:站点停用后,以前的论文还能复现吗?
页面内容无法再在线核对,但论文中引用过的具体病例通常有截图或文字引用。复现的可行性取决于原论文是否保留了足够的样本描述。

Q9:为什么不建议按主题切分之外的随机切分?
随机按图片切分会让同一病例的多张影像同时进入训练与测试,评测结果被系统性抬高。按主题切分的泛化评测更严格,但测试集覆盖的病种数会不足以支撑统计结论。

Q10:教学用途会受许可影响吗?
教学用途通常比商业用途宽松,但仍取决于具体病例的授权。课堂引用时注明来源与访问日期,是风险最低的做法。

Q11:它和 Open-i 有什么关系?
两者都是 NLM 生态内的图文资源,但来源不同:MedPix 是投稿的教学病例,Open-i 是文献插图的检索库。前者有长文本,后者主要是图注。

Q12:如果我只是想做个小 demo,用它合适吗?
合适,但要控制规模并明确标注。取少量病例做定性展示,配合清楚的来源说明,是它最自然的用法。

Q13:站点的「临时不可用」会不会很快恢复?
无从判断。公告页没有给出恢复时间,NLM 也没有发布过相关计划。稳妥的做法是假定短期内不会恢复,按离线状态规划。

Q14:它的病历文本有没有脱敏?
从公开描述看不出系统的脱敏规范,多数情况下依靠投稿人自行处理与站方编辑把关。使用时应当把它视为「来源不明」的文本,不做进一步的隐私推断。

Q15:如果要向期刊说明用了 MedPix,最需要写清哪一点?
最需要写清的是「你用的是哪一份子集、怎么切的、许可如何核对的」。这三件事决定了别人能不能复现你的实验,也决定了你的结论有多少解释力。

Q16:本篇为什么给它的可获取性只打一分?
因为在 2026 年 10 月这个时点上,任何人都无法通过官方渠道取得完整数据。评分评的是「当下能不能用」,不是「历史上曾经多好」。

术语表

术语 英文 释义
教学文件 teaching file 为教学目的整理的病例与影像集合
病例库 case library 以病例为单位组织的资源,区别于以影像为单位
主题 topic 按疾病、器官或征象组织的教学单元
鉴别诊断 differential diagnosis 候选诊断清单
病例讨论 case discussion 医生撰写的推理过程
投稿驱动 contributor-driven 内容由外部投稿、站方上架
模态 modality 成像方式,如 CT、MR、XR
病例级切分 case-level split 以病例为分组单位切分
主题级切分 topic-level split 以主题为分组单位切分
泄漏 leakage 训练信息混入测试集
富集偏差 enrichment bias 某类样本被刻意多收
许可碎片化 license fragmentation 许可条款逐例不同
公有领域 public domain 不受版权保护的作品状态
停用 sunset / suspension 服务暂停但资产未删除
数据卡片 datasheet 描述来源与限制的文档
台账 ledger 逐条记录的清单
二次产物 derived subset 他人整理的子集
概念验证 proof of concept 小规模验证可行性
弱标签 weak label 由间接信号构成的标签
体素 voxel 三维影像的最小单位
像素值 pixel value 影像上的数值,CT 中对应 HU
DICOM DICOM 医学影像标准格式
CME continuing medical education 继续医学教育学分
USU Uniformed Services University 统一服务健康科学大学
LHNCBC Lister Hill National Center NLM 下属通信中心

附录 A:核心数字核对表

项 值 来源 来源层级
影像总数 5.9 万余张 期刊介绍文摘要 论文摘要
病例总数 1.2 万余例 期刊介绍文摘要 论文摘要
主题总数 9,000 余个 期刊介绍文摘要 论文摘要
平均每例影像数 约 5 张(推算) 前两项相除 推导
入口状态 302 跳转至公告页 curl 核查 官方页面
公告页措辞 因技术问题暂停提供 公告页横幅 官方页面
项目列表 活跃与退役列表均无 MedPix LHNCBC 项目列表 官方页面
官方划分 无 官方页面与文献 官方页面
统一许可 无 官方页面与文献 官方页面
项目启动年份 1990 年代末(未核实) 一般性叙述 未核实

附录 B:数字的来源分层

第一层:官方页面。 包括 2026 年 10 月 27 日核查到的跳转行为、公告页横幅文本、LHNCBC 活跃与退役项目列表。这一层的信息只回答「当前状态」,不提供规模数字。

第二层:论文摘要。 2025 年发表于 Medical Reference Services Quarterly 的介绍文摘要,提供了影像、病例、主题三个规模数字。它们是本篇唯一可引用的规模口径,但它们本身是对官方口径的转述。

第三层:未核实。 项目启动的具体年份、各模态的占比、跨病例复用的具体规模、不同年代的内容更新节奏。这一层在本篇中出现时都做了显式标注。

三层的区别在使用时很重要:第一层可以支撑「现状判断」,第二层可以支撑「规模引用」,第三层只能作为背景叙述,不能写进方法学的定量描述。

同一个数字在不同层级里的可用性差别很大,举例说明更直观。影像总数这一项,官方页面上已无从查证,只能引论文摘要,因此它在方法学章节里应当写作「据文献报道」而不是「官方公布」。入口状态这一项,页面本身可以随时复核,因此可以直接写进论文的数据获取说明。而项目启动年份这类只出现在一般性叙述里的信息,写进论文时要么补上引用,要么删掉。分层的意义就是把「能写」与「只能提」区分开。

附录 C:完整参考文献

序号 文献 类型 链接
1 Henigman A, Kennedy B. MedPix: database of medical images, teaching cases, and clinical topics. Med Ref Serv Q. 2025;44(3). 期刊介绍文 https://doi.org/10.1080/02763869.2025.2533768
2 MedPix 入口(2026-10-27 核查为 302 跳转) 官方页面 https://medpix.nlm.nih.gov/
3 LHNCBC 停用公告页 官方页面 https://lhncbc.nlm.nih.gov/medpix.html
4 LHNCBC 活跃项目列表 官方页面 https://lhncbc.nlm.nih.gov/LHC-research/projects-current.html
5 LHNCBC 退役项目列表 官方页面 https://lhncbc.nlm.nih.gov/LHC-research/projects-inactive.html
6 Europe PMC 检索接口(用于定位文献 1) 检索接口 https://www.ebi.ac.uk/[europepmc](https://www.qianfanghub.com/ai-ready-dataset/europepmc/1353)/webservices/rest/search

附录 D:任务代码

若要在站点恢复后做一次「最小可复现」的抽取,可以按下面的顺序执行。每一步都是独立脚本,失败时只影响当前步骤。

步骤一:探测与日志。

#-- 把每次探测的时间与落点写进日志,形成可追溯的状态记录
LOG=medpix_probe.log
printf '%s ' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$LOG"
curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' \
  -L --max-time 20 https://medpix.nlm.nih.gov/ >> "$LOG"
tail -n 3 "$LOG"

步骤二:统计去重规模。

from collections import Counter
from pathlib import Path
import hashlib

def digest(p):
    return hashlib.sha1(Path(p).read_bytes()).hexdigest()

records = [{"case_id": "case_0001", "image_path": "img_a.jpg"}]  #-- 其余略
counts = Counter(digest(r["image_path"]) for r in records)
shared = sum(1 for v in counts.values() if v > 1)
print({"images": len(records), "unique_bytes": len(counts), "shared_bytes": shared})

步骤三:导出建模清单。

import csv

def export(rows, path="split_manifest.csv"):
    with open(path, "w", newline="", encoding="utf-8") as f:
        w = csv.DictWriter(f, fieldnames=["case_id", "group_id", "split", "license_status"])
        w.writeheader()
        for r in rows:
            w.writerow(r)

rows = [{"case_id": "case_0001", "group_id": "topic_alpha",
         "split": "train", "license_status": "unknown"}]   #-- 其余略
export(rows)
print("written ->", "split_manifest.csv")

这三个脚本的共同点是都刻意保持简单。MedPix 的不确定性主要不在技术上,而在状态与许可上,把脚本写复杂反而会掩盖真正的问题。

附录 E:如果只记五件事

第一件:它是一个病例库,不是一个数据集。 单位是病例,一例配几张关键图加一段医生写的推理。把它当数据集用,工程成本会远超预期。

第二件:病种是挑出来的。 典型与罕见被过度代表,任何基于它的比例、敏感度、特异度都不能外推。

第三件:按图片切分一定泄漏。 同病例的多张影像必须同组,跨病例复用的影像必须靠去重清单找出来。

第四件:许可是碎的。 没有统一许可证,用之前必须建逐例台账,把「未知」也如实登记。

第五件:它停着,但没被删。 2026 年 10 月的状态是入口跳转到公告页,措辞是「临时不可用」,没有恢复时间表。引用时写上访问日期。

如果把这五件事压成一句给同事的提醒,可以这么说:「MedPix 是一本很厚的病例教案,不是一个可以 git clone 的数据仓库。」 教案要被阅读与被引用,仓库要被切分与被训练,两者需要的手艺完全不同。认清这一点,后面的所有工程决定都会自然得多。至于它的结语,只能落在「教材」这两个字上——它把医学影像教学里最难自动化的一部分,也就是医生的推理过程,留了下来。

编辑说明

本篇核查于 2026 年 10 月 27 日,范围为官方页面(入口跳转行为、LHNCBC 公告页横幅、LHNCBC 活跃与退役项目列表)与一篇期刊介绍文摘要。规模数字全部沿用官方历史口径,未做二次统计,也未下载任何影像。项目启动年份、各模态占比、跨病例复用的具体规模三项未能核实,正文中已逐处标注。站点若恢复,入口状态与项目列表两条需要重新核查,规模数字能否维持原口径同样需要复核。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • quilt-1m — 共享标签:医学影像 / 多模态 / 影像-文本对齐
  • gmai-mmbench — 共享标签:医学影像 / 多模态 / 医学问答与基准
  • microvqa — 共享标签:医学影像 / 多模态 / 医学问答与基准
  • roco — 共享标签:医学影像 / 多模态 / 影像-文本对齐
  • skincap — 共享标签:多模态 / 医学问答与基准 / 影像-文本对齐
  • medreco-db — 共享标签:多模态 / 医学问答与基准 / 影像-文本对齐
  • mimic-iv-echo — 共享标签:医学影像 / 多模态 / 影像-文本对齐
  • ms-cxr — 共享标签:医学影像 / 多模态 / 影像-文本对齐
  • patchgastricadc22 — 共享标签:医学影像 / 多模态 / 影像-文本对齐
  • revapo — 共享标签:医学影像 / 多模态 / 影像-文本对齐

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集