尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
FluentRead 文档翻译实战指南:从本地文件批量导入到双语对照、校订与保真导出
前端AI 应用本地部署【免费下载链接】FluentReadAn open-source browser extension for bilingual translation. 一款开源的浏览器双语翻译插件。项目地址https://gitcode.com/gh_mirrors/fl/FluentRead点击查看免费下载导读本文以 FluentRead 的文档翻译Document translation独立工作台为主题系统讲解其完整的用户流程从扩展菜单导入 PDF、ePub、DOCX 与各类文本/字幕文件到批量排队翻译、暂停续译、校订译文再到按原格式导出双语或纯译文文件。读者读完本文不仅能掌握该功能的所有操作细节与限制还能从源码层面理解各格式解析、批量调度与下载产物是如何实现的。文档翻译是 FluentRead 中独立于网页翻译的一个完整功能模块其入口页面、领域模型、批量翻译编排与二进制文档解析分别位于 src/app/document-translation、src/features/document-translation/core 与 src/features/document-translation/services。本文所有操作说明以 docs/en/guide/document-translation.md 为准原理细节以仓库源码为准中文版说明见 docs/guide/document-translation.md。打开文件入口与支持格式如何进入文档翻译从扩展菜单选择Document translation文档翻译会打开一个独立的翻译工作台页面。导入文件有两种方式将文件直接拖放到页面中央的拖放区点击页面上的文件选择按钮或队列中的Add files / 添加文件使用系统文件选择器支持一次选择多个文件。导入的文件会立即在浏览器本地解析解析完成后页面会显示可翻译片段数量与文件大小之后才进入翻译确认环节。支持的格式与大小限制源码 src/features/document-translation/core/document.ts 中的SUPPORTED_DOCUMENT_EXTENSIONS定义了完整支持列表共 14 种扩展名类别扩展名说明文档pdf需含可选中文本文本层电子书epubZIP 容器格式按章节解析Worddocx旧版.doc需先另存为.docx网页html、htm保留标签结构纯文本txt保留换行结构Markdownmd、markdown保护代码块与行内语法字幕srt、vtt、ass、ssa保留时间轴与标签歌词lrc保留时间标签数据json只翻译字符串叶节点保持 JSON 合法每个文件的上限为 10 MiB定义于 core/document.ts 的DOCUMENT_MAX_BYTES10 * 1024 * 1024。文件类型由扩展名识别getDocumentFormat与 MIME 类型一一对应getDocumentMimeType。仓库的 examples/document-translation 目录提供了上述各类格式的样例文件如sample.pdf、sample.epub、sample.srt、sample.json等可用于快速验证功能。文本格式与二进制格式的解析分界从源码结构看解析被清晰地划分为两条路径文本格式txt/markdown/html/srt/vtt/ass/lrc/json由 core/document.ts 的parseDocument统一处理纯同步、不依赖外部库二进制格式pdf/epub/docx由 services/binary.ts 的parseBinaryDocument处理按需动态加载pdfjs-distPDF.js、jszip、pdf-lib等库。每种格式解析后会生成统一的ParsedDocument模型包含可翻译的segments片段列表、用于无损还原的parts结构以及二进制格式特有的版面/章节/段落元数据。各格式解析的底层原理PDF文本原子 → 行 → 段落块services/binary.ts 的parsePdf使用 PDF.js 逐页提取文本经过三段式重建pdfTextAtoms将 PDF.js 的文本项含仿射变换坐标过滤旋转过大的项转换为带 x/y/宽高/字体的文本原子pdfTextLines按 y 坐标聚类成行、按 x 坐标排序拼接处理字间距与行内断点pdfTextBlocks依据行高标题判定阈值bodyHeight * 1.32、垂直间距、重叠率与对齐关系把行合并为段落块并推断fontWeight标题 700、短句 600、正文 400与居中对齐。每个段落块对应一个翻译片段并记录其在页面上的位置x/y/width/height/fontSize/lineHeight等PdfDocumentBlock字段这些坐标正是后续译文写回文本框、版面保持原位的依据。若 PDF 没有任何可提取文字会明确报错扫描版 PDF 暂不支持 OCR请上传包含文本层的 PDF。ePub读取 OPF 清单按阅读顺序取章ePub 本质是 ZIP 容器。services/binary.ts 的parseEpub依次校验mimetype条目必须为application/epubzip、META-INF/container.xml中指向的 OPF 内容清单再解析 OPF 的manifest与spineitemref顺序只取 XHTML/HTML 章节每章复用parseDocument(chapter.html, source)走 HTML 解析并记录章节标题与片段偏移EpubDocumentChapter供阅读时按章节导航。DOCX正文、页眉页脚、脚注尾注分别处理services/binary.ts 的parseDocx校验[Content_Types].xml与word/document.xml后按word/document.xml、header*.xml、footer*.xml、footnotes.xml、endnotes.xml的优先级扫描w:p段落提取w:t文本、w:tab制表符与w:br/换行并根据段落样式w:pStyle中的 title/heading、w:numPr列表标记标注title/heading/list-item/paragraph/header/footer/note角色。JSON只翻译字符串叶节点core/document.ts 的parseJsonDocument深度遍历 JSON只把字符串叶节点送入翻译队列并记录其在结构中的JSONPath如$.items[0].label渲染时在深拷贝上按路径回填译文再用JSON.stringify(output, null, 2)输出保证导出结果始终是合法 JSON。字幕与歌词时间轴与标签不参与翻译SRT/VTT 的时间戳行TIMED_SUBTITLE_PATTERN与 ASS 的Dialogue:行按规则切分ASS 在第 9 个逗号后取正文字段LRC 只把[mm:ss.xx]时间标签之后的内容作为片段。SegmentPart会携带timeStart/timeEnd元数据并在预览表格中展示翻译结果通过preserveSubtitleMarkup保留开头的 ASS 覆盖代码{...}或行内 HTML 标签如i…/i。归档安全上限为避免畸形压缩包导致资源耗尽services/binary.ts 对 ePub/DOCX 设定了三层上限条目数不超过 4000、单个条目解压后不超过 24 MiB、解压总量不超过 96 MiBassertArchiveSafety。超限会停止解析并提示。批量翻译队列、暂停与断点续译文件队列与独立进度进入工作台后所有导入的文件会出现在顶部文件队列中。可以随时点击Add files / 添加文件追加文件。每份文件独立显示翻译进度已完成片段数 / 总片段数导入或翻译失败不影响其他文件——失败项在队列中标记错误其余文件继续处理未解析成功的文件不会阻塞后续文件见 DocumentApp.vue 的loadFiles逐文件 try/catch。开始批量翻译确认语言、翻译服务与模型后点击Translate remaining files / 翻译剩余文件队列会按顺序处理所有尚未完成的文档。页面会先校验凭据credentialWarning与设置一致性再逐个文档执行翻译DocumentApp.vue 的startBatch。暂停全部与续译点击Pause all / 暂停全部会通过AbortController中止当前翻译任务但已完成并提交的片段会保留translations数组中已写入的译文不回退。再次开始时单文件场景通过initialTranslations把已有译文作为已完成片段传入只翻译剩余空白片段批量场景会逐文件继续未完成的部分。这一行为在 services/translation.ts 的createDocumentSegmentTranslator中体现pending只取!translations[id].trim()的片段也由 DocumentApp.vue 的startTranslationinitialTranslations: [...translatedSegments.value]驱动。暂停或单段请求失败后已完成片段可立即在校订视图中查看。设置变更需要确认重译翻译开始时会为当前设置生成指纹currentFingerprint包含源语言、目标语言、服务、模型、术语库 ID 与修订号。若之后更改了这些设置页面会提示设置已更改。现有译文仍保留按新设置翻译会从头开始并要求逐份确认重新翻译settingsChanged判断 确认对话框避免静默覆盖已校订的译文。批量翻译过程中检测到设置被外部修改也会暂停并提示DocumentApp.vue。批量下载 ZIP队列停止后可以点击队列中的任意文件单独阅读、校订或下载。批量导出流程DocumentApp.vue 的downloadBatch选择输出模式bilingual双语对照或translated仅译文点击Download completed files (ZIP) / 下载已完成文件ZIP只有翻译完成的文件会进入压缩包未完成文件被排除同名文件放入不同编号目录zip.file(${index 1}/${name})避免覆盖下载成功后记录已下载修订号移除未下载的译文时会弹出确认。会话隔离与离开保护文件和译文只保存在当前页面内存中刷新、关闭页面或打开其他文档前必须下载。页面注册了beforeunload与pagehide监听DocumentApp.vue存在未下载译文editRevision downloadedRevision时会拦截关闭并提醒切换队列文件会先saveActiveDocument()保存当前文件状态保证切换不丢工作。翻译与对照阅读翻译设置与开始在左侧设置面板依次确认源语言——可选自动检测auto目标语言翻译服务——列表来自可用服务目录使用 AI 服务含自定义 OpenAI 兼容服务时还需确认模型术语库Glossary——可继承全局设置、关闭或按需选择术语库仅当当前服务支持时才可启用。若服务凭据缺失、模型未配置或服务不可用面板会显示警告并引导去设置页配置。确认设置后先在右侧预览原文再点击Start translation / 开始翻译。三种阅读方式预览区提供原文 / 双语 / 译文三种视图切换previewMode。没有译文时预览强制停留在原文视图。文本格式HTML/Markdown/TXT的预览由 core/preview.ts 的createDocumentPreviewHtml生成HTML 与 ePub 章节走readerShell沙箱外壳注入严格的 CSPdefault-src none等并通过stripActiveHtml剥离script/iframe/object/embed/form/base、meta refresh与on*事件属性防止脚本执行Markdown 按源行渲染标题、列表、引用、代码围栏与分割线双语模式逐行配对pairedUnitTXT 按段落块配对渲染。PDF 使用专用连续阅读视图DocumentApp.vue逐页渲染原页与译页并排显示支持 100% / 125% / 150% 缩放ePub 提供章节导航DOCX 提供正文/页眉/页脚/脚注/尾注分区字幕以时间轴表格展示JSON 以 JSONPath 对照表展示。长文档的暂停与恢复较长文档可随时暂停暂停或请求失败后已完成片段保留继续翻译时只处理剩余部分。更换语言、服务、模型或术语设置后需要按新设置重新翻译页面会先提示见上文设置变更。底层批量调度机制翻译编排集中在 services/translation.ts通过DocumentTranslationGateway端口注入翻译能力不直接绑定具体 provider。两个关键机制批处理拆分BATCH_ITEM_LIMIT 16、BATCH_CHARACTER_LIMIT 3_500translation.tssplitBatches按最多 16 段且不超过 3500 字符拆批单批提交给支持批量的服务顺序兜底不支持批量的服务按每段请求并发 worker 数Math.min(3, pending.length)translation.ts。任务开始时会固定语言对快照sourceLanguage/targetLanguage防止设置页同步更新污染后续批次每次提交前检查AbortSignal批量结果会校验长度与空值翻译服务返回的片段不完整请重试并阻止取消或失败后的迟到提交stopped标志与提交代次校验。文档级上下文buildDocumentContext截取前 24 段预览、上限 4000 字符会随每个请求发送帮助模型保持术语一致。校订与下载校订译文点击工具栏的Edit translation / 校订译文进入校订视图DocumentSegmentEditor.vue支持搜索要修改的句子支持筛选尚未翻译的片段直接在编辑框中修改译文修改立即生效并计入editRevision。校订结果同时应用于预览和下载产物——renderDocument/createDocumentDownload都读取同一个translatedSegments数组且译文替换的是片段对应的翻译槽位不会动原文结构。下载文件点击Download file / 下载文件选择双语对照或仅译文按原文件格式保存。翻译未完成时可以勾选我已了解下载当前结果确认部分下载缺少译文的片段保留原文。导出由 services/binary.ts 的createDocumentDownload统一实现各格式行为如下格式双语产物仅译文产物PDF原页 译页左右并排的整页 PDFpdf-lib生成仅含译页图像的 PDFePub回写 ZIP 中各章节 XHTML双语时原段落后追加译文段落替换为纯译文章节DOCX原段落后追加粉色#E83B6B译文段落原位替换w:t文本文本类双语时原文下附译文HTML 用span>赞分享前端AI 应用本地部署【免费下载链接】FluentReadAn open-source browser extension for bilingual translation. 一款开源的浏览器双语翻译插件。项目地址https://gitcode.com/gh_mirrors/fl/FluentRead点击查看免费下载相关推荐Grafana Pyroscope 磁盘存储配置指南从 head block 写盘到高磁盘利用率保护Grafana Pyroscope 磁盘存储配置指南从 head block 写盘到高磁盘利用率保护 本指南以 Grafana Pyroscope 的 ing前端AI 应用本地部署语雀文档批量导出完整指南从本地存储到多平台发布语雀文档批量导出完整指南从本地存储到多平台发布 你是否遇到过语雀文档无法自由迁移的困扰随着语雀定位从内容社区转向创作工具许多用户发现免费版本的功能限制让文CLI文档MiroFish API接口文档开发者必备的调用指南与示例MiroFish API接口文档开发者必备的调用指南与示例 MiroFish是一款简洁通用的群体智能引擎能够预测万物。本文档将详细介绍MiroFish的AP人工智能大模型AI Agent多智能体Agent 编排上一篇深入解析 lib/pqKubeEdge 项目中使用的纯 Go PostgreSQL 驱动下一篇终极指南如何在Windows上零重启实现键盘鼠标游戏手柄全面映射创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

