分析模式与适用场景
OneDocs 将同一份 PDF 文档交给不同的分析模式处理,以便针对新闻要点、数据内容、理工课件或文科课件采用不同的整理目标。该页面说明模式的产品语义、入口、适用场景以及它们在文档分析流程中的边界。
Purpose and Scope
本文覆盖 OneDocs 当前公开描述的四种分析模式:要闻概览、罗森析数、理工速知和文采丰呈;同时说明它们如何由分析页面承载,并与 PDF 解析、模型调用和 Markdown 结果输出衔接。
本文不展开模型供应商的具体 API 配置、PDF 底层解析算法、归档/发现/设置页面或桌面与 Android 打包流程。相关实现属于独立的配置、文档处理或平台页面主题;本文只在必要处说明分析模式与这些边界的连接。
Overview
OneDocs 的核心定位是 AI 文档分析工具:输入是用户选择的 PDF,系统先进行文件解析,再结合大模型完成内容解构,最后按规范化格式组织为知识手册。模式不是不同的文件格式,而是同一分析能力面向不同内容意图的四种入口。
| 分析模式 | 适用内容 | 主要目标 |
|---|---|---|
| 要闻概览 | 新闻、资讯、事件材料 | 梳理新闻要点,快速建立事实与重点的概览 |
| 罗森析数 | 含有表格、指标或统计信息的材料 | 分析数据内容,帮助读者理解数字及其表达的内容 |
| 理工速知 | 理工科课程、技术课件 | 整理理工课件,突出概念、公式和知识结构 |
| 文采丰呈 | 文科课程、阅读或人文学科材料 | 整理文科课件,保留论述脉络与人文内容表达 |
README 将四个名称直接列为产品功能,并说明分析结果支持预览、复制 Markdown 源码、导出下载以及多文件合并分析。因此,选择模式的关键不是改变输入协议,而是决定输出知识手册时应采用的阅读视角。
Architecture
图中的 App 将 analysis 页面映射到 Analysis 组件;documentProcessor.ts 暴露 extractAnalysisBundle,用于从 PDF 文件提取完整分析包。README 则明确了文件解析、大模型应用和输出格式规范化组成端到端能力。由于当前可见源码材料没有展示四个模式各自的提示词或模型请求体,不能把某个模式的内部 prompt、温度参数或响应 schema 推断为公开契约。
模式选择原则
要闻概览
选择“要闻概览”适合需要先回答“发生了什么、最重要的信息是什么”的材料。README 对该模式的产品说明是“新闻要点梳理”,因此它的边界是快速提炼新闻重点,而不是把文档改造成数据报告或课程讲义。
罗森析数
选择“罗森析数”适合数字、指标、统计结果或表格信息占主要部分的文档。其公开定位是“数据内容分析”。源码材料没有提供具体的统计方法、图表识别规则或数值校验保证,因此使用者不应把模式名称理解为某种已验证的统计推断算法。
理工速知
选择“理工速知”适合理工科课件或技术学习材料。README 将它描述为“理工课件整理”,这表明其主要价值是把课件组织成更易复习的知识手册。具体公式识别、代码块处理和学科模板未在本页可见源码中公开,实施细节应以实际处理器和提示词代码为准。
文采丰呈
选择“文采丰呈”适合文科课件、阅读材料或论述性内容。README 的产品定位是“文科课件整理”,因此其重点是保留论述与知识组织,而不是优先执行数值分析。关于引用格式、人物关系或文学术语抽取,当前源材料没有足够证据,不能作出更细的行为承诺。
Core Flow
该流程中,模式选择发生在用户意图层;PDF 解析属于处理层;结果展示和导出属于输出层。这样分层的好处是:同一个 PDF 输入与通用解析过程可以被多个模式复用,而模式差异集中在内容组织目标上。当前可见材料只确认了 Analysis 页面入口和 DocumentProcessor.extractAnalysisBundle 的签名,未显示 Analysis 到模型调用之间的完整实现,因此图中“以选定模式组织分析请求”是已知产品流程的边界表达,不代表未读取文件中的具体函数名。
与应用入口的关系
App 使用 Page 联合类型表达页面状态,其中包含 analysis,并将初始页面设为 analysis。切换到分析页时,应用渲染 <Analysis isMobile={isMobile} />。这说明分析模式属于主应用的分析页面能力,而不是独立路由或独立后端服务。
Analysis 接收 isMobile 参数,说明同一分析页面需要兼容移动布局;这与 README 所述的 768px 以下自动切换移动端布局一致。模式语义本身不因桌面或移动端改变,变化的是承载它的界面布局。
适用场景与边界决策
| 文档特征 | 首选模式 | 原因 | 不应做的假设 |
|---|---|---|---|
| 事件报道、新闻简报、资讯汇编 | 要闻概览 | 产品定义直接指向新闻要点 | 不应假设会自动完成事实核验 |
| 指标、表格、统计材料 | 罗森析数 | 产品定义直接指向数据内容 | 不应假设提供统计显著性检验 |
| 工程课程、理工课件、技术说明 | 理工速知 | 产品定义指向理工课件整理 | 不应假设所有公式或实验结论都被验证 |
| 历史、文学、社会科学或文科课件 | 文采丰呈 | 产品定义指向文科课件整理 | 不应假设自动替代领域专家解读 |
如果文档同时包含多种内容,可以根据主要阅读目标选择模式;README 还确认支持多文件合并分析,因此多个文件可以作为同一分析任务的输入。但公开源码没有说明混合模式、每文件独立模式或模式冲突时的优先级,实际行为需要结合分析页面实现进一步确认。
Usage Examples
从应用状态进入分析页面
应用使用 Page 类型区分页面,并把 analysis 作为分析页标识;App 在当前页面为 analysis 时渲染 Analysis 组件:
type Page = "analysis" | "archive" | "about" | "discover" | "settings";
const [currentPage, setCurrentPage] = useState<Page>("analysis");
{currentPage === "analysis" && <Analysis isMobile={isMobile} />}这个入口表明“分析模式与适用场景”属于 Analysis 页面内部的业务选择,而不是一个新的顶层页面类型。
使用项目提供的开发命令验证分析页面
仓库脚本提供 Web 开发与 Tauri 桌面开发命令。进行模式相关 UI 验证时,可先启动 Web 开发环境;需要验证桌面容器行为时再使用 Tauri 命令:
npm install
npm run dev
npm run tauri:devSource: README.md
Android 场景则使用仓库提供的初始化、开发和构建脚本:
1npm run android:init
2npm run android:dev
3npm run android:build
4npm run android:build:splitSource: README.md
这些命令验证的是承载分析模式的运行环境,并不改变四种模式的语义。
处理 API 参考
DocumentProcessor.extractAnalysisBundle(file: File, outputRoot?: string): Promise<DocumentAnalysisBundle>
documentProcessor.ts 的注释将该方法定义为“从 PDF 文件提取完整的分析包”。从已读取的声明可以确认:
file:待处理的文件对象。outputRoot:可选的输出根路径。- 返回值:
Promise<DocumentAnalysisBundle>,即异步返回完整分析包。
当前源材料没有展示该方法内部如何选择具体模式、如何调用模型、如何处理解析失败或如何合并多个文件。因此,模式选择不能被错误地记录为该方法的额外参数;已确认的签名中没有 mode 参数。
1static async extractAnalysisBundle(
2 file: File,
3 outputRoot?: string,
4): Promise<DocumentAnalysisBundle> {
5 const fileType = file.type as SupportedFileType;Source: documentProcessor.ts
API 使用边界
该 API 是文件分析管线的入口之一,而不是四种模式的完整公共 API。若要记录某个模式的请求参数、返回字段或异常类型,需要读取 Analysis 页面、类型定义及模型调用实现;这些具体实现细节在本页的受限源材料中未完整展示,因此不作推断。
Configuration Options
当前读取的 package.json 与 README 没有给出“要闻概览”“罗森析数”“理工速知”“文采丰呈”的独立配置键、默认模式、环境变量或可调参数。能够确认的配置事实如下:
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 分析模式 | 产品选择项 | 源码材料未说明 | 用户从四种公开模式中选择;默认选项未在已读取文件中确认 |
outputRoot | string | undefined | 未说明 | extractAnalysisBundle 的可选输出根路径;其默认路径策略未公开 |
| 模型 | 外部模型选择 | 未说明 | README 确认支持 40+ 模型,但没有为某个分析模式声明固定模型 |
README 确认支持 OpenAI、Anthropic、Gemini、智谱、DeepSeek、Ollama 等模型类别,但模型配置页面和实际请求实现不属于本页已验证的范围。不要把模型供应商列表理解为某个模式的固定依赖。
Failure Modes、边界条件与并发性
已确认的边界
- 输入格式:README 明确支持 PDF,单文件最大 30 MB;因此超出该限制的文件不应被当作正常模式输入。
- 多文件:README 明确支持多文件合并分析;但当前源材料未说明合并顺序、重复内容处理或不同文件是否可以选择不同模式。
- 平台:README 明确覆盖 Windows、macOS、Linux 和 Android;模式应由共享的分析页面承载,而不是依赖某一桌面平台。
- 结果:分析结果可预览、复制 Markdown 源码和导出下载;这些是结果消费方式,不是额外的分析模式。
未在源代码中确认的失败行为
当前已读取文件没有显示解析失败、模型超时、限流、空文档、损坏 PDF 或部分结果失败时的异常类型和用户提示。因此不能指定 HTTP 状态码、重试次数、回退模式或事务语义。实现这些行为时,应以 DocumentProcessor、分析页面和模型适配层的实际代码为准。
并发与一致性
已读取材料没有出现队列、锁、取消令牌或并发任务管理代码。不能据此承诺多个 PDF 是否并行解析,也不能承诺用户在分析过程中切换模式时旧请求会被取消。对需要扩展这部分行为的开发者,至少应验证:模式切换是否会覆盖旧结果、多个文件合并时输出是否保持稳定顺序,以及组件卸载后异步结果是否仍会写入页面状态。
Performance and Operational Notes
- 文件上限:单个 PDF 的公开上限为 30 MB;这是一项直接影响解析内存、模型输入规模和移动端体验的操作约束。
- 本地运行:README 描述应用为本地运行,文件不上传;这降低了文件传输风险,但不等同于所有模型调用都不产生外部网络请求,模型供应商配置仍应单独核验。
- 移动端布局:README 说明 768px 以下自动切换移动端布局;分析模式的内容目标保持不变,UI 承载发生变化。
- 模型差异:仓库支持多个模型供应商。不同模型的上下文窗口、响应速度和输出稳定性可能不同,但本页没有足够代码证据量化这些差异。
Extension Points
从已确认的结构看,扩展分析模式至少涉及两个边界:
- 页面选择层:
Analysis是模式选择和分析交互的 UI 入口;新增模式需要在该页面及其类型/文案中加入入口。 - 处理层:
DocumentProcessor负责生成DocumentAnalysisBundle;如果新模式需要额外的中间产物,应先确认该 bundle 类型是否能表达它。 - 输出层:结果支持预览、Markdown 复制和下载;新模式应保持这些既有消费路径的兼容性。
但当前材料没有公开模式枚举、提示词注册表或策略接口,因此不能声称新增模式只需添加一个配置项。更安全的扩展顺序是先检查 Analysis 页面、相关类型定义、模型调用和国际化资源,再决定是增加枚举、策略实现还是单纯增加文案。