Skip to content

Releases

v0.8.2

Choose a tag to compare

@Veiluna Veiluna released this 03 Nov 03:02
54537f7
  • 保存阶段提速:分栏双语在 BabelDOC 排版完成后的“保存 PDF”阶段大幅缩短。13 页图表密集的样例论文实测由约 381 秒降到约 100 秒(模拟接口估算):
    • 分栏合成去掉重复计算(段落归属与划词框判断改用索引、图形解析每页只做一次):约 238 秒 → 67 秒;
    • 分栏变体渲染复用已加载的字体:约 87 秒 → 28 秒;
    • 链接恢复按页缓存重复解析:约 53 秒 → 5.5 秒;
    • 单语译文的几步后处理合并为一次保存,零修改不保存。
  • 等待模型时提前计算:空闲内存 ≥ 4 GB 时,用一个低优先级后台进程在等待模型回复期间提前算好分栏合成的原文部分;内存不足、出错或超时时自动按原方式计算,结果相同。
  • 后处理进度可见:界面不再一直停在“保存 PDF”,会依次显示底图、图内文字、标点、恢复链接、分栏 i/n、导航、保存分栏。
  • 输出不变:以上改动均经新旧版本逐页像素、逐字坐标、链接、目录、划词数据比对一致。
  • 诊断文件按需生成:.links.json、.layout.json 等诊断数据只在调试开关打开时生成。
  • 已知差异:坐标超出 float32 范围(约 3.4e38 以上)的畸形 PDF,旧版会退回单语,新版照常合成(#72)。

v0.8.1

Choose a tag to compare

@Veiluna Veiluna released this 02 Nov 04:57
49748b0

BabelDOC for Zotero 0.8.1:图表重页提速

修复图表很多的页面(如数十万条矢量路径的图)翻译时排版极慢甚至超时的问题。

变化

  • 分栏双语提速:分栏变体先筛选再复制,不再整页深拷贝。
  • 图表改用原页底图:图表框内的线条和文字直接取原页矢量内容,不再逐条重画。此前超时的图表重页现在约 1–2 分钟完成。
  • 图表原样保留:图内标签等图表框里的文字保留原文、不再送去翻译;分栏开或关两种模式都生效。

已知限制

  • 分栏双语时,若一篇文档多页有图,其中一页分栏回退、另一页正常,回退页的图表可能缺失。
  • 跨页划词隔离在 Zotero 10.0.7 上未生效(#57)。
  • 暂不支持三栏及以上、左右不对称的版式。

安装:下载下方 babeldoc-for-zotero-0.8.1.xpi,在 Zotero「工具 → 插件」中从文件安装;已安装旧版的会自动收到更新。

v0.8.0

Choose a tag to compare

@Veiluna Veiluna released this 31 Oct 10:50
24312e1

BabelDOC for Zotero 0.8.0:分栏双语重做

分栏双语("双语对照")译本重做,修复 0.7.0 在部分论文上整篇退回单语中文、出现双倍宽页、水印混入正文、断句处整段英文等问题。

变化

  • 认栏只用 PDF 底层数据:按字符坐标和内容流书写顺序判断单栏/双栏,双栏以页面中线分左右,不再依赖版面识别框。
  • 输出版式:原文每个双栏页输出两张与原页同宽的页:左栏英文 | 左栏中文、右栏英文 | 右栏中文,左右边距与原文一致。
  • 跨栏内容:标题、作者、摘要、通栏图表只放中文、横跨整行,两张输出页各一份。
  • 页眉、页脚、水印:在每张输出页原位置原样保留一份,不翻译。
  • 中文放不下时加高页面,宽度和字号不变;单栏论文输出原文整页 + 中文整页。
  • 单页出错只影响该页(改按原文整页 + 中文整页输出),整篇不再退回单语。
  • 断句组:跨页、跨栏断开的句子补译仍失败时,拆成片段再译一次,不再整段保留英文。

已知限制

  • 跨页划词隔离在 Zotero 10.0.7 上未生效(#57)。
  • 暂不支持三栏及以上、左右不对称的版式。
  • 处理整篇论文时 BabelDOC 内存占用较高。

安装:下载下方 babeldoc-for-zotero-0.8.0.xpi,在 Zotero「工具 → 插件」中从文件安装;已安装旧版的会自动收到更新。

0.7.0 分栏双语

Choose a tag to compare

@Veiluna Veiluna released this 26 Oct 15:28
0a16da8

BabelDOC for Zotero 0.7.0

分栏双语("生成双语对照 PDF")

  • 每个输出页左英右中;源双栏页拆成 A、B 两页(A 对应左栏、B 对应右栏),单栏页输出一页并按需加宽。
  • 标题、作者行、跨栏摘要、跨栏图表与公式只保留译文一份,横跨整页;页眉、页脚、页码只保留原文一份,A、B 两页都显示。
  • 内部链接、目录与 PDF 页码标签随输出页重映射(双栏页标签为 41a/41b),跳转落在同一语言侧。
  • Zotero 10.0.6 阅读器划词隔离:从英文侧开始拖选只选英文,从中文侧开始只选中文,从某个跨栏元素开始只选该元素;阅读器结构变化时自动回退为普通行为。
  • 三栏、旋转页、扫描页,以及栏内容放不下的单页,逐页回退为整页并排;整篇合成失败时导入单语中文译本并提示。

表格翻译封存

  • 表格内容与表注保留原文,表格题注、表外正文与图内文字照常翻译(ADR 0007)。

验证

  • Python 355 项、node 16 个测试文件通过。
  • 新增 tests/split_quality_check.py(13 项:英文侧无汉字、中文侧无串栏英文、页眉页脚、作者与跨栏区域、页数、链接与目录 A/B 落点、页码标签、内容流顺序、Zotero pdf.js 文本顺序等)。
  • 真实接口门禁:两篇论文各跑一次分栏双语(共 4 次请求),13 项全部通过。
  • 未完成:最后一轮代码修改未经独立复审;Zotero 真机手动划词验收未做。

已知限制

  • 划词隔离依赖 Zotero 10.0.6 阅读器的非公开结构,其他阅读器不保证。
  • 跨页拖选经过没有同侧文字的页面(如整页跨栏图)时,选区在该页之前截止。
  • B 页右栏保持源页纵向位置,首页 B 页上方会留出标题与摘要所占的空白。
  • 单栏页加宽后在"适应宽度"下字较小,需手动放大;中英段落不保证逐段水平对齐。

0.6.0

Choose a tag to compare

@Veiluna Veiluna released this 21 Oct 18:15
01f9851

BabelDOC for Zotero 0.6.0

输出保真与进度(0.6.0 一次交付 6 类问题)

链接恢复

  • 锚文本取链接矩形下的完整文本:复合编号(3.1、3.4)、上标(10)、章节/图表/公式引用不再被截断。
  • 同一段落括号列表中的引用簇(如 [4, 7, 18])按源阅读顺序逐个配对,整簇可点击,不再丢中间项。
  • 目标定位增加编号/标题搜索与公式框、相对位置兜底;无法定位的链接写入诊断日志(含 mapped_by 原因)。
  • 译文侧链接覆盖率目标 ≥95%;真实重跑验收见下。

图内文字(图4/图5、多逗号)

  • BabelDOC 0.6.4 会丢弃热图坐标轴标签;排版完成后从源 PDF 恢复这些标签:图4 横坐标 75/75 个标签恢复。
  • 译文图5 行标签重新按源右边界对齐(x1 误差 ≤1pt),并删除与中文行标签重叠的英文碎片,不再中英重叠。
  • 图注正常翻译;45° detector 轴标签保留原文缩写。
  • 修复 [0, 1] 之后的重复逗号(,, 、,, 等),全文档不再出现 [0, 1], ,。

表格

  • 表体改为按内容规则送译:整句与普通英文词翻译;专名、缩写、数字、代码、标识符保留原文;取消按几何角色的一刀切。表3 不再“部分翻译、部分未翻译”。
  • 表2 一类 90° 旋转列标题:排版后补译一次(一次很小的额外请求,约 200 output token),中文按原列位置竖排、字形正立、保持阅读方向;模型失败或返回无效时保留英文并记录诊断,不阻断 PDF。
  • 表头/表体几何角色只用于排版对齐,不再作为翻译门。

进度

  • 长请求期间进度窗口显示“模型正在翻译(已用时 mm:ss)”并每秒刷新,不再停在 0% 或 0:00。
  • 阶段切换按权重推进;进度显示不发送任何额外模型请求。
  • 请求计数:主翻译 + 合并补译 + (仅当存在未翻译旋转表头时)1 次表头补译;双语与单语产物共用这一次请求。

修复

  • 插件现在把 0.6.0 新增的 Python 辅助模块(图内文字、表格内容、旋转表头、重复标点清理)随 runner 一起复制到 Zotero 数据目录;此前这些后处理在真实插件运行时会因缺少模块而静默跳过。
  • 真实重跑回归修复:
    • 表体规则不再把含下划线 token 的整句判为标识符(表3 的 New cred_disp parameter combination 现在整句翻译)。
    • 数字锚点不再把 1 匹配到 3.1 的尾数字;公式/图/表编号按"Eq./Fig./表/公式"等引导词定位;Fig. 3 不再与同行的 Sect. 3.1 混淆;被链接矩形裁掉前导字母的上标引用(t10)恢复为数字锚点。
    • 占位符还原后残留的 [4, 7, 12, 18], , 等重复逗号由 PDF 后处理删除多余逗号字形,中文标点保留。
  • 版本号 0.6.0;manifest 与自动更新清单同步。

验证

  • 单元测试:Python 13 个测试文件 + Node 14 个测试文件全绿(含新增 tests/test_table2.py、tests/test_table2_runner.py、tests/test_punctuation_cleanup.py、tests/helper-manifest.test.js)。
  • 质量夹具 tests/pdf_quality_check.py:表2 增加"竖排列数=源列数、字形正立"断言;图5 增加"中文行数=源行数"断言;链接目标按出现顺序配对源注释(第4节 4 处分别指向正确页)。
  • 真实重跑该论文双语一次:3 个请求(主翻译 24933 token + 合并补译 + 表2 补译 66 token),约 13 分钟,6 项自动检查全部 PASS:
    • 链接:8 个用户反馈锚点中 7 个通过(1 个因新译文措辞变化、文本不再出现而 SKIP);整体恢复 127/148 链接(85.8%),未恢复的主要是跨行长 URL 与跨行上标引用,均在诊断日志逐条记录;
    • 图4 横坐标 75/75 标签恢复;
    • 图5 11 行中文标签右对齐(x1 709.4–710.2pt,源右边界 710.2pt)、无英文碎片;
    • 全文档无重复逗号;
    • 表2 13 个旋转列标题为中文竖排、字形正立;
    • 表3 12/12 抽查整句含中文,专名/缩写保留。
  • 单语/mock 回放不消耗真实额度。

已知限制

  • 链接恢复率 85.8%,低于规格 95% 的目标;未恢复项集中在跨行 URL 与跨行上标引用,规格允许无法精确定位时记录 warning 而不强行定位。
  • 源论文只有表 1–3,规格提到的表 4/5 在该论文中不存在;表 2/3 的处理规则对同类表格通用。
  • 表体中 1–2 词的普通英文值(如 F1 score)按现有测试保留原文,只有整句与表头普通英文词送译。
  • 标点后处理会合并通用重复标点([0, 1], ,、12018,, 等),由真实重跑交付缺陷驱动。

0.5.2

Choose a tag to compare

@Veiluna Veiluna released this 21 Oct 11:46
8c319a8

BabelDOC for Zotero 0.5.2

改进

  • 翻译失败也导入 PDF:只要 BabelDOC 已产出译本且至少一段翻译成功,补译后仍失败的段落、结构性质检失败、鉴权/额度等错误都会降级为完成警告并导入 PDF,失败段落保留原文;只有完全没有产物或 0 段成功时才整篇失败、不导入。
  • 修复表头专名被误判:表头单元格中的单令牌人名/检测器名(如 harrison、russellmitchell)原样返回时按保留原文处理,不再触发合并补译和整篇失败;常见通用表头词仍必须翻译。
  • 请求的输出模式缺失时(例如要双语但只生成单语),自动导入已生成的另一种产物并提示降级。
  • 完成提示、进度窗口与诊断日志会记录降级原因、失败段落的页码/段落及日志路径。

测试

  • 新增 tests/test_degraded_output.py;更新 runner/queue 与 e2e 测试覆盖降级输出、0 段成功、无产物边界。
  • 使用 mock OpenAI 服务与真实 BabelDOC 0.6.4 验证,不消耗真实 API 额度。

v0.5.1

Choose a tag to compare

@Veiluna Veiluna released this 21 Oct 09:06
646f79a

0.5.1

修复 0.5.0 的三个问题:

  • 双语失败修复:术语/缩写/标识符(F1、Adaboost、http、https、12.7% 等)原样返回时视为保留,不再导致整篇翻译失败;标题与正文按严格规则判断,表头/表体允许专名回退,但通用表头(含 *、†、‡、# 标记与全大写变体)仍须翻译;补译调用点统一携带版面角色。
  • 输出入口调整:删除设置页“输出格式”控件(Zotero 10 下显示异常),改为右键 PDF 菜单中的 BabelDOC for Zotero 子菜单:“翻译成中文 PDF”或“生成双语对照 PDF”;删除“同时生成两种”。
  • 文档与版本:规格同步;版本 0.5.1。

验证:术语判定回归 17 项、Node 13 项、Python 全量(策略/链接/表头/双语/片段/回放)通过;临时 Zotero 10.0.6 完整验收 17/17 通过。未调用真实翻译 API。

安装:下载 babeldoc-for-zotero-0.5.1.xpi,在 Zotero 中打开 工具 → 插件 → 从文件安装。

v0.5.0

Choose a tag to compare

@Veiluna Veiluna released this 20 Oct 16:49
1d1f7c7

0.5.0

  • 新增输出格式:单语中文译本、左右双语对照、或两者同时生成(默认单语)。
  • 双语每页左原文、右译文;内部引用在各自一侧跳转,外部链接两侧可用。
  • 新增“检测环境”:检查安装记录、Python、BabelDOC、依赖、字体与模型资源,并运行小型 PDF 处理;只检测,不下载、不安装。
  • 设置页精简下载源与按钮,窄窗口自动换行;安装文案统一为“修复环境”;新增“关于”与项目主页。
  • 修复:行内公式整体排版、摘要样式补译、引用颜色边界、译本链接恢复、表头翻译与表体保护、固定请求策略与严格完整性。

安装:下载下方的 babeldoc-for-zotero-0.5.0.xpi,在 Zotero 中打开 工具 → 插件 → 从文件安装。

BabelDOC for Zotero 0.4.0

Choose a tag to compare

@Veiluna Veiluna released this 18 Oct 09:47
77014e6

BabelDOC for Zotero 的第一个公开版本:在 Zotero 里一键把外文 PDF 翻译成中文,翻译由本地 BabelDOC 完成,保留原文排版。

安装

  1. 下载下方的 babeldoc-for-zotero-0.4.0.xpi。
  2. 在 Zotero 中打开 工具 → 插件,选择 从文件安装,选中该文件。
  3. 首次启动后,插件会在后台自动安装翻译环境(uv → Python 3.12 → BabelDOC 0.6.4,位于 %LOCALAPPDATA%\babeldoc-for-zotero),默认使用国内镜像,无需手动安装 Python 或 Conda。
  4. 在插件设置中填写翻译服务(兼容 OpenAI 接口)的地址、密钥和模型,然后右键 PDF 附件即可翻译。

0.4.0 更新内容

  • 翻译环境自动安装:固定版本的 uv(校验 SHA-256)、Python 3.12 和 BabelDOC 0.6.4,逐步显示进度,失败可重试并从失败步骤继续。
  • 下载源可选国内镜像或官方源。
  • “安装 / 修复环境”会删除整个环境目录后重新安装。
  • 设置页按“翻译服务 / 翻译选项 / 环境”分组,去掉了手动填写 BabelDOC 路径和 Miniconda 脚本。
  • 表格按固定版式翻译(0.3.1)。

系统要求

  • Zotero 7 – 10,Windows。
  • 首次安装环境需要联网下载约数百 MB 的依赖。

自动更新清单

自动更新清单 Pre-release
Pre-release

Choose a tag to compare

@Veiluna Veiluna released this 18 Oct 09:47
77014e6

Zotero 自动更新使用的 updates.json,请勿删除。下载插件请看最新版本。