网页设计公司哪家值得推荐最佳实践

网页设计公司哪家值得推荐最佳实践

选网页设计公司别踩坑,3个实战案例教你避拖稿 改个需求建站公司拖一周,这种憋屈事我见得太多了。很多甲方朋友找网页设计公司,最后发现对方连个像样的实战案例都拿不出,全是套模板。今天不聊虚的,直接拆解三个真实项目,看看怎么通过细节判断一家公司到…

📅 2026/9/27 9:54:35
2026最新设计大型网站建设避坑指南

2026最新设计大型网站建设避坑指南

2026最新设计大型网站建设避坑指南 别再指望套个模板就能撑起门面了。对于大型项目,那些千篇一律的模板不仅丑,更致命的是性能瓶颈,导致用户流失率飙升30%以上。在 2026最新…

📅 2026/9/27 9:54:35
网站制作换下面友情连接实战案例避坑指南

网站制作换下面友情连接实战案例避坑指南

网站制作换下面友情连接实战案例避坑指南 模板网站太丑,功能还缺失,这是很多站长接手旧站或新建项目时最头疼的事。想直接改模板?改着改着发现代码结构混乱,牵一发而动全身,最后只能推倒重来。我见过太多这样的 实战案例…

📅 2026/9/27 9:54:35
MORE NEWS

