文献卡片工坊(ScholarCards)
Overview
把散落的论文 PDF 提炼为一张"可累加"的文献台账:以 CSV 为唯一数据源,每篇一行、固定 14 列;
据此自动生成本地 Excel(带筛选/冻结/换行)与自包含、可离线打开的卡片式网页看板(全文搜索 + 多条件筛选 + 排序 + 统计)。
新增论文只需往 CSV 追加一行再重跑脚本,三处永远一致。
When to use
- 用户丢来 PDF(单篇或多篇),要求"提炼信息成表格/文献库"。
- 用户要求"可累加"——今天加 2 篇、明天加 5 篇,长期可做筛选与统计。
- 用户要"本地版(Excel/CSV)+ 网页端可视化(最好可筛选)"。
- 用户说"追加一篇/再录入一篇",检验已有系统是否真的累加。
- 用户将来要把此流程沉淀为技能——即用本技能本身。
Resources
scripts/extract_pdf.py— 抽取 PDF 元数据与全文文本(依赖 pymupdf)。scripts/append_paper.py— 把一篇已解读好的论文(JSON)按规范列序追加进 CSV,自动序号、UTF-8 BOM、不破坏旧数据。scripts/build.py— 读 CSV,生成literature.xlsx与literature_dashboard.html(参数化路径)。references/schema.md— 14 列 schema 与填写规范(务必对照填写,尤其"中文摘要仅外文填""方法两列只写方法不写细节""核心结论要短而通俗")。
Workflow
第 0 步:准备环境(仅首次)
- 确定工作目录
WORKDIR。关键:必须是一个跨会话不会丢失的常驻路径,否则每次新开会话都会在空的<当前工作区>/literature_table/里"新建"一份,导致文献无法真正累加(已踩坑)。推荐:
- 用户资料目录下固定位置,如~/Desktop/文献库/literature_table/或 PDF 所在目录旁的literature_table/;
- 或WorkBuddy根目录下(非带时间戳的会话子目录),如<WorkBuddy根>/literature_table/。 - 追加前先找旧表:在候选常驻路径(以及
C:\Users\<用户>\WorkBuddy\下各历史会话literature_table/)用 Glob 搜**/literature.csv;若找到多个,先向用户说明并合并/选择其一作为主表,再追加,切勿再建一份空的。 - 建好
WORKDIR后,准备 Python 运行环境:使用可用的 Python(优先受管 Python),在其下建 venv 并安装依赖:
<python> -m venv <WORKDIR>/.venv <WORKDIR>/.venv/Scripts/pip install pymupdf openpyxl # Windows # 或 <WORKDIR>/.venv/bin/pip install pymupdf openpyxl # macOS/Linux
之后所有脚本都经此 venv 的 python 运行。
第 1 步:抽取 PDF
对每篇 PDF 执行:
<venv>/python scripts/extract_pdf.py <pdf路径> [输出txt]
查看打印的元数据(常含标题、期刊、DOI、摘要、年份)与导出的全文 txt,据此解读。
第 2 步:AI 解读并填 14 列
对照 references/schema.md 的 14 列规范,从 PDF 文本中提炼每篇的信息:
- 题目/期刊/作者/单位/发表时间:直接取自原文或元数据;年份务必含 4 位(网页按年筛选用)。
- 语种:外文 / 中文。文献类型:期刊论文 / 学位论文 / 会议论文 等。
- 数据收集方法、数据分析方法:只写方法类型,不写操作细节(如"7 项研究(6 实验+1 实地),Credamo/Prolific 招募""方差分析、bootstrap 中介/调节检验(PROCESS)")。
- 摘要:外文抄英文、中文抄中文。
- 中文摘要:仅外文论文填(由 AI 翻译原文摘要);中文论文留空。
- 核心结论:无论中/外文都必填,用最短、最通俗的中文概括"发现什么 + 在什么条件下成立/失效"。
- 出处/DOI:优先填 DOI 链接,便于溯源。
将结果写成一个 JSON 对象(键为上述 14 列,缺列可省、脚本会自动补空),存入临时文件 paper.json。
第 3 步:追加进 CSV(累加核心)
<venv>/python scripts/append_paper.py <WORKDIR>/literature.csv <paper.json>
脚本自动按现有表头追加一行、序号自增;CSV 不存在则按规范列序新建。重复本步即可"累加"。
第 4 步:重生成 Excel 与网页
<venv>/python scripts/build.py <WORKDIR>/literature.csv [--outdir <WORKDIR>]
生成 literature.xlsx(冻结首行、自动筛选、长文自动换行)与 literature_dashboard.html
(内嵌数据、卡片式、全文搜索 + 语种/类型/期刊/年份/作者筛选 + 排序 + 顶部统计)。
第 5 步:交付
用 present_files 同时给出 literature_dashboard.html、literature.xlsx、literature.csv,
并口头汇报本次新增了哪几篇、关键字段,供用户核对。
Accumulation 约定(重要)
- CSV 是唯一数据源;Excel 与网页都由它生成,永不手改 Excel/网页。
- "追加"= 第 2→3→4 步,不重建文件、不覆盖旧行。
- 多篇同批:循环第 1→2→3 步(每篇一个 paper.json 依次 append),最后统一跑一次第 4 步。
Notes
- 编码:CSV 用 UTF-8 BOM,Excel 双击不乱码;脚本已处理引号/逗号/换行。
- 若 PDF 是扫描件无文本层,
extract_pdf.py抽不到正文——此时提示用户并提供 OCR,或请用户口述关键信息。 - 发表时间如仅有在线日期与正式卷期年不一致,以正式卷期年为主、在线日期括注(详见 schema.md)。