生物信息学文献系统综述
目的
将原始英文研究论文PDF转化为一套标准化的高质量中文综述材料:包含每张主图嵌入和讲解的Word深度阅读报告、PPT分享幻灯片,以及可选的科普文章。专为需要可重复、深度优先文献解读的生物信息学研究人员设计。
何时使用
当用户提供科学论文PDF(或要求审阅特定论文)并希望获得以下任一内容时触发:
- Word深度阅读报告(10部分结构化分析)
- 图表提取——将PDF中的每张主图提取为图像并逐一讲解
- 小组会分享用的PPT材料
- 微信公众号科普文章
- 以上全部(完整流程)
典型的用户短语:
- "解读这篇论文" / "解析这篇文章"
- "帮我做个文献精读"
- "把每张主图提取出来讲解" / "每张Figure都要配图解读"
- "生成Word解读 + PPT"
- "整理成科普文章"
前提条件
Python环境
任何Python >= 3.9都可以。使用你代理运行时自带的解释器,或你自己的虚拟环境。
安装依赖(一次性):
pip install pdfplumber pymupdf python-docx python-pptx
如果PyPI速度慢(在中国大陆常见),可使用国内镜像:
pip install pymupdf -i https://mirrors.cloud.tencent.com/pypi/simple
pymupdf(PyMuPDF) 用于图表提取——它同时提供页面渲染和坐标级别的文本/图形检查。pdfplumber用于纯文本提取。python-docx/python-pptx用于生成交付物。
项目结构约定
每篇论文在工作空间根目录下拥有一个独立文件夹:
NN_YYYY-Journal-Topic/
Original_Paper.pdf
Journal_YYYY_Topic_LiteratureReview.docx
Journal_YYYY_Topic_ArticleSharing.pptx
full_text.txt (提取的文本,中间产物)
figures/ (提取的主图PNG,中间产物)
fig1.png, fig2.png, ...
captions.json (图编号 -> 标题/页码/边框清单)
Topic_PopularScience.html (可选,用于微信公众号)
NN: 零填充序号 (01, 02, 03...)YYYY: 发表年份Journal: 简写期刊名 (Nature, Cell, Science...)Topic: 简短的中文主题描述
工作流程
第1步:设置与PDF文本提取
- 按照上述命名约定创建输出文件夹
- 将源PDF复制到新文件夹中
- 运行
scripts/extract_pdf_text.py提取全文:这将生成以分页符分隔的提取文本文件python scripts/extract_pdf_text.py "<pdf_path>" "<output_txt_path>"full_text.txt。
第2步:从PDF中提取主图
运行 scripts/extract_figures.py 将每张主图提取为高分辨率PNG(默认300 DPI):
python scripts/extract_figures.py "<pdf_path>" --out "<paper_folder>/figures" --dpi 300
- 添加
--include-ed也会提取扩展数据/补充图表。 - 脚本定位标题("Fig. 1", "Figure 1", "图1"),确定列跨度,合并标题上方的图形区域,并渲染该区域。
- 已处理布局变体(在Nature / Cancer Cell PDF上验证):
- 标题在图表下方(最常见);
- 标题在图表旁边(标题在列顶,图形在另一列);
- 标题在图表上方;
- Cell Press "图注在下一页":图形在第N-1页,标题在第N页顶部——脚本检测到标题上方没有图形,自动渲染前一页的图形(状态:
prev-page)。 - 期刊横幅:页面顶部的全宽Cell Press / Cancer Cell彩色条被过滤掉(状态:
above不应包含它)。
- 如果图表仍包含页眉,增加
--header-frac(例如Cancer Cell / Cell Genomics为0.13,Nature默认为0.055)。 - 正文吸收防护:在"标题在图表旁边"模式下,图表可能渗入其下方流动的正文段落。仅当文本块紧凑(高度短或宽度窄)且 ≤ 4行,并且在
beside模式下仅当它们起始于或高于图形底边时才吸收文本块。如果图表仍以一段散文结尾,则需要收紧此规则。 - 输出:
figures/figN.png+figures/captions.json(标题文本、页码、标题页码、边界框、每张图的状态)。 - 务必通过查看(ViewImage)验证提取的PNG:检查每张图像是否是完整的图形(所有子图,未裁剪,无正文文本混入)。如果图形裁剪不当,手动使用PyMuPDF以
captions.json中的边界框为起始点重新渲染该区域。不要静默嵌入有缺陷的图像。
第3步:深度阅读论文
分段读取提取的文本(每次读取200行)。对于每张主图,也要查看提取的PNG以了解子图和布局。重点提取:
- 标题、作者、期刊、DOI、发表日期
- 摘要和关键发现
- 所有图表(编号、标题、子图、每个显示的内容)——对照
captions.json中的标题与实际图像进行核对 - 方法(测序平台、软件工具、算法、参数)
- 样本信息(队列规模、组织类型、测序类型)
- 关键结果和统计显著性
- 作者提到的局限性
第4步:生成Word深度阅读报告
遵循 references/word_structure.md 中定义的10部分结构。
使用 scripts/generate_word_report.py 作为模板。将其复制到论文文件夹中(例如 generate_word_report.py),用实际分析替换CONTENT块,并用输出路径运行它:
python generate_word_report.py "<paper_folder>/Journal_YYYY_Topic_LiteratureReview.docx"
该脚本演示了:
- 使用python-docx创建带样式标题的文档
- 基本信息与术语的表格式样
- 分析流程的要点列表
- 关键结果的彩色标注框
add_figure_block():嵌入每张提取的图表PNG + 标题 + 4部分分析(研究问题 / 方法 / 关键结果 / 解读)
第7部分(主要研究内容)必须嵌入提取的图表图像(figures/figN.png)——每个图表一张图像,后跟其逐图分析。图像路径和标题来自 figures/ 和 captions.json。
关键格式规则:
- 标题使用Heading 1/2/3样式并带自定义格式
- 表格使用"浅色网格强调色1"加上显式的深色标题填充 (
shade_cell(cell, "1A3A5C"))——内置样式在应用白色文本时会使标题行无填充,导致标题在Word中不可见 - 图形适配为宽度15.5厘米,最大高度约18.5厘米(通过PIL保持宽高比)。一个纵向4面板曼哈顿图以全页宽度(21+厘米高)放置会溢出页面并被底部裁剪——务必限制高度
- 超过一页的表格:
keep_rows_together(table)将标题行标记为w:tblHeader(每页重复出现),并将每一行标记为w:cantSplit,因此表格永远不会在行中断开或丢失标题 - 技术术语保留英文缩写,后跟中文解释
- 不得捏造数据:不确定的项目标记为"需确认"
- 通过导出为PDF(Word COM
SaveAs(..., 17))并查看2–3页来验证输出:标题行可见,图形完整,无溢出
第5步:生成PPT分享幻灯片
遵循 references/ppt_structure.md 中定义的幻灯片结构。
使用 scripts/generate_ppt_slides.py 作为模板:
python scripts/generate_ppt_slides.py
该脚本演示了:
- 使用python-pptx创建带自定义布局的幻灯片
- Nature/Cell风格的极简设计(白色背景,深色文本)
- 逐图幻灯片:在幻灯片上嵌入提取的
figures/figN.png,然后是图标题 → 研究问题 → 方法 → 结果 → 意义 - 最后的关键发现 + 科学影响幻灯片
第6步:生成科普文章(可选)
当用户想要微信公众号文章时,编写一个包含以下内容的HTML文件:
- 内联CSS(微信会剥离
<style>标签) - 移动优先设计(最大宽度:680px)
- 比喻驱动的科学传播
- 数据卡片、比较表格、时间线
- 所有数据必须来自原始论文,不得捏造
详细写作指南请参考 references/popular_science_style.md。
第7步:质量控制
验证:
- 所有技术术语都有英文缩写 + 解释
- 所有图表在Word和PPT中均已覆盖
- Word报告中每张主图的嵌入图像都已验证(完整的子图,无裁剪,无杂散的正文文本)
- 没有捏造的数据或推测性的结论
- 分析流程完整(软件 → 算法 → 输入/输出)
- 统计值与原始论文一致
解读原则
遵循 references/interpretation_principles.md 生成所有内容。核心规则:
- 保留英文缩写——不要简单翻译成中文
- 解释技术原理——不仅仅是做什么,还要说明为什么以及如何做
- 深度优先——回答"为什么用这个方法?"、"数据展示了什么?"、"这意味着什么?"
- 目标受众:生物信息学工程师、基因组学研究人员
- 不得捏造——不确定的信息标记为"需确认"
文件参考
| 文件 | 用途 |
|---|---|
scripts/extract_pdf_text.py | 使用pdfplumber从PDF提取全文 |
scripts/extract_figures.py | 使用PyMuPDF提取主图为高分辨率PNG并生成captions.json清单 |
scripts/generate_word_report.py | Word文档生成的模板脚本(包含图嵌入) |
scripts/generate_ppt_slides.py | PPT幻灯片生成的模板脚本 |
references/word_structure.md | Word报告10部分结构规范(包含逐图块格式) |
references/ppt_structure.md | PPT幻灯片结构规范 |
references/interpretation_principles.md | AI解读原则和规则 |
references/popular_science_style.md | 科普文章写作指南 |