PDF图书馆索引器和阅读器Inkheart

简介

什么是 Inkheart ?

Inkheart 是一个为你所有 PDF 文件打造的自托管书库。它会扫描指定目录中的文件,提取第一页作为封面,并以美观的书架形式呈现在网页上,让你能轻松浏览和阅读你的数字藏书。

主要特点

  • 自动索引:自动扫描指定目录中的 PDF 文件并建立索引。
  • 封面提取:自动提取每个 PDF 文件的第一页作为书库中的封面图片。
  • 优雅界面:提供一个美观、现代化的书架网页界面,用于浏览你的所有 PDF 收藏。
  • 文档管理:提供文档的分类和管理功能,用户可以轻松组织和查阅文档。
  • 链接预览:为分享的页面链接生成缩略图,在社交媒体上提供更好的预览效果。
  • 轻松部署:基于 Docker,部署过程简单快捷,无需依赖外部服务,保护隐私和数据安全。

应用场景

  • 个人电子书管理:为你的电子书收藏创建一个漂亮的在线书架。
  • 文档资料库:整理和展示技术手册、研究报告、产品说明等 PDF 文档。
  • 家庭共享:在家庭内部共享和展示食谱、漫画、学习资料等。
  • 个人数字图书馆:打造一个完全由你掌控的、可随时访问的个人在线图书馆。

比较

以下是 InkheartPaperless-ngxKavitaKomga 的比较:

项目 Inkheart Paperless-ngx Kavita Komga
类型 自托管 PDF 库 自托管文档管理系统 自托管电子书和漫画阅读器 自托管漫画和电子书管理器
开发语言 Rust(后端),Svelte(前端) Django(Python) .NET Java
主要功能 PDF 索引与阅读,文档管理 文档存储和管理,OCR 处理 电子书和漫画上传、管理和阅读 漫画和电子书上传、管理和阅读
用户界面 现代化的单页应用,流畅的用户体验 提供简单的用户界面 现代化用户界面,支持自定义主题 现代化设计,功能齐全的用户界面
连接方式 自托管 自托管 自托管 自托管
数据存储 本地文件系统 数据库(支持各种数据库) 本地文件系统(包括电子书和漫画文件) 本地文件系统
社区与支持 开源项目,较小的社区 活跃的开源社区,定期更新 开源并有活跃的支持社区 开源项目,活跃开发
文档管理 通过索引和分类组织 PDF 文档 OCR 文本识别,支持各种文档格式 支持封面、内容组织,分类功能 支持分类和标签管理
许可证 Apache License 2.0 GPL v3 MIT License GPL v3

这些工具各有侧重,选择合适的工具取决于用户的需求。例如,Inkheart 适合希望专注于 PDF 管理的用户,而 Paperless-ngx 更适合需要文档 OCR 功能的用户。KavitaKomga 则更专注于电子书和漫画的管理与阅读。

Inkheart 提供了一种高效、安全的方式来管理和阅读 PDF 文档。其自托管的特性和现代化的技术栈使其成为个人和机构在数字内容管理方面的理想选择。

安装

在群晖等支持 Docker 的设备上以 Docker 方式安装。

在注册表中搜索 inkheart ,选择第一个 nobbe/inkheart,版本选择 latest

本文写作时, latest 版本对应为 1.1.0

涉及的参数比较多,建议用命令行方式安装比较简单和快捷

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 新建项目文件夹和所有子目录
mkdir -p /volume1/docker/inkheart/{media,covers,config,thumbnails}

# 进入 inkheart 目录
cd /volume1/docker/inkheart

# 修改目录权限
chmod a+rw {config,covers,media,thumbnails}

# 运行容器
docker run -d \
--restart unless-stopped \
--name inkheart \
-p 8754:8080 \
-v $(pwd)/media:/media \
-v $(pwd)/covers:/covers \
-v $(pwd)/config:/config \
-v $(pwd)/thumbnails:/thumbnails \
-e MEDIA_DIR=/media \
-e IMAGE_DIR=/covers \
-e THUMBNAIL_DIR=/thumbnails \
-e TELEMETRY_ENABLED=false \
-e CONFIG_PATH=/config/inkheart.toml \
-e BIND_ADDR=0.0.0.0 \
nobbe/inkheart:latest

文件夹 装载路径 说明
docker/inkheart/media /media 必须!存放你的 PDF 文件
docker/inkheart/covers /covers 必须!存放自动提取的封面
docker/inkheart/config /config 可选。存放 inkheart.toml 等配置文件
docker/inkheart/thumbnails /thumbnails 必须!存放分享链接的缩略图

环境变量

变量 说明
MEDIA_DIR /media PDF 文件输入目录
COVER_DIR /covers 封面图片输出目录
THUMBNAIL_DIR /thumbnails 缩略图输出目录
CONFIG_PATH /config/inkheart.toml 配置文件路径
BIND_ADDR 0.0.0.0 监听地址

更多的环境变量可以参考官方的说明文档,地址在:https://gitlab.com/Nystik/inkheart#variables

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
services:
inkheart:
image: nobbe/inkheart:latest
container_name: inkheart
restart: always
ports:
- 8754:8080
volumes:
- ./media:/media # The path where you're storing your PDF files
- ./covers:/covers # This is where the first page of each file will be extracted to to serve as a library cover
- ./config:/config # Config folder, e.g for whitelist file
- ./thumbnails:/thumbnails # This folder will contain thumbnails generated for OpenGraph preview of pages when linking.
environment:
- MEDIA_DIR=/media
- IMAGE_DIR=/covers
- THUMBNAIL_DIR=/thumbnails
- TELEMETRY_ENABLED=false
- CONFIG_PATH=/config/inkheart.toml # path to a config file
- BIND_ADDR=0.0.0.0 # Only needed if you want to change from default

然后执行下面的命令来启动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新建项目文件夹和所有子目录
mkdir -p /volume1/docker/inkheart/{media,covers,config,thumbnails}

# 进入 inkheart 目录
cd /volume1/docker/inkheart

# 修改目录权限
chmod a+rw {config,covers,media,thumbnails}

# 将 docker-compose.yml 放入当前目录

# 将你的PDF文件放入 media 文件夹

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8754 就能看到主界面

pdf 文件放入 media 目录

索引时间取决于你放入 media 文件夹中 pdf 文件的数量和大小

通过左侧菜单的 + 号创建合集

然后可以将书加入到合集中

直接点击进行阅读

参考文档

Nystik / Inkheart - Self-hosted PDF library · GitLab
地址:https://gitlab.com/Nystik/inkheart