ChinaTextbook 拆解:小初高教材官方本来就免费,这个 8 万星仓库解决的是「拿得到」
posts posts 2026-06-07T23:03:00+08:00TapXWorld/ChinaTextbook 把人教版为主的小初高教材 PDF 集中成一个可克隆的 GitHub 仓库。本文对着 GitHub API 与 README 核实后拆解:目录的三层结构、35MB 分片与合并工具的由来、中小学与大学版权边界差异、40 GB 全量克隆的真实成本,以及更新停滞之后该用什么替代。技术笔记教育资源, 开源, PDF, 中文判断:中国的义务教育教材不缺官方免费来源——国家实行教科书免费提供政策,人教社官网和国家中小学智慧教育平台都能下载电子版。真正稀缺的是一条集中、稳定、可离线的获取渠道:官网栏目分散、海外访问不畅,而有人在某站把免费 PDF 加上私人水印再卖钱。
TapXWorld/ChinaTextbook对着这两件事做的是同一动作:把官方已经公开的 PDF 集中到一个可克隆、可镜像、可验证的 git 仓库。它不是 2026 年的新项目——仓库 2020 年 1 月就创建了,2025 年才进入公众视野,2025 年 10 月之后内容更新停滞。读完后能做什么:看懂目录的「学段 → 学科 → 版本」三层结构;知道超过 50MB 的 PDF 为什么被拆成 35MB 分片、用什么工具合并;算清楚全量克隆约 40 GB 的真实成本,以及只拿几本书时该走哪条路;分清中小学教材与大学教材的版权边界差异。
依据:GitHub API 在 2026-09-30 读到 82,438 stars / 18,702 forks / 无 license,仓库创建于 2020-01-05,末次 push 为 2025-10-18;目录结构按 GitHub contents API 逐层核对;分片与合并工具的说法对照主仓库 README 与 ChinaTextbook-tools(含 issue #35)。
目录
- §1 系统地图:一个没有代码的仓库在解决什么
- §2 目录结构:学段 → 学科 → 版本
- §3 为什么放在 GitHub:35MB 分片与一次病毒误报
- §4 任务流案例:拿到一本七年级上册数学
- §5 版权边界:中小学与大学不是一回事
- §6 同步到本地的真实成本:约 40 GB
- §7 更新停滞与替代渠道
- §8 采用建议:谁该用、谁不必用
- §9 事实核验与引用
§1 系统地图:一个没有代码的仓库在解决什么
README 第一段把动机写得很直白:
虽然国内教育网站已提供免费资源,但大多数普通人获取信息的途径依然受限。有些人利用这一点,在某站上销售这些带有私人水印的资源。为了应对这种情况,我计划将这些资源集中并开源,以促进义务教育的普及和消除地区间的教育贫困。
紧接着还有一句常被转载忽略的话:「还有一个最重要的原因是,希望海外华人能够让自己的孩子继续了解国内教育。」
把这两段和仓库的实际形态对起来看,这个项目要同时对付三个问题:
| 问题 | 仓库给出的形态 |
|---|---|
| 免费 PDF 散落在官网各栏目,找齐费劲 | 按学段组织的目录树,一层点下去就是 PDF 直链 |
| 有人把免费资源加水印、剪页码后售卖 | 每个文件对应官方原版,commit 历史可追溯 |
| 海外访问国内教育网站不稳定 | 仓库放在 GitHub,git clone 全球可达,可整仓离线 |
理解这个仓库还需要一条时间线:它创建于 2020 年 1 月,但真正开始被大量关注是在 2025 年——ChinaTextbook-tools 合并工具仓创建于 2025-05-18,主仓库 README 在 2025 年 5 月和 10 月两次更新,10 月那次加上了 Star History 图。到 2026 年 9 月底,它有 82,438 个 star,PDF 总体积约 40 GB。这个体量在「没有一行代码」的仓库里相当罕见。
§2 目录结构:学段 → 学科 → 版本
仓库顶层就是学段,往下是学科,再往下是版本,文件命名到年级和上下册。GitHub contents API 逐层核对后的结构如下:
| 学段目录 | 学科数 | 覆盖举例 | 教材版本情况 |
|---|---|---|---|
小学 | 10 | 语文、数学、英语、道德与法治、科学、音乐、美术、艺术、体育与健康、书法练习指导 | 数学 8 个版本(人教、北师大、苏教、青岛、冀教、北京、西南大学、西南师大);语文仅统编版 |
初中 | 18 | 数理化生、语文、英语、历史、地理、道德与法治,及俄语、日语、人文地理、地理图册 | 数学 10 个版本;人教版目录名带「人民教育出版社」全称 |
高中 | 18 | 含信息技术、通用技术等 | 数学 7 个版本;人教 A 版目录名标注主编(章建跃 & 李增沪),B 版主编高存明 |
大学 | 4 | 高等数学(同济第六、第七版)、线性代数、离散数学、概率论 | 仅数学基础课,无其他学科 |
小学(五·四学制) / 初中(五·四学制) | — | 对应五四学制地区(小学五年、初中四年) | — |
学数学最重要的刷习题在这里 | — | 练习册目录,与 README 的「学习数学」板块呼应 | — |
三点值得展开:
版本覆盖比「人教版专用」的传闻广得多。 实际小学数学有 8 个版本、初中数学 10 个、高中数学 7 个。真正的单版本学科是语文(小学仅统编版)——语文教材本来就只有国家统编一种。
大学的覆盖非常窄。 只有数学四门基础课,高等数学收了同济第六版和第七版。把它当成「大学教材库」会失望,README 的重心从来都在基础教育:作者在「学习数学」一节写的是「希望未来出现更多不是为了考学而读书的人」。
README 的直链只覆盖数学。 首页列出小学数学 12 册、初中数学 6 册、高中数学和大学数学的目录入口。其他学科要从仓库目录树自己点进去,或者按 §6 的 sparse-checkout 只拉需要的子目录。
§3 为什么放在 GitHub:35MB 分片与一次病毒误报
用 git 仓库发 PDF,要处理的第一件事是平台的大文件限制。README 写明了规则:
由于 GitHub 对单个文件的上传有最大限制,超过 100MB 的文件会被拒绝上传,超过 50MB 的文件上传时会收到警告。因此,文件大小超过 50MB 的文件会被拆分成每个 35MB 的多个文件。
被拆分的文件长这样:义务教育教科书 · 数学一年级上册.pdf.1、...pdf.2。下载后需要自己拼回去。到这一步出现了这个仓库最有意思的一段插曲:作者最初发布的合并程序 mergePDFs-windows-amd64.exe 在 VirusTotal 上被报病毒。作者认为是误报,处理方式不是发帖澄清,而是另建了 ChinaTextbook-tools 仓库,把合并工具改为 GitHub Actions 开源编译——构建过程全部公开可查,并在 README 里链接了触发这件事的 issue #35。
现在 v0.0.1 release 提供 Windows(exe)、macOS(amd64/arm64,另有可双击的 mergePDFs.command 脚本)、Linux(amd64)四份可执行文件。不想用工具的话,拼接本来就是普通文件操作,tools 仓库 README 给出了两条通用命令:
# Windows(CMD 或 Windows Terminal)
copy /b "文件名1" + "文件名2" "合并后的文件名"
# macOS / Linux
cat "文件名1" "文件名2" > "合并后的文件名"选 GitHub 还有一层平常不太被提的原因:git 仓库天然带版本追溯和协作入口。每本教材的替换、新增都有 commit 记录,缺版本提 issue 就行。对「内容会不会被偷偷改过」这类担心,commit 历史就是答案。
§4 任务流案例:拿到一本七年级上册数学
把前面的结构、分片和工具串成一次真实获取。假设一位家长只要人教版七年级上册数学:
- 定位:打开仓库,进入
初中/数学/人教版-人民教育出版社/七年级/。文件在网页上直接可见,PDF 体积没超过 50MB 的直接点开右上角 Download 即可,全程不需要 git。 - 识别分片:如果文件名以
.pdf.1、.pdf.2结尾,说明原文件超过 50MB 被拆过,两个分片都要下载,放同一个目录。 - 合并:Windows 用户下载 tools 仓库的 exe 双击;macOS / Linux 用户一条
cat "...pdf.1" "...pdf.2" > "...pdf"拼回原文件。 - 校验:拼完打开确认页数完整。对文件完整性有要求的,对照 commit 历史看这个文件是否被替换过。
整条路径里,git 只是「获取整个仓库」的选项之一;单册获取走网页直链反而最省。这个区别在下一节会变成一个 40 GB 的差别。
§5 版权边界:中小学与大学不是一回事
这是使用前必须分清的一层,两类教材的处境完全不同。
义务教育阶段的教科书由国家免费提供,这是全国统一政策;纸质课本学生不花钱,电子版在人教社官网(jc.pep.com.cn)和国家中小学智慧教育平台(basic.smartedu.cn)都能拿到。仓库做的事是把这些官方已公开的内容集中化——对小学和初中部分,它搬运的对象本身就是免费的。
高中阶段没有免费教材政策,但人教 A/B 版目录、主编信息都按官方出版物原样标注,来源仍可对照官方渠道核验。
大学部分是另一回事。同济《高等数学》这类教材是出版社的版权作品,不在任何免费政策范围内。仓库收录了它们,但使用这部分的合规边界更紧:个人学习与教学科研属常见合理使用,二次分发、商业使用不要碰。
仓库本身没有写 license。按 GitHub 的规则,无 license 等于保留所有权利——虽然 PDF 的权利归属是各出版社和编写方,但「仓库里没有明示授权」这件事本身就是提醒:个人使用没问题,拿它做镜像分发、打包售卖、做商业训练集之前,先想清楚权利链条。
§6 同步到本地的真实成本:约 40 GB
「把整个仓库克隆下来」听起来是 git 用户的本能反应,对这个仓库需要先算账:GitHub API 显示仓库体积 43,543,927 KB,约 40 GB。更关键的是,--depth 1 浅克隆只截断提交历史,不减少当前文件——一个只想要两本书的用户跑 git clone --depth 1,照样要下载全部 40 GB。
按真实需求选路径:
# 只想要一两本:不走 git,浏览器打开文件页直接 Download
# 要一个学段:sparse-checkout,只拉子目录
git clone --depth 1 --filter=blob:none --sparse https://github.com/TapXWorld/ChinaTextbook.git
cd ChinaTextbook
git sparse-checkout set "初中/数学"
# 确实要整仓(公益组织做本地分发等场景):接受 40 GB 代价
git clone https://github.com/TapXWorld/ChinaTextbook.git--filter=blob:none 让克隆先只拿目录结构不拿文件内容,git sparse-checkout set 再按需拉取子目录——这条组合是对大仓库按学段取用的标准做法。之后上游更新,进目录 git pull 即可增量同步。
需要注意:仓库未启用 Git LFS,大文件靠的是 §3 的分片方案。如果在别的教程里看到对它执行 git lfs pull,那不会有效果。
§7 更新停滞与替代渠道
末次 push 停在 2025 年 10 月 18 日,此后近一年没有新提交。对教材仓库来说这未必致命——小学数学的内容不会变——但它意味着两点预期要摆正:新版教材上线后不要等这里更新;提 issue 大概率无人响应(open issue 已积到 131 个)。
需要新版本或仓库没有的内容时,官方与社区渠道都还在:
- 国家中小学智慧教育平台(basic.smartedu.cn):教育部官方,电子教材之外还有配套课程资源;
- 人教社官网电子教材(jc.pep.com.cn):人教版源头;
- tchMaterial-parser:开源的国民中小学教材解析下载工具,主仓库 README 里作者点名推荐,国内网络环境下可自行从官方接口重新下载。
仓库的 README 里还留有 Telegram 社群入口和捐赠二维码,社群是否仍在活跃,用前自行确认。
§8 采用建议:谁该用、谁不必用
按场景排一个顺序:
- 海外华人家庭:最对口。国内教育站点在海外访问不稳,一份可整仓离线的教材目录正好补上。建议 sparse-checkout 只拉需要的学段,配合 tools 仓库的分片合并工具。
- 支教、公益、 offline 教学场景:整仓克隆一次、本地反复分发的模式价值最大,40 GB 是一次性成本。
- 国内家长单册打印:直接走智慧教育平台或人教社官网更直接;ChinaTextbook 的优势只在「多学段混着要、想一个地方拿齐」。
- 做训练集的研究者:谨慎。单层 PDF 需要 OCR 与切分才是可用语料;大学部分版权敏感,商用前先解决权利问题。
- 只关心最新版教材:直接用官方渠道,这个仓库的更新节奏不支持这个预期。
它更像一份「把免费的东西真正送到手上」的渠道工程:官方源一直都在,但把散落的页面收拢成一份可 clone、可离线、来源可追溯的目录,这件事在它之前没有人做完过。作者在 README 里对这件事的全部动机陈述只有两段——对抗水印盗版,和让海外华人孩子继续读国内教材。8 万多个 star 说明这两段话戳中的远不止一个人。
§9 事实核验与引用
以下事实均在 2026-09-30 对照 GitHub 公开数据核实:
- 仓库数据:82,438 stars / 18,702 forks / 131 open issues / 无 license,创建于 2020-01-05,末次 push 2025-10-18,体积 43,543,927 KB —— GitHub API
repos/TapXWorld/ChinaTextbook; - 目录结构:小学 10 学科、初中 18、高中 18、大学 4;小学数学 8 版本、初中数学 10、高中数学 7(A 版主编章建跃 & 李增沪、B 版主编高存明,见目录名)—— GitHub contents API 逐层核对;
- README 原文:项目由来、海外华人段、「学习数学」寄语、100MB/50MB/35MB 分片规则、tchMaterial-parser 推荐、Telegram 与捐赠入口 —— master 分支 README;
- 合并工具:ChinaTextbook-tools 创建于 2025-05-18,v0.0.1 release 四平台可执行文件,GitHub Actions 编译,VirusTotal 误报背景见其 README 与 issue #35;
- 官方渠道可达性:jc.pep.com.cn 于 2026-09-30 返回 200;basic.smartedu.cn 存在反爬限制(浏览器可正常访问);
- 政策表述:义务教育教科书免费提供为全国统一政策;大学教材版权属出版社,文中合规建议为一般性边界描述,不构成法律意见。
GitHub: TapXWorld/ChinaTextbook
2026-06-07 · GitHub Trending 收录 · 2026-09-30 按 GitHub API 与 README 复核更新 · 文本矩阵「技术笔记」专栏
参与讨论
使用 GitHub 登录。欢迎补充事实、异议与实践。
讨论暂时无法加载。