Code With SOLO】用 SOLO 搭一个"论文引用打假"工具,一键验证文献真伪 & 交叉引用一致性

一、摘要

学术论文里的引用错漏、AI 写作时编造的"幻觉文献",是审稿和读论文时最头疼的事之一。我用 TRAE SOLO 搭了一个 Web 应用:丢一份 PDF/DOCX 进去,几十秒后它会告诉我哪些参考文献是真的、哪些可能是编的、哪些正文引用了但参考列表里没有。整个项目从零到能跑,前后只花了大半个下午。

二、背景

我是做 AI / 生信方向的研究者,日常需要读大量论文,自己也写论文。两个高频痛点:

  1. 审别人/AI 生成的论文时:怀疑某条参考文献是 LLM 编的,但人工去 Google Scholar 一条条核对,30 条文献能查 1 个小时。

  2. 自己投稿前自查:正文 [17] 在参考列表里却跳到了 [18]、某条文献从头到尾没人引用、年份对不上……这些低级错误最容易被审稿人挑刺。

之前一直想自己写个工具,但涉及 PDF 解析、文献元数据匹配、API 调用、前端展示,零零碎碎要写不少代码,一直没动手。这次想试试用 SOLO 一气呵成搞定。

三、实践过程

1. 任务拆解

我把整件事拆成 5 个模块,让 SOLO 按顺序实现:

模块 做什么 难点
PDF 提取 把双栏 PDF 转成正确顺序的纯文本 pdfplumber 直接 extract 会把双栏读成"左右左右"乱序
参考文献解析 从 References 段切出每一条,提取标题/作者/年份 引用格式五花八门(IEEE/APA/GB/T 7714…)
联网验证 拿每条文献去查真假 选 API、做模糊匹配、限速
交叉引用检查 正文引用 ↔ 参考列表的一致性 要处理 [1-3]、[1, 5, 7] 这种范围/列表
前端展示 上传、进度条、结果可视化

2. 用到的 SOLO 能力

  • 多文件代码生成:一次把 app.py(后端)、index.htmlstyle.cssapp.js 全部生成出来,模块边界清晰。

  • 文档驱动开发:贴 Crossref / OpenAlex 的 API 文档给 SOLO,它直接按官方字段写匹配逻辑,比我自己读文档快多了。

  • 持续迭代调试:跑起来发现 Bug 再贴日志回去,SOLO 自己定位问题、给补丁。

3. 关键 Prompt(节选)

第一轮总体需求:

帮我搭一个 Flask Web 应用"文献引用验证系统"。功能:上传 PDF/DOCX/TXT,提取参考文献,调用 Crossref + OpenAlex 验证真假,并检查正文引用与参考列表的交叉一致性(孤立引用、未被引用的文献、编号断层)。前端要有进度条、严重性分级、可筛选的结果表。后端用 PyMuPDF 而不是 pdfplumber 做 PDF 提取。

后续迭代时的精准 Prompt:

现在双栏 PDF 提取出来的文本顺序还是乱的。请改成:先用 PyMuPDF 的 page.get_text("blocks") 拿块,再按 x 坐标判定是否双栏,如果是双栏就分别按 y 排序后左列拼右列。

[1-5] 这种范围引用现在被当成一条 [1-5]。请在 CitationExtractor 里展开成 [1][2][3][4][5],并在交叉检查时按展开后的编号集合判定孤立引用。

4. 踩过的坑

  • 坑 1:pdfplumber 在双栏论文上几乎不可用。第一版用 pdfplumber 出来的文本完全没法解析,后来切到 PyMuPDF + 列感知排序才搞定。

  • 坑 2:Semantic Scholar 限流严重。原方案用 Semantic Scholar,免费额度被打爆。换成 Crossref 主 + OpenAlex 备,加上邮箱白名单(polite pool)后稳定多了。

  • 坑 3:连字符断行。PDF 的 “predic-\ntion” 不处理就匹配不上 Crossref。让 SOLO 加了一行正则修复 re.sub(r'([a-zA-Z])-\n([a-z])', r'\1\2', text)

  • 坑 4:标题模糊匹配。完全相等命中率太低,让 SOLO 加了归一化(小写 + 去标点 + 去空格)后再算 Jaccard 相似度,命中率从 ~50% 提到 90%+。

四、成果展示

最终交付物:

  • 一个可跑的 Web 应用:上传 PDF → 进度条 4 步实时跳动 → 结果页含总览卡片、改进建议、详细问题报告、可筛选的参考文献验证表。

  • 后端 v7.0:~1400 行 Python,模块化清晰(PDFExtractor / ReferenceParser / ReferenceVerifier / CrossReferenceChecker)。

  • 可选 GROBID 集成:本地起一个 GROBID 服务,解析准确率会再上一个台阶;不起也能跑(回退到本地正则解析器)。

实测:拿一篇 IEEE 期刊 PDF(52 条参考文献)跑下来,约 40 秒返回完整报告。

五、效果与总结

  • 提效对比:以前手工核 30 条参考文献 ~1 小时,现在 40 秒一份报告,提效约 90 倍

  • SOLO 在我流程里干了什么:负责把"我懒得写"的脏活——PDF 解析的边角 case、API 字段映射、前端样式——一次性成型。我只需要专注在"业务逻辑应该长什么样"。

  • 可复用方法:先写一份结构化需求清单(拆模块 + 列难点 + 指明技术选型),再交给 SOLO 一次性出代码,比"边想边问"效率高得多。后续迭代要"对症下药"——贴具体报错日志、贴期望行为,而不是泛泛说"不对,再改改"。

后面想接着加:DOI 自动补全、参考文献格式转换(IEEE ↔ APA ↔ GB/T 7714)、批量处理整个文件夹。也欢迎有同样需求的同行一起玩。