

OpenReader WebUI:让你的文档或电子书能听又能看
-
OpenReader WebUI:让你的文档或电子书能听又能看
你是不是经常需要在电脑或手机上看各种文档?比如 PDF 报告、EPUB 电子书或者 Word 文档(DOCX)?有时眼睛累了,或者想边做别的事边“听”内容?那么,这款名叫 OpenReader WebUI 的工具可能正是你一直在找的!
它是一个开源(意味着代码是公开的,你可以免费使用甚至修改)的网页工具,专门用来在浏览器里阅读 PDF、EPUB 和 DOCX 文件。它的核心目标,就是给你一个反应快、用着舒服的高质量阅读体验。
一、OpenReader有哪些功能
- 解放双眼,听文档 (文本转语音 - TTS):这绝对是它的核心亮点!它可以连接好几种流行的语音合成服务 (比如 OpenAI 的,或者可以自己搭建的 Kokoro-FastAPI、Orpheus-FastAPI 等),然后把文字清晰、流畅地读给你听。无论你是视力有些不方便,还是想在做饭、开车、运动时“听”文档,这个功能都超级实用。你可以选择不同的声音和语速,找到最适合你的听书感觉。
- 通吃主流格式:不用担心格式不兼容。你常用的 PDF 文件、标准的 EPUB 电子书格式它都能顺利打开阅读,省去了你转换格式的麻烦。
- 朗读到哪,高亮到哪:在听语音朗读的时候,屏幕上对应的文字会实时高亮显示。这样你就很清楚当前读到哪里了,视觉上跟着也舒服,不容易走神,对于学习语言或者需要集中注意力的场景特别有帮助。
- 没网也能看(离线阅读):担心出门没网看不了文档?没关系!它可以把文档安全地存在你自己的浏览器缓存里。这样就算你突然断网,或者在没 Wi-Fi 的地方,之前上传或打开过的文档照样能接着看,非常方便。
- 自制有声书:觉得一篇长文或者一本书听起来不过瘾?你可以直接用它把整个文档(比如一本 EPUB 电子书)转换成一个完整的 .m4b 有声书文件。这种格式特别适合导入到手机的音乐播放器或者专门的有声书 App 里,包含了章节信息,让你随时暂停、继续,管理起来很方便。特别适合通勤路上、长途旅行或者睡前放松时听。
- 手机平板体验棒 (PWA 支持):它用的是很新的网页技术 (SvelteKit),做成了一个渐进式网页应用 (PWA)。你可以在手机或平板的浏览器里,把它像安装普通 App 一样“添加到主屏幕”。这样以后点一下图标就能直接打开,速度快,界面用起来很流畅,感觉就像个原生 App,完美适配你的移动设备。
- 部署方式灵活:技术大佬和普通用户都能找到适合自己的方式。你可以只在自己的电脑上跑起来,完全本地化使用,数据都存在你本地;如果你懂一点技术,也可以把它部署到服务器上(比如自己的 NAS 或者云服务器),这样就能在任何设备上通过网址访问,甚至可以分享给团队成员或者朋友们一起用。官方提供了 Docker Compose 的配置文件,让部署过程变得相对简单不少。
二、想试试?这是部署和使用指南
如果你想在自己的电脑或者服务器上拥有一个 OpenReader WebUI 实例,用 Docker 是最推荐的方式,比较省心。
你需要准备:
- 确保你的电脑或服务器安装了 Docker 和 Docker Compose。(这是两个流行的容器化工具,网上有很多安装教程)
- 你需要一个能用的 TTS API 服务。这可以是:
- 自己部署的:比如按照官方推荐部署 Kokoro-FastAPI 或 Orpheus-FastAPI(需要一些技术操作)。
- 第三方商业服务:比如 OpenAI 的 TTS API(效果好,但可能需要付费,并且要获取 API Key)。
- 其他的兼容 API。
你需要知道这个 TTS 服务的访问地址 (URL)。
Docker Compose 配置 (
docker-compose.yml
) 文件内容:# docker-compose.yml volumes: # 定义一个数据卷,名字叫 docstore # 它会帮你把上传的文档持久化保存,即使容器重启了,文档也不会丢 docstore: services: # 定义一个服务,就叫 openreader-webui openreader-webui: container_name: openreader-webui # 给运行的容器起个名字,方便管理 image: ghcr.io/richardr1126/openreader-webui:latest # 指定使用哪个 Docker 镜像,这里用官方最新的 environment: # 设置环境变量,最关键的是这个 API_BASE # 它告诉 OpenReader WebUI 去哪里找 TTS 服务 # 示例值 http://host.docker.internal:8880/v1 指向的是运行 Docker 的本机(宿主机)的 8880 端口 # !!! 你需要根据你的实际 TTS 服务地址修改这里 !!! # 例如,如果用 OpenAI API,可能是: https://api.openai.com/v1 (并且你可能需要在 WebUI 设置里填入 API Key) - API_BASE=http://host.docker.internal:8880/v1 # - OPENAI_API_KEY=你的OpenAI密钥 # 如果使用OpenAI,可能需要这样或在UI中设置 ports: # 把你电脑的 3003 端口,映射到 Docker 容器内部的 3003 端口 # 这样你就能通过访问你电脑的 3003 端口来使用 WebUI 了 - "3003:3003" volumes: # 把上面定义的 docstore 数据卷,挂载到容器内部的 /app/docstore 目录 # 这样容器里保存的文档,实际上是存在了 Docker 管理的 docstore 卷里 - docstore:/app/docstore restart: unless-stopped # 设置容器总是在退出后自动重启,除非是你手动停止的
运行步骤:
- 保存文件:把上面的代码复制下来,粘贴到一个纯文本文件里,然后把这个文件命名为
docker-compose.yml
,保存在你电脑上一个方便找到的文件夹里(比如~/openreader
)。 - 启动服务:打开你的终端(命令行工具),
cd
到你保存docker-compose.yml
文件的那个文件夹。然后运行命令:docker-compose up -d
。-d
参数表示在后台运行,这样你关掉终端窗口,服务还能继续跑。- 第一次运行时,Docker 会自动去下载需要的镜像文件,可能会花几分钟时间,取决于你的网速。
- 访问应用:等命令执行完毕,没有报错信息后,打开你的网页浏览器(推荐 Chrome、Edge、Firefox 等现代浏览器),在地址栏输入
http://localhost:3003
,然后回车。如果一切顺利,你应该就能看到 OpenReader WebUI 的界面了!
三、使用时的注意事项
- “朗读”按钮点了没反应或报错
- 检查
API_BASE
:再三确认docker-compose.yml
里或者 WebUI 设置里的 TTS API 地址是不是完全正确。 - 检查 TTS 服务状态:你配置的那个 TTS 服务(不管是自己搭的还是第三方的)是不是真的在运行,并且网络能访问到?
- 检查网络/防火墙:有时网络问题或防火墙设置会阻止 WebUI 连接到 TTS 服务,特别是 WebSocket 连接,需要检查一下。
- 检查
- 启动时提示端口 3003 被占用
说明你电脑上已经有其他程序在用 3003 这个端口了。编辑docker-compose.yml
文件,找到ports:
下面的- "3003:3003"
,把冒号前面的3003
改成一个别的没被占用的端口号,比如3004
,变成- "3004:3003"
。保存后重新运行docker-compose up -d
,然后通过http://localhost:3004
访问。 - 处理很大的文档感觉有点卡顿或慢
- 检查服务器/电脑性能:确保运行 Docker 的机器有足够的内存 (RAM) 和 CPU 资源。可以看看 Docker 的资源限制设置。
- TTS API 性能:不同的 TTS 服务处理速度也不同。免费或自建的轻量级服务可能对大文件处理较慢,商业级 API (如 OpenAI) 通常更快。
- 网络速度:如果 TTS 服务在远程,网络延迟和带宽也会影响生成语音的速度。
四、想了解更多?看看这些资源
- 在线体验 Demo:OpenReader WebUI 演示 (注意:官方演示可能功能受限或有使用量限制)
- 项目源码和详细说明 (GitHub):OpenReader WebUI GitHub 仓库 (这里有最全的官方文档、更新日志和问题反馈区)
- 如何部署 TTS 服务?(以 Kokoro 为例):可以参考这个项目的指南 Kokoro FastAPI 指南
五、小结
总的来说,OpenReader WebUI 是一个有潜力、功能实用的开源网页阅读器。它最大的魅力在于强大的文本转语音能力和跨平台适应性。通过 Docker,即使你不是顶尖的技术高手,也能相对轻松地把它部署起来供自己使用。
歡迎留言回复交流。
Log in to reply.