scan-to-ebook 是一个把纸质书扫描件、照片和 PDF 转成 EPUB 的开源工具;它负责 OCR、清洗文本、处理封面和目录,最后生成可阅读的电子书。
它有两条路。
如果是文字书,它会把每一页变成图片,交给视觉模型做 OCR,再清洗文本,最后用 pandoc 生成 EPUB。
如果是漫画,它不走 OCR,直接把图片打包成固定版式 EPUB3,适合右翻阅读。
这个项目最有意思的地方,是它不会一上来就逐页硬识别。
它会先抽几页做预检,看看书名、专有名词、旧拼写、双页排版、彩色封面这些信息。然后把这些上下文带回每一页 OCR 里,尽量让整本书的识别风格保持一致。
这对老书尤其重要。
很多旧书不是标准现代排版,里面可能有旧拼写、生僻词、脚注、页眉页脚。普通 OCR 容易每页各识别各的,最后合成出来像一堆碎片。这个项目的思路是先理解“这是一本什么书”,再逐页处理。
它也考虑了成本。
文字书 OCR 通过 OpenRouter 调视觉模型,默认模型是 qwen/qwen3.7-plus。README 里给的成本是约 $0.003/page,100 页大约 $0.30–0.40。
正式跑全书前,可以先跑 10 页 smoke run,估一下全书费用。重复运行时,已经识别过的页面会跳过,不会每次都重新烧钱。
漫画模式更省事。
如果你只是想把一堆图片、.cbz、.cbr 或 .mobi 做成 EPUB3,它不需要 OCR,也不需要 pandoc。只有开启自动封面检测时,才会调用视觉模型,README 里标的是约 $0.01/book。
门槛也跟大家说清楚。
它不是给完全不碰命令行的人用的桌面软件。你需要 Python 3.10+、pandoc,以及 OPENROUTER_API_KEY。如果要处理 Google Drive 链接,rclone 是可选依赖。
另外,项目也明确提醒:它面向个人合法使用,适合处理自己拥有的实体书,不适合拿来分发生成的 EPUB。
所以它适合的人有:有纸质藏书、愿意自己扫描、想把书长期整理进 Kindle / Books.app 的读书用户,或者想把扫描书处理流程自动化的开发者。
如果你想把一本书从扫描件整理成可阅读、可归档的 EPUB,这个项目值得折腾一下。
项目由 phuc-nt 开发,MIT 协议,72 个 Star。
项目地址:https://github.com/phuc-nt/scan-to-ebook
夜雨聆风