信息速览
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 — 共享标签:医学影像 / 多模态 / 影像-文本对齐
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

