# Project Gutenberg – keeps getting better

> 来源：[HackerNews](https://www.gutenberg.org/)

```markdown
# Project Gutenberg —— 数字人文的基石为何历久弥新

## 背景与概述

在信息爆炸的今天，我们习惯了付费订阅、DRM 加密和随时可能失效的云端书架。但有一个项目却逆流而行，坚持了五十余年——它不收一分钱，不设任何访问门槛，只是默默地将人类文明的经典著作转化为纯粹的数字文本。这就是 **Project Gutenberg（古腾堡计划）**，由 Michael Hart 于 1971 年发起，是世界上最早的数字图书馆。

Hart 在伊利诺伊大学的计算机实验室里，用一台大型机的空闲时间，手动输入了《独立宣言》的全文。这个看似微不足道的举动，开启了一场革命：他提出的"Replicator Technology"理念预言，一旦数字内容可以被无限复制而不损耗，知识的传播方式将被彻底改写。五十年后，Project Gutenberg 已经收录超过 **70,000 部免费电子书**，涵盖文学、历史、科学、哲学等诸多领域，全部以纯文本、EPUB、Kindle 等开放格式提供下载。

令人感慨的是，这个"老古董"项目从未被时代抛弃。相反，它持续演进：与 Distributed Proofreaders 社区协作提升数字化质量，推出自托管的镜像方案，甚至成为现代 NLP 训练语料的重要来源。在 HackerNews 上，它常年是被热议的"宝藏资源"——不是因为猎奇，而是因为**简单的东西往往最难做好，也最难被替代**。

## 核心内容

### 一、真正的开放：超越"免费"的哲学

Project Gutenberg 的开放不是营销话术，而是写入基因的承诺。所有书籍均进入**公有领域（Public Domain）**或经明确授权，采用 Plain Vanilla ASCII 作为基础格式——没有排版软件依赖，没有平台锁定，一个 `cat` 命令就能阅读。这种"极简主义"确保了内容的**最大兼容性和最长保质期**。当现代电子书格式层出不穷、阅读器频繁迭代时，纯文本的鲁棒性反而成为最大的优势。

### 二、社区驱动的质量工程

单靠自动化 OCR 无法产出高质量的数字化文本。Project Gutenberg 与 **Distributed Proofreaders（DP）** 形成了独特的协作模式：志愿者通过多轮校对、格式化、最终审核，将扫描图像转化为精确的电子文本。DP 采用" rounds "机制——每本书经过 P1（初校）、P2（二校）、P3（三校）、F1（格式化）、F2（审核）等环节，错误率被压至极低。这种"人肉流水线"的效率惊人：高峰期每天可处理数十本书，而质量远超商业 OCR 的平均水平。

### 三、多格式生态与无障碍访问

尽管以纯文本为根基，Project Gutenberg 并未固步自封。现代用户可获取：
- **Plain Text**：最原始、最可靠
- **EPUB**：主流电子书标准，支持重排
- **Kindle（MOBI/AZW3）**：亚马逊设备原生支持
- **HTML**：浏览器直接阅读，带基础样式
- **Audio Books**：部分作品有人朗读版本

这种"一份源、多输出"的策略，既保留了开放性，又兼顾了用户体验。对于视障用户，纯文本更是屏幕阅读器的最佳拍档——没有复杂的 CSS 干扰，没有图片替代文本的缺失。

### 四、AI 时代的隐形基础设施

一个鲜为人知的事实：Project Gutenberg 是**自然语言处理研究的重要语料库**。从早期的 N-gram 模型到当今的大语言模型，研究者频繁使用其标准化、版权清洁的文本进行训练。2023 年，Project Gutenberg 甚至与 MIT 合作，利用 AI 技术将 5,000 多本有声书与文本精确对齐，生成大规模语音识别训练数据。古老的项目与最前沿的技术在此交汇，印证了开放数据的长远价值。

## 技术分析

### 架构的"反设计"智慧

Project Gutenberg 的技术栈堪称"保守"，但这种保守恰恰是可持续性的核心：

| 层面 | 技术选择 | 设计意图 |
|:---|:---|:---|
| 存储格式 | Plain Text / EPUB 2.0 | 最小依赖，百年可读 |
| 分发协议 | HTTP/FTP，无 CDN 强制 | 全球镜像自托管友好 |
| 元数据 | Dublin Core 标准 | 图书馆互操作性 |
| 站点生成 | 静态页面为主 | 极低运维成本，抗流量峰值 |

其网站源码公开可查，核心逻辑用 **Perl** 维护——这门"过时"的语言拥有无与伦比的文本处理能力和跨平台稳定性。没有 React 前端，没有微服务架构，但**年均服务数亿次请求而极少故障**。

### 自托管镜像的实现

对于开发者而言，搭建本地镜像极具实践价值。官方提供 [RSYNC 同步方式](https://www.gutenberg.org/help/mirroring.html)：

```bash
# 全量同步（约 70GB 文本，含音频则更大）
rsync -av --delete aleph.gutenberg.org::gutenberg gutenberg-local/

# 仅同步纯文本（约 8GB）
rsync -av --delete --include="*/" --include="*.txt" --exclude="*" \
  aleph.gutenberg.org::gutenberg gutenberg-text/
```

更轻量的方案是利用 **PG 的元数据 RDF 目录**（`catalog.rdf.bz2`，约 50MB），构建自己的检索服务：

```python
import rdflib
from rdflib.namespace import DCTERMS

# 加载 PG 的 RDF 元数据
g = rdflib.Graph()
g.parse("catalog.rdf")

# 查询莎士比亚作品
query = """
SELECT ?book ?title WHERE {
  ?book dcterms:creator ?agent .
  ?agent rdfs:label "Shakespeare, William" .
  ?book dcterms:title ?title .
}
"""
for row in g.query(query):
    print(f"{row.book}: {row.title}")
```

### 文本处理的工程细节

PG 的纯文本遵循严格的[格式规范](https://www.gutenberg.org/help/produce.html)：
- 行宽 72 字符（历史终端兼容）
- 章节以空行分隔，标题大写
- 斜体用 `_下划线_` 标记
- 脚注内嵌或章节末尾集中

这种结构化约定使得简单的正则表达式就能实现可靠的解析，无需依赖重型解析库。

## 实践建议

**对内容开发者：**
- 优先提供**源格式 + 多导出选项**，而非单一封闭格式
- 建立**版本化、可校验**的内容流水线（如 PG 的 DP rounds）
- 考虑文本的"百年可读性"：今天选的格式，2035 年还能打开吗？

**对 NLP/AI 从业者：**
- 将 PG 作为**基线语料**清洗流程的试金石——它的噪声模式具有代表性
- 利用 `gutenberg` Python 库（非官方但社区维护）批量获取：

```python
from gutenberg.acquire import load_etext
from gutenberg.cleanup import strip_headers

# 获取编号 1342 的《傲慢与偏见》，并去除 PG 的协议头
text = strip_headers(load_etext(1342)).strip()
print(text[:500])
```

**对独立开发者：**
- 构建**离线优先**的阅读工具，PG 是完美的内容源
- 尝试基于 RDF 元数据开发主题推荐、时间线可视化等衍生应用

**对技术管理者：**
- 重新审视"技术债"的定义：PG 的 Perl 代码是债还是资产？
- 在架构评审中引入**"停机十年测试"**：如果项目冻结维护，现有设计能撑多久？

## 总结

Project Gutenberg 的持久魅力，在于它回答了一个被频繁遗忘的问题：**技术的终极价值是什么？** 不是追逐最新的框架，不是堆砌复杂的功能，而是让知识跨越时间流动。当我们在 HackerNews 上一次次看到它的名字，本质上是在确认一种信念——简单、开放、专注的设计，能够战胜五十年的技术变迁。对于习惯"快速迭代"的中国开发者，PG 是一面镜子：它提醒我们，有些工作值得用半个世纪去打磨，有些选择"不够现代"却足够正确。在 AI 重构一切的时代，这份来自 1971 年的遗产，反而愈发珍贵。
```