更多资讯

📰

Enhancing Japanese Large Language Models with Reasoning Vectors

文章主要内容 本文聚焦于日语大语言模型(LLMs)推理能力提升的挑战与解决方案。由于日语在公共数据集、专家标注资源及大规模评估模型上的局限性,主流LLMs依赖的后训练技术(如监督微调SFT、强化学习RL)难以直接应用。 为此,研究团队提出“推理向量(reasoning vectors)…

📰

STM32+Air780E+OLED:按键触发中文短信发送终端实战

1. 项目缘起与整体方案拆解按键一按,短信发出,OLED屏幕上实时滚动着“发送中”“发送成功”的状态——这个场景听起来像是某个工业设备的报警通知模块,或者是一个远程数据采集终端的核心交互逻辑。我最近刚把一个类似的项目从零跑通&#xff…

📰

STM32+Air780E短信发送终端:按键触发与OLED状态显示实战

1. 项目缘起与整体设计思路按键一按,短信发出,OLED屏幕上同步刷新发送状态——这个需求听起来简单,但真正动手做过的朋友都知道,里面藏着不少门道。我最近刚完成一个基于STM32和Air780E的短信发送终端,核心功能就是通过…

📰

求个网站或者app源码下载

网站被黑挂马咋办?保姆级建站教程避坑指南 凌晨三点,手机突然疯狂震动。运维同事发来的消息只有一句话:“老板,咱官网首页全变成博彩广告了,后台密码也改了。”你心里咯噔一下,脑子瞬间空白。这就是很多小白做网站时最噩梦的场景:网站被黑挂马,且完全…

📰

strands-agents Python SDK v1.32.0 发布解读:事件循环 OTel 指标补全、Mistral 依赖上界与双向流式 stop reason 修复

人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务 【免费下载链接】harness-sdk Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud. 项目地址: https://…

📰

Program-as-Weights: A Programming Paradigm for Fuzzy Functions

Program-as-Weights: A Programming Paradigm for Fuzzy Functions 论文完整解读 一、论文核心内容总结 1. 研究背景 大量现实文本任务(日志告警、破损JSON修复、搜索意图排序、模糊匹配、意图分类等)属于模糊函数(Fuzzy Function):人类可直观完成,但无法用严谨符号代码…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