林宇祥的技术博客

  • 首页
  • RZ/V2H 开发指南
  • 关于作者
  1. Main page
  2. 开发
  3. Main content

我把论文阅读器做进了 VS Code:中英对照、公式原图、AI 答疑

20hotness 0likes 0comments

读论文最耗时的,往往不是“看不懂”,而是把时间花在找句子、对公式、切窗口上。

过去两年我的阅读流程大概是:Zotero 管文献 → PDF 阅读器看原文 → 翻译软件复制段落 → 遇到公式再切回 PDF 找上下文。工具本身都没问题,问题是它们彼此不通:译文和原文对不上、公式被机翻成乱码、双栏论文的左右栏串成一段、切到编辑器改两行代码再切回来,PDF 又开始重新加载。

于是我写了一个 VS Code 扩展:Bilingual Paper Reader(文献对照翻译阅读器)。它把原版 PDF、逐句中文、公式、批注和 AI 问答放在同一个窗口里。左侧是 PDF 原版,右侧是对照译文;在原文里划一句话,右侧对应译文会同步高亮;点右侧的句对,左侧会精确跳回原文位置。

项目是 MIT 开源的,GitHub 上已经更新到 1.8.1;VS Code 插件市场也已上架(商店版本更新可能稍滞后,最新功能以 GitHub Releases 为准)。

它长什么样

左侧 PDF 原文,右侧逐句对照译文,选中原文时右侧同步高亮
左侧原版 PDF,右侧逐句对照;在原文里选中一句,右侧对应译文会同步高亮并滚动到可见位置。
划线高亮与便签批注
划选文字后弹出工具条:四色荧光高亮、便签批注、即时翻译,批注按页保存。
论文级 AI 答疑
AI 答疑可以带上当前段落、公式,甚至 Zotero 里的全文上下文,而不是只对着一句话做通用问答。

为什么不用现成的翻译插件

我试过几类方案,各有各的问题:

  • 浏览器翻译插件:整页翻译把双栏论文的左右栏串成一段,公式、上下标、根号直接变成乱码;
  • 整篇 PDF 翻译:译文和原文完全脱节,想对照一句话要来回翻页;公式编号被当成正文翻译,读者根本不知道在讲哪条式子;
  • 普通 PDF 阅读器:可以看,但不能对照、不能批注、不能问 AI;
  • “复制到聊天框”:能看懂单个句子,却丢掉了上下文、符号定义和实验设置。

这个扩展的核心不是“接一个翻译 API”,而是先把 PDF 的版面读懂:哪些是正文、哪些是图注、哪些是表格、哪些是公式,双栏怎么读、跨栏的句子怎么接。版面错了,后面的翻译和对齐都会错。

核心功能

1. 先读懂版面,再翻译

PDF 里没有“段落”这个概念,只有一堆带坐标的字符。扩展基于 PDF.js 的文本层和字体信息做版面重建:

  • 自动识别单栏 / 双栏,修复跨栏续句、折行断词;
  • 图注、表格、公式行与正文分开,避免“图注吞掉半栏正文”或“表格数字被当成散文翻译”;
  • 整页大表、连续编号公式、算法伪代码等特殊版面单独处理;
  • 对纯 LaTeX 论文(正文本身就是 Computer Modern 字体)做了专门的字体统计,避免把整篇论文误判成“一堆公式”。

这些看起来是“细节”,但读双栏论文的人应该都遇到过:一段话被切成好几张顺序错乱的卡片,或者译文里突然插进半行表格数字。

2. 逐句对照,而不是整段机翻

右侧默认是逐句对照:每一句英文对应一句中文,点句子可以定位,选中原文可以联动高亮。整段译文也保留,适合快速通读。

逐句对齐依赖模型返回严格的句子数组,偶尔会失败。这里的处理原则是“宁可如实显示整段译文,也不伪造句对”:

  • 模型返回的逐句数组条数不齐时,先重试;
  • 仍然不齐时,如果整段中文译文按句号切开的句数恰好等于英文句数,就按句数做 1:1 对齐;
  • 再不行就只显示整段译文,并明确标注“逐句对齐未成功”,不把两句中文硬贴到一句英文上。

3. 公式:能看清,也能复制

公式是学术 PDF 翻译里最容易翻车的地方。我的做法是“能矢量重建的矢量重建,不能的保留版面原图”:

  • 单行独立公式如果能完整重建为规范 LaTeX 并通过 KaTeX 校验,就直接矢量渲染,清晰、可复制、能适配深色主题;
  • 矩阵、多行优化方程、长求和/积分这类需要二维结构信息的公式,按 PDF 版面原图裁切,保证和原文一模一样;
  • 行内符号、公式编号、符号表(NOMENCLATURE / NOTATION)单独处理,不送进翻译队列;
  • 可选接本地 PP-FormulaNet(Python + paddleocr,CPU 即可),把公式裁图识别成 LaTeX,供导出、问 AI 和公式索引使用;识别结果要过字符守恒校验,不通过就保留原图。

这里有一个刻意的取舍:不追求“所有公式都变成 LaTeX”。逐字符拼出来的 LaTeX 可能“渲染成功、内容全错”,那比显示原图危险得多。

4. 批注、笔记与导出

  • 划选文字弹出工具条:四色高亮(核心要点 / 实验数据 / 方法公式 / 疑难待查)、便签、即时翻译;
  • 批注按页管理,永久保存在本地;
  • 一键导出 Markdown 精读稿:按页组织「原文 → 双语对照 → 我的批注 → AI 答疑」,带 YAML 头,可直接进 Obsidian / Notion;
  • 也可以导出带高光和译文附录的批注 PDF,适合打印或分享。

