Joplin 移动端扫描笔记(scan notebook)如何开启手写转录优化让扫描页可搜索?
【免费下载链接】joplinJoplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.项目地址: https://gitcode.com/GitHub_Trending/jo/joplin
在 Joplin 移动应用里用 “scan notebook” 拍照扫描多页文档后,新建的笔记中只有图片,手写内容无法被搜索命中。Joplin >= 3.5 提供手写转录优化:在移动端的 “Note preview” 屏幕上把 “Queue for transcription” 设为 enabled 后,与移动端通过同步连接到同一账号的桌面应用会把图片发送到服务器,做更高品质的手写转录,转录出的文字用于优化对包含这些图片的笔记的搜索。完成本文后,你用搜索框搜手写内容里出现过的词,就能命中对应笔记。
整个链路是:客户端把图片请求发给 Joplin Server(或 Joplin Cloud),Joplin Server 转发给独立的 Transcribe 服务,Transcribe 处理完把提取出的文字经 Joplin Server 返回客户端。手写识别计算开销大,因此 Transcribe 是独立于 Joplin Server 的单独服务,详见 readme/apps/transcribe/system_architecture.md。
核对前置条件
开启该功能需要同时满足以下四点(来源:readme/apps/scan_notebook.md):
- Joplin >= 3.5;
- 一个 Joplin Cloud 账号,或一个已启用转录服务的 Joplin Server;
- 一个通过同步连接到同一账号的桌面应用;
- 桌面端已启用 “Handwriting transcription” 设置。
“Queue for transcription” 选项只在移动端连接 Joplin Cloud/Server 时才会出现在 “Note preview” 屏幕上,如果看不到该选项,先确认移动端已接入同步。
使用 Joplin Server 时:部署 Transcribe 服务
使用 Joplin Cloud 的读者跳过本节,直接进入桌面端设置。自建 Joplin Server 的读者需要先跑起 Transcribe 服务,安装步骤见 packages/transcribe/README.md。
1. 创建数据目录并下载模型
Transcribe 镜像内嵌了 llama.cpp,但 AI 模型需要单独下载并挂载。以下命令会从 Hugging Face 下载两个模型文件到本地./data/models,wget 有网络下载副作用,需要可访问该地址的环境;若无法访问,需自行获取这两个文件并放到相同路径:
mkdir -p ./data/models chmod 755 ./data wget -O ./data/models/Model-7.6B-Q4_K_M.gguf https://huggingface.co/openbmb/MiniCPM-o-2_6-gguf/resolve/main/Model-7.6B-Q4_K_M.gguf wget -O ./data/models/mmproj-model-f16.gguf https://huggingface.co/openbmb/MiniCPM-o-2_6-gguf/resolve/main/mmproj-model-f16.gguf2. 配置环境文件
复制.env-transcribe-sample到你的 Docker 配置目录,重命名为.env-transcribe,并把API_KEY设为一个安全的值。这个密钥即 Joplin Server 与 Transcribe 之间用于认证的 shared secret:Joplin Server 以查询参数(?secret=...)方式把它附在转发请求上,两端必须配置一致,否则请求会被拒绝。
3. 启动服务
直接运行 Docker:
docker run --rm --env-file .env-transcribe -p 4567:4567 \ -v ./data:/data \ joplin/transcribe:amd64-latest容器会在/data下自动创建images/(上传的图片)、models/(你提供的模型)、queue.sqlite3(作业队列数据库)。
或者用 Docker Compose(最小配置在.env-sample和docker-compose.server.yml中):
cp .env-sample .env docker compose -f docker-compose.server.yml --profile full up --detached4. 让 Joplin Server 指向 Transcribe
Joplin Server 的转录路由会读取TRANSCRIBE_BASE_URL配置,把api/transcribe相关请求转发到该地址(见 packages/server/src/routes/api/transcribe.ts),并把 shared secret 传给 Transcribe。完整环境变量列表见 packages/transcribe/README.md 指向的env.ts定义文件。
硬件方面,架构文档建议 Transcribe 部署在与 Joplin Server 不同的机器上,GPU 对基于 LlamaCPP 的转录模型是推荐配置,文档给出的两档参考配置是:经济档为 Intel i7/i9 + 64 GB 内存 + NVIDIA RTX 4070(12 GB 显存);快速档为 16 核处理器 + 128 GB 内存 + NVIDIA RTX 4090 或 L4(24 GB 显存)。
在桌面端启用 Handwriting transcription
该功能默认关闭:桌面端的手写相关操作在被禁用时会直接弹出提示,告知需要手动开启 “Enable handwritten transcription”(见 packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts)。设置未启用时,OCR 服务也会直接跳过手写转录处理(见 packages/lib/services/ocr/OcrService.ts 中对ocr.handwrittenTextDriverEnabled设置的检查)。
在桌面应用的设置中启用 “Handwriting transcription” 选项,并确保桌面端与移动端已连接到同一账号、同步处于正常状态。
移动端:创建扫描笔记并排队转录
按 readme/apps/scan_notebook.md 的操作路径执行:
- 打开新建笔记菜单,点击 “scan notebook”。
- 逐页拍照,拍完要扫描的每一页。
- 点击 “next”,进入 “Note preview” 屏幕;最后拍摄的那张预览图附近会显示照片总数。
- 在该屏幕上把 “Queue for transcription” 设为 enabled。选项说明为:请求对该笔记中的图片使用更高品质的服务端转录,需要与桌面应用保持同步(见 packages/app-mobile/components/screens/DocumentScanner/NotePreview.tsx)。
- 选择目标笔记本。
- 点击 “create note”,步骤 2 拍摄的照片会被加入新建的笔记。
结果验证
转录完成前,图片会经过一次任务流程:Joplin Server 把图片提交到 Transcribe 后拿到 job ID,随后轮询任务状态直到结果就绪。自建 Joplin Server 的读者可以在服务端一侧观察该流程:
POST /transcribe(multipart/form-data 上传图片)创建一个转录作业并返回 job ID;POST /transcribe/:job_id查询作业状态,完成后返回提取出的文字;- 作业状态生命周期为 created、retry、active、completed、cancelled、failed;
- Transcribe 的全部输出写入 stdout/stderr,可以接入任意日志系统。
客户端一侧的最终效果:转录出的手写文字用于优化对包含这些图片的笔记的搜索。用移动端或桌面端的搜索功能搜索手写内容中出现过的词,包含该扫描图片的笔记应能被命中。
已知限制
以下限制直接来自 readme/apps/transcribe/system_architecture.md,开启功能前需要心里有数:
- 转录使用 LLM,可能偶尔产生不符合预期或不准确的结果,模型后续可更换为更新版本;
- 非常潦草、非常规或风格化的手写,识别准确度可能更低;
- 光线差、分辨率低、运动模糊的图片会降低识别准确度,拍照时尽量拍清楚;
- 目前只支持图片上传,PDF 页面、音频、视频不支持;
- 同一时间只处理一个作业,请求量大会排队等待;
- 性能与吞吐量强烈依赖 GPU 的可用性与容量;Transcribe 设计为部署在私有网络内,不要直接暴露到互联网。
【免费下载链接】joplinJoplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.项目地址: https://gitcode.com/GitHub_Trending/jo/joplin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考