直接回答
离线阅读工作流不能仅凭 .epub 文件名或当前页面打开就成立。W3C EPUB 3.3 定义了出版物容器和结构化内容,但 EPUB 也可能引用容器之外的资源。应在断网后重新启动阅读器,检查这本具体文件及其所需资源是否可用。Android Storage Access Framework 可以向应用提供用户选择的文档 URI;授权只说明应用获得访问边界,不证明提供方已把全部字节缓存到本机,也不证明阅读器会永久保存文件。 应把三种用户动作分开测试。词典查询针对一个选中的词及其词义或词条;句子翻译则要求翻译引擎理解一定上下文后转换一段文字。两者不能互相证明。准备固定的短选区样例,包含标点、词形变化、邻近上下文,以及含否定或专名的句子。记录阅读器实际选中的文字、传给查询或翻译的输入,以及结果能否在保存为批注前与原文核对。 回到原段落是另一项独立契约。EPUB CFI 用于描述 EPUB 出版物中的位置,但应把它当成特定出版物表示中的定位符,而不是保证所有阅读器都会保存或恢复选区,也不是跨任意内容修改都稳定的承诺。针对固定 EPUB 字节身份和阅读器版本,测试创建批注、关闭重开、调整字体或版式后重新定位。如果实际使用页码、文字偏移、CFI 或专有锚点,应记录对应机制;不支持或定位不准时要明确标出,不能编造通用可移植性。 数据处理需要单独划界。ARCH-01 将端侧 AI 定义为在终端设备执行推理;PRIVACY-01 提醒,本地推理并不能证明应用没有其他网络请求。原书、抽取出的选区、词典结果、翻译结果和批注应分开识别。查清哪些内容保存在应用存储、哪些可能导出或备份,以及删除后实际发生什么。任务只需要一句选中文本时,不应默认发送整本书;也不能因为其中一个推理阶段在本机,就把整本书描述为完全私密。 实用报告应限定范围:记录 EPUB 内容身份、阅读器与系统版本、选区、词典或翻译任务、URI/提供方路径、网络条件、定位机制,以及观察到的保留和删除行为。先用公有领域或合成书籍验证,不要从敏感材料开始。结果最多说明某个配置完成了一次工作流,不能替所有 EPUB、阅读器、语言、词典、翻译引擎、批注格式或未来版本背书。本文是验证方法,并非声称 Cove 产品已有 EPUB 阅读功能。
读者想保存一段翻译后的批注
一位读者在 Android 手机上打开了自己选择的 EPUB,计划在飞行途中阅读。阅读时,他想查一个有词形变化的单词,也想翻译完整句子,然后希望调整字体大小后仍能从批注回到原段落。书籍可能由文档提供方托管,而阅读器和语言资源是否可离线尚未验证。
决策
针对这本 EPUB 和实际阅读器测试一个小而可撤销的流程。把词典查询、上下文翻译、锚点恢复和批注留存作为独立检查;只准备该阅读器明确提供的资源。
预期结果
读者可以知道哪些阶段在这本书和设备上可用、哪些仍未验证,以及批注能否按预期定位和保存。结果不代表其他 EPUB 或应用也有同样行为。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- ARCH-01:端侧 AI 指推理在用户设备执行;文件读取、翻译资源和导出仍需分别核实。
- PRIVACY-01:本地推理不证明应用没有其他网络请求,也不能替代对文件提供方、同步和备份的检查。
任务质量需要有版本记录的语料和验收规则;流畅的单条样例不等于准确度结果。
实施流程
- 确认出版物身份与访问路径. 记录 EPUB 文件身份、阅读器版本、Android 版本,以及打开文件时使用的 Storage Access Framework 提供方或应用自有副本。重新启动并断网后确认完整文件可用;书名、封面或之前渲染的章节都不能证明所需资源已本地化。
- 准备安全且已知的选区样例. 使用公有领域或合成章节,放入一个有词形变化的单词、邻近上下文、标点、专名和含否定的句子。测试前写下预期选区边界和含义。不要先用私人书籍、账户专属文件或不应进入日志的受版权文本。
- 独立检查单词词典查询. 只选目标词,记录阅读器传递的是原始词形、规范化词形,还是还包含周边文本。结合原句核对返回词义;词条缺失或词形含混时,标记为未解决。显示出一个词典词条不能证明阅读器会翻译完整句子。
- 单独测试上下文句子翻译. 把完整句子作为独立任务选中,按固定规则保留标点和邻近上下文并记录输入。准备资源、断网并重开阅读器后,分别记录缓存命中,再用新的未缓存选区验证本地翻译。对照审核参考检查专名、否定、时态和遗漏;单次缓存命中本身不能证明新输入可本地处理。
- 在版式变化后验证定位锚点. 为选区创建批注,关闭并重开出版物,再更改字号或另一项支持的重排版设置,然后从批注返回。记录阅读器使用 CFI、文字引用、偏移、页码或其他定位方式。针对准确的 EPUB 版本核对高亮位置;位置过时或近似时应如实说明,不要声称 CFI 可普遍跨版本稳定。
- 盘点留存、导出与删除. 确认应用是否保留选中文本、词典结果、翻译、批注或完整导入副本,并查清各自存储位置。用可丢弃样例检查可用的导出和删除控制。必要时撤销或移除原始 URI,观察哪些功能随之停止、哪些派生批注仍存在;不能从推理路径推断存储或备份行为。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 明确记录 EPUB 和提供方路径;断网后分别记录缓存命中,并用新的未缓存句子选区验证本地翻译。已有本地词典条目仍可作为有效查询结果。
- 单词查询和句子翻译分别记录选区及验收条件,按适用情况覆盖词形、标点、专名和否定。
- 版式变化后重新打开批注,并针对相同 EPUB 身份检查定位;记录锚点类型、失败或近似位置。
- 分别说明原书、选区、生成结果、批注、导出和删除行为;不声称未经验证的阅读器能力或全应用隐私保证。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 词典查询 | 选中一个词,并提供足够的局部上下文以辨别词义 | 核对词条和词形覆盖;它不是句子翻译,也不证明上下文表达自然。 |
| 句子翻译 | 选中有审核参考的一段完整句子 | 核对上下文含义;不能由此推断孤立词条的覆盖情况。 |
| 段落定位 | 记录阅读器实际使用的 CFI、文字引用、偏移或页码 | 只支持在已测出版物中的返回检查;重排版或内容变化后必须再次核验。 |
| 离线可用性 | 重新打开源文件,分别记录缓存命中和未缓存翻译选区 | 检验指定文件与资源路径;缓存内容可以是有效功能,但单靠缓存不能证明新输入会本地翻译。 |
需要避免的失败模式
- 仅凭 .epub 文件扩展名或已打开章节,就宣称全书和资源都能离线使用。
- 把单词词典查询与完整句子的上下文翻译当成相同任务。
- 假定 CFI 或页码锚点能在任意重排版、改版和阅读器之间保持不变。
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
- 端侧 AI 架构概览
- W3C EPUB 3.3 Recommendation:出版物容器、资源与远程资源规则
- EPUB Canonical Fragment Identifiers 1.1:EPUB 出版物内的位置标识
- Android Developers:文档访问与 URI 持久授权
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
EPUB 文件打开后就一定能离线阅读吗?
不一定。EPUB 3.3 允许出版物引用容器之外的资源。断网后重新启动阅读器,测试这本书及其所需资源。已有翻译缓存可以是有效功能,但应单独记录缓存命中,并用新的未缓存选区验证是否能本地翻译新内容。
查一个单词和翻译整句是同一种能力吗?
不是。词典查询查找选中词的词条或词义;句子翻译要结合上下文转换一段文字。应把它们作为不同任务记录,并分别准备预期结果。
CFI 是否能让批注在书籍被任意修改后仍留在原处?
不能这样假设。CFI 描述 EPUB 出版物中的位置,但能否保存和恢复取决于阅读器,内容变化也可能改变位置。应在重排版后以及准确出版物版本上重新打开批注检查。
本地推理是否证明整个阅读流程没有网络活动?
不能。ARCH-01 描述推理执行位置,PRIVACY-01 提醒应用仍可能发出其他请求。文件提供方、阅读器、语言资源、账户或同步功能、导出及实际网络行为都要单独检查。