5. 论文级 AI 答疑

问答不是只把当前这句话丢给模型,而是可以带上当前段落、公式、甚至整篇论文的上下文(支持 Zotero 联动),并区分“标准 / 简洁 / 专家”几种回答风格。遇到公式时可以选中公式卡片的「讲透这条公式」,让模型逐符号解释并代一个小例子。

6. 一些“用了就回不去”的细节

  • 切到别的文件再回来,不重新加载:保留当前页码、滚动位置、已加载的 PDF 和译文(1.8.1);
  • 纸张主题联动 VS Code:白纸 / 羊皮 / 竹青保持正常主题,切到「暗夜」纸张时自动把 VS Code 切到深色,切回或关闭阅读器时恢复原主题(1.8.0);
  • 本地缓存:翻回已读页不重复翻译,公式裁图和译文都跟着段落缓存;
  • 支持 DeepSeek / OpenAI 兼容接口 / Gemini,也有内置免费翻译引擎,不填 API Key 也能先用起来。

后两项(主题联动、切页不重载)在 1.8.x 才加入;如果插件市场里的版本还是 1.7.x,可以从下面的 GitHub Releases 下载最新 VSIX 体验。

安装与上手

在 VS Code 插件市场搜索 Bilingual Paper Reader,或直接打开:

https://marketplace.visualstudio.com/items?itemName=paper-reader.academic-pdf-reader

也可以从 GitHub Releases 下载 VSIX 离线安装:

code --install-extension academic-pdf-reader-1.8.1.vsix

上手只要三步:

  1. 安装扩展,Reload Window;
  2. 在资源管理器里右键 PDF,选择「在双栏对照器中打开 PDF」;
  3. 点右上角「设置」,选一个翻译引擎并填 API Key;没有 Key 可以先切到内置免费翻译。

想用本地公式识别的话,在命令面板搜索「启用本地公式识别」,扩展会自动探测装了 paddleocr 的 Python 环境。默认关闭,不影响正常阅读。

一些工程上的取舍

这个项目踩过的坑比功能列表长得多,挑几个有意思的:

  • 为什么公式不全部用 KaTeX:PDF 文本层没有“根号覆盖到哪里”“矩阵有几行”这类结构信息。强行重建会得到“看起来像公式、内容全错”的结果,所以复杂公式宁可裁图。
  • 为什么纯 LaTeX 论文会被整篇识别成公式:CMR / CMSS 既是 LaTeX 正文,也是公式里的正体数字/括号。只按字体名判断会把整页正文当成公式;现在改成按整页字体统计区分“正文用的 CMR”和“公式里的 CMR”。
  • 为什么表格会“切走”公式:整页大表的列间空白会被误判成双栏沟槽,表下正文被劈成碎片;现在候选分栏必须满足栏宽和两侧正文的双重条件。
  • 为什么切回阅读器会重新加载:VS Code 自定义编辑器默认不保留隐藏的 webview;开启 retainContextWhenHidden 后切回即恢复,代价是常驻内存,所以留了开关。
  • 为什么“重新对齐”按钮以前没用:前端清了缓存,宿主的内存缓存还在,点多少次都返回同一份未对齐结果;现在重译请求会带 force 透传到宿主,真正重新请求。

适合谁,不适合谁

适合:

  • 每天要读 2~3 篇论文、需要精读和做笔记的研究生 / 工程师;
  • 习惯在 VS Code 里写代码、写 Markdown,想把阅读也放在同一个窗口;
  • 经常读双栏、公式多、有表格的 ML / CV / 信号处理论文。

不适合:

  • 扫描版 PDF(没有文本层,扩展只能显示原图,无法逐句翻译);
  • 只想“一键整篇机翻”、不关心对照和批注的场景;
  • 主要在手机或平板上阅读。

另外要诚实说明:版面解析和逐句对齐仍然会有失败的时候,复杂表格、特殊字体、非常规排版的论文尤其容易出问题。遇到问题欢迎提 Issue,最好附上页码和截图;这类问题通常都能定位到具体的版面规则。

链接

  • VS Code 插件市场:Bilingual Paper Reader
  • GitHub 仓库(MIT,欢迎 Star / Issue):SevenFriends7/academic-pdf-reader
  • 最新 Release(v1.8.1):releases/tag/v1.8.1

如果这个工具能帮你少花一点时间在“找句子、对公式、切窗口”上,那它就值了。欢迎试用、反馈,也欢迎把它推荐给身边同样在啃论文的人。

Tag: PDF VS Code 学术阅读 效率工具
Last updated:

林宇祥

电子科技大学 · 信息与通信工程学院 · 电子信息工程。专注于嵌入式Linux、多核异构协同系统(ARM Cortex-A55 + Cortex-M33)与边缘视觉AI开发。

Like
< Last article

专栏近期博文

  • 我把论文阅读器做进了 VS Code:中英对照、公式原图、AI 答疑
  • 多传感器相对定位的观测建模与优化方法
  • 基于 Yocto 与瑞萨 RZ/V2H 多核异构的跨海大桥智能巡检 ROV 全景结项总结
  • 关于MIPI摄像头的问题
  • 关于CA55与CM33总线访问冲突的问题

COPYRIGHT © 2026 林宇祥的技术博客 · 电子科技大学. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang