耗时30天,DocPilot Qwen正式开源:一个免费无广的开源文档 AI 助手

183 阅读8分钟

我是热爱探索AI前沿技术的LucianaiB。

今天,DocPilot Qwen 正式开源。

这是一个面向 Android 手机的开源文档 AI 助手,目标是把文档导入、文档解析、AI 问答、摘要生成、模板抽取、本地记录管理等能力整合到一个原生 App 中,让手机也能完成学习资料整理、论文阅读、报告分析、办公文档处理等任务。

请在此添加图片描述

为什么做 DocPilot Qwen?

移动端已经有足够强的算力,但很多文档 AI 工具仍然依赖云端、桌面端或封闭产品。DocPilot Qwen 想做的是一个更适合学生和个人使用者拆解、学习、复用的 Android应用。

项目选用 Qwen 系列模型作为核心推理能力,支持云端 API 协同;同时接入 MNN 框架,并预留针对 Arm SME2 指令集进行端侧推理加速与性能调优的路径,让手机算力真正释放。

文档解析侧加入 TextIn Skill 能力,适合处理 PDF、Office、图片等复杂文档;TextIn 当前开发者额度较友好,最高可覆盖每天约 4000 页解析需求,具体以官方政策为准。

本项目使用 KAT-Coder-Pro V2 搭建

请在此添加图片描述

本项目完全开源,代码结构尽量保持清晰。它既可以作为个人文档助手继续打磨,也很适合在校大学生拿来做 Android 课程作业、毕业设计原型、AI 应用实践项目,或者作为 Kotlin + Compose + Room + Retrofit 的综合练手项目。

项目地址:github.com/LucianaiB20… 欢迎大家体验、提 issue,也欢迎提交 PR。

使用方法

下载 APK

在 GitHub 中获取 APK 包,然后在手机上直接进行安装应用。

由于本软件完全开源,所以使用自己的 API,以及本地模型。

获取 API Key

效果演示

请在此添加图片描述

第一个功能肯定就是把文件导入,对文件进行预览。

请在此添加图片描述

在首页中可以快速进行文件的导入,支持 PPT、Word、Excel、图片等多种格式。

在导入进来以后,点击“分析”,系统就会通过 TextIn 进行文件的抽取,然后再调用对应的模型进行相应的分析。

请在此添加图片描述

在 AI 助手中,我们可以根据这个文档,采用本地模型或者是云端模型对其进行分析。例如在下方,我询问他这个图片里面的内容主要是关于什么呢?它成功地进行了回答。由于采用的是本地模型和 MNN 的搭配,我们也不需要担心数据会泄露。

请在此添加图片描述

在 TextIn 中,我们也可以根据自定义的要求对文件进行提取。例如发票,我们在进行发票提取的时候,有时会对它进行批量提取的操作。

使用 TextIn,我们可以进行快速的自定义提取。每天最高可以薅到 4000 页的额度。

请在此添加图片描述

在设置中,我们可以进行 API 的切换,以及本地模型和云端模型的切换。

此外,还支持本地模型的下载以及管理。

请在此添加图片描述

技术架构

DocPilot Qwen 的核心技术架构由四部分组成:MNN 端侧推理引擎、TextIn Skill 文档解析、Qwen 本地模型/云端模型,以及 KwaiKAT 开发协作体系

  1. MNN 端侧推理引擎

DocPilot Qwen 接入了 MNN 端侧推理引擎,用于在 Android 手机上运行本地模型。

项目中已经集成 MNN 相关 native library,并通过 MnnQwenEngine 封装本地推理能力。运行时会加载 MNNdocpilot_mnn_llmmnnllmapp 等动态库,并通过 LlmSession 完成本地模型初始化、Prompt 提交、流式输出和资源释放。项目 README 也将 MNN、arm64-v8a native libraries 作为端侧推理部分列入技术栈。

核心调用逻辑可以概括为:

val session = LlmSession(configPath)

if (!session.init(runtimeConfig)) return null

val finalText = session.submit(
    prompt,
    imagePaths,
    object : GenerateProgressListener {
        override fun onProgress(progress: String?): Boolean {
            // 接收模型生成过程中的增量内容
            return false
        }
    }
)

session.release()

这一层让 DocPilot Qwen 具备了端侧 AI 能力,不再只是一个依赖云端 API 的文档助手。

  1. TextIn Skill 文档解析

文档解析部分使用 TextIn Skill / xParse API

它负责把 PDF、Word、PPT、Excel、图片等复杂文件解析成 Markdown、结构化 JSON 和页级内容信息。这样后续无论是 Qwen 云端模型,还是本地模型,都可以直接处理结构化后的文档内容,而不是面对原始文件。README 中也明确将 TextIn xParse API 作为文档解析模块。

项目中的 TextIn 接口封装如下:

interface TextInApi {
    @Multipart
    @POST("api/v1/xparse/parse/sync")
    suspend fun parseSync(
        @Header("x-ti-app-id") appId: String,
        @Header("x-ti-secret-code") secretCode: String,
        @Part file: MultipartBody.Part
    ): TextInParseResponse
}

使用 TextIn Skill 后,DocPilot Qwen 可以处理更多真实文档场景,例如:

  • PDF 论文解析
  • PPT 内容提取
  • Excel 表格识别
  • Word 文档整理
  • 图片 / 扫描件内容提取
  • 发票、合同、会议纪要等结构化抽取
  • Qwen 本地模型 / 云端模型

模型层使用 Qwen 本地模型 + Qwen 云端模型 两种方式。

云端模型通过 Qwen / 阿里云百炼 API 接入,兼容 OpenAI Chat Completions 格式;本地模型则结合 MNN 在端侧运行。README 中也说明,项目使用 Qwen 系列云端 API,并兼容 OpenAI Chat Completions 格式。

云端模型调用接口如下:

interface QwenApi {
    @POST("chat/completions")
    suspend fun chat(
        @Header("Authorization") authorization: String,
        @Body request: QwenChatRequest
    ): QwenChatResponse
}

请求体采用标准的 model + messages + temperature 结构:

data class QwenChatRequest(
    val model: String,
    val messages: List<QwenMessage>,
    val temperature: Double = 0.2
)

这种设计让项目可以同时支持两类使用方式:

  • 本地模型:适合隐私敏感、离线处理、端侧推理体验。
  • 云端模型:适合复杂推理、长文档总结、多轮问答和高质量内容生成。

在实际使用中,用户可以在设置中切换本地模型和云端模型,根据文档类型、隐私要求和推理质量需求选择不同模式。

  1. KwaiKAT

项目使用 KwaiKAT 辅助完成开发和工程搭建。

在 DocPilot Qwen 中,KwaiKAT 主要参与了 Android 工程结构整理、功能模块实现、代码生成和调试优化。它帮助项目快速完成从想法到可运行 App 的落地,包括文档导入、解析流程、AI 助手、模板抽取、设置页面、本地模型管理等模块。

在这套架构中,KwaiKAT 更像是一个 AI 编程协作层:

MNN 负责端侧推理,TextIn Skill 负责文档解析,Qwen 负责模型理解与生成,KwaiKAT 负责帮助项目快速完成工程化实现。

总结

整体来说,DocPilot Qwen 是我对移动端 AI 文档助手的一次完整探索。

它不是简单地把大模型 API 套进一个 App 里,而是尝试把 MNN 端侧推理引擎、TextIn Skill 文档解析、Qwen 本地模型/云端模型、KwaiKAT 开发协作体系 这几项能力真正组合起来,形成一个可以在 Android 手机上运行、可以学习、可以修改、也可以继续扩展的开源项目。

其中,MNN 让项目具备了端侧推理能力,让手机不只是一个“请求云端接口的终端”,而是可以真正参与 AI 推理过程;TextIn Skill 解决了文档 AI 中非常关键的解析问题,让 PDF、Office、图片、发票、合同、会议纪要等复杂文件可以被转化成模型更容易理解的结构化内容;Qwen 则提供了强大的模型理解与生成能力,本地模型适合隐私敏感和端侧体验,云端模型适合长文档分析、复杂问答和高质量总结;而 KwaiKAT / KAT-Coder-Pro V2 则在整个开发过程中提升了工程落地效率,让一个完整的 Android AI 应用可以更快从想法变成可运行的项目。

当然,当前版本也还有一些可以继续打磨的地方。比如本地模型对手机性能和存储空间有一定要求;复杂文档的解析效果仍然依赖 TextIn 的服务能力;如果使用云端 Qwen API,也需要用户自己配置 API Key,并根据隐私需求判断是否适合上传文档内容;另外,UI 交互、批量处理、文档管理和更多模型适配也还有继续优化的空间。

但我认为,这正是开源项目最有价值的地方。

它不是一个封闭的成品,而是一个可以被拆开学习、可以继续改造、可以用于课程作业、毕业设计、AI 应用实践和端侧模型探索的真实项目。对于想学习 Kotlin**、Jetpack Compose、Room、Retrofit、MNN、Qwen、TextIn Skill**,或者想了解移动端 AI 应用如何落地的同学来说,DocPilot Qwen 都可以作为一个比较完整的参考案例。

如果你也对 Android AI、文档智能、端侧模型或者 Qwen 生态感兴趣,欢迎来体验这个项目。

项目地址: github.com/LucianaiB20…

欢迎 Star,欢迎 issue,也欢迎提交 PR。