ChinaTextbook - 41.53 GB,中国小学、初中、高中、大学 PDF 教材

原始链接在: https://www.appinn.com/chinatextbook/

ChinaTextbook 是一款收集了公开的中国小学、初中、高中、大学 PDF 教材的项目,托管在 GitHub 上,总库大小 41.53GB。@Appinn


这个项目存在有一段时间了,今天突然火了。

教材来源为:国家中小学智慧教育平台,本身只需要登录后即可浏览,可以使用第三方工具下载(比如 tchMaterial-parser 项目)。

如果有需求,可以制作一个如何下载/合并教材的教程。

ChinaTextbook 的主要内容包括:

小学:

  • 体育与健康
  • 数学
  • 科学
  • 美术
  • 艺术
  • 英语
  • 语文/统编版
  • 语文·书法练习指导
  • 道德与法治/统编版
  • 音乐

初中:

  • 人文地理/统编版-人民教育出版社
  • 体育与健康
  • 俄语/人教版-人民教育出版社
  • 化学
  • 历史/统编版-人民教育出版社
  • 地理
  • 地理图册
  • 数学
  • 日语/人教版-人民教育出版社
  • 物理
  • 生物学
  • 科学
  • 美术
  • 艺术
  • 英语
  • 语文/统编版-人民教育出版社
  • 道德与法治/统编版-人民教育出版社
  • 音乐

高中:

  • 体育与健康
  • 俄语/人教版-人民教育出版社
  • 信息技术
  • 化学
  • 历史/统编版-人民教育出版社
  • 地理
  • 地理图册
  • 思想政治/统编版-人民教育出版社
  • 数学
  • 日语/人教版-人民教育出版社
  • 物理
  • 生物学
  • 美术
  • 艺术
  • 英语
  • 语文/统编版-人民教育出版社
  • 通用技术
  • 音乐

大学:

  • 概率论
  • 离散数学
  • 线性代数
  • 高等数学

原文:https://www.appinn.com/chinatextbook/

4 个赞

上面教材应该都是比较新的版本,我其实一直想找有没有十多年前的教材。
翻看当年我用的老教材,追忆青春一去不复返。。。

3 个赞

要是有经典老版教材就好了

2 个赞

一年级语文真的没有拼音了

新教材防自学做的不错

1 个赞

顺带提一嘴,如果想直接拉取,不要直接git clone一把梭哈,
这么大的项目 一旦网络有点波动网断了,就完全重新下了。

建议分步骤拉取

mkdir ChinaTextbook && cd ChinaTextbook
git init
git remote add origin https://github.com/TapXWorld/ChinaTextbook.git
git fetch origin --progress 

git clone 是创建一个新仓库,并一次性拉取远程所有数据,不支持断点续传.
git fetch 是增量更新,支持断点续传。


哦,对了,漏了一件事

当显示Resolving deltas: 100% (9999/9999), done.时,就是二进制文件已经下载完毕了。
还需要执行git checkout 分支名把主分支检出。(分支名看终端的输出)

对应这个项目就是因为终端输出是

Resolving deltas: 100% (1119/1119), done.
From https://github.com/TapXWorld/ChinaTextbook
 * [new branch]      master     -> origin/master

所以检出命令是git checkout master

4 个赞

小学生自学?初中生自学?高中生自学?

1 个赞

自学有什么奇怪的啊

各位谨慎啊!合并工具里面有病毒:microbe: :shaking_face:

我用 issue 中提到的问题代码,在 Linux Mint 上利用 go 进行跨平台编译,命令如下:

GOOS=windows go build mergePDFs.go

得到一个 exe 文件,上传到 VirusTotal 后,检测结果是 71 个引擎中 10 个报告有问题,具体报告如下:

涉事代码如下:

package main

import (
	"io/ioutil"
	"os"
	"sort"
	"strings"
)

func main() {
	dirPath := "." // 当前目录
	mergeSplitPDFsInDirectory(dirPath)
}

func mergeSplitPDFsInDirectory(dirPath string) {
	files, err := ioutil.ReadDir(dirPath)
	if err != nil {
		panic(err)
	}

	splitFiles := make(map[string][]string)

	for _, file := range files {
		if file.IsDir() {
			continue
		}
		fileName := file.Name()
		if strings.Contains(fileName, ".pdf.") {
			baseName := strings.Split(fileName, ".pdf.")[0] + ".pdf"
			splitFiles[baseName] = append(splitFiles[baseName], fileName)
		}
	}

	for baseName, parts := range splitFiles {
		sort.Strings(parts) // 确保文件顺序正确
		mergeFiles(baseName, parts)
	}
}

func mergeFiles(baseName string, parts []string) {
	mergedFile, err := os.Create(baseName)
	if err != nil {
		panic(err)
	}
	defer mergedFile.Close()

	for _, part := range parts {
		data, err := ioutil.ReadFile(part)
		if err != nil {
			panic(err)
		}
		_, err = mergedFile.Write(data)
		if err != nil {
			panic(err)
		}
		os.Remove(part) // 合并后删除分割文件
	}
}

我编译得到的 exe 文件,大小是 1.9 MB。而 GitHub 上给出的 mergePDFs.exe 是 1.83 MB,基本一样,issue 中所言

而mergePDFs.exe的源代码只给出短短50行。并不是全部。

是有待商榷的。

但是,还是有必要详细研判一下代码的具体内容是否存在问题。另外最好能请有条件的朋友在 WIndows 上原生编译一下,不知道报毒会不会是跨平台编译的问题。

1 个赞

非常谢谢反馈!
那个存在的问题很奇怪。

在windows系统下编译 mergePDFs.go

环境:WIN11 24H2,Go 1.24.3

得到的exe文件体积为 2.2MB,和作者提供的exe文件的体积(1.83MB)差异,应该是编译环境引起的差异,在WSL内的Ubuntu24内编译得到的exe文件体积是1.9MB和你的一致,报毒结果也是10个。

将win系统编译的exe文件上传到 VirusTotal 后,检测结果是 71 个引擎中 3 个报告有问题,具体报告如下:virustotal

简单看下go代码,看起来像是将非PDF文件合并得到一个PDF的行为导致的报毒,毕竟现在的PDF文件支持内嵌挺多奇怪的东西,比如JS代码……

2 个赞

好吧,issues下有个大哥,做个更简单的测试:
直接写一个hello world。在windows下编译后,扔到VirusTotal,也是这3个报毒。

1 个赞

基本都不是主流杀毒引擎,报的病毒类型也各不相同,还是AI模型识别的,九成九是误报。不放心就看源码

有没有十年前或者二十年前三十年前的教材,现在看教材不如看教辅