数字文献学 · 智能对比 · 异文标注 · 学术导出
基于 GLM-4 智能算法与学术校勘规范开发的自动化文本比对系统。专为古籍研究设计,提供高质量的「脚注式」校勘结果与交互式阅读体验。
系统采用「墨韵书香」主题设计,融合传统中式学术风格与现代数字化界面:
- 宣纸色背景 + 朱砂红点缀
- 思源宋体排版
- 双向跳转脚注系统
- 响应式布局
底本原貌 100% 保留,异文以脚注形式标注,符合传统学术规范。
正文注号与底部校勘记之间实现毫秒级跳转,支持一键返回,解决长篇文本阅读痛点。
自动识别「多字」差异,并精确锚定到前置非标点字符,避免注号悬空。
底层过滤纯标点差异(如「」与 ""),确保校勘记聚焦于实质文字变动。
侧边栏一键开关,实时以底纹点亮正文中的异文位置。
支持 TXT、HTML、Word 三种格式导出,可选择导出「附校勘记原文」或「纯校勘记」。
git clone https://github.com/YOUR_USERNAME/classical-text-collation.git
cd classical-text-collationpython -m venv venv
source venv/bin/activate # macOS/Linux
# 或
venv\Scripts\activate # Windowspip install -r requirements.txtcp config.example.yaml config.yaml编辑 config.yaml,填入您的智谱 GLM API Key:
llm:
api_key: "your_api_key_here"获取 API Key:访问 智谱AI开放平台
streamlit run app.py浏览器访问 http://localhost:8501 即可使用。
- 输入文本:在左右两侧文本框中分别粘贴底本和校本内容
- 设置版本名称:在侧边栏中为每个版本命名(如「大正藏」「高丽藏」)
- 选择底本:指定哪个版本作为校勘基准
- 开始校勘:点击「开始校勘」按钮
- 批注视图:正文中标注脚注编号,底部显示完整校勘记
- 校勘记列表:纯文本形式的校勘条目清单
- 统计分析:差异类型分布(多字/少字/异文)
- 导出:下载校勘结果
- 高亮异文位置:开启后,正文中有异文的字会以底色标出
- 显示异体字:控制是否在结果中包含异体字差异
├── app.py # Streamlit 主程序(UI 布局与状态管理)
├── config.yaml # 配置文件(需自行创建)
├── config.example.yaml # 配置文件模板
├── requirements.txt # Python 依赖
├── src/
│ ├── core/ # 核心模块
│ │ ├── orchestrator.py # 流程编排(整合对齐、检测、生成)
│ │ ├── aligner.py # 文本对齐引擎
│ │ ├── diff_detector.py # 差异检测与异体字过滤
│ │ └── report_generator.py # 报告生成与索引排序
│ ├── models/ # 数据模型
│ │ ├── difference.py # 差异类型定义
│ │ ├── alignment.py # 对齐结果模型
│ │ └── collation_report.py # 校勘报告模型
│ ├── utils/ # 工具类
│ │ ├── footnote_annotator.py # 脚注 HTML 与跳转逻辑
│ │ ├── inline_annotator.py # 行内标注
│ │ ├── text_processor.py # 文本预处理与异体字表
│ │ └── formatter.py # 格式化输出
│ ├── ui/ # 界面相关
│ │ └── export_handler.py # 导出功能
│ └── llm/ # LLM 客户端
│ └── glm_client.py # 智谱 GLM API 封装
├── test/ # 测试样例文本
└── data/ # 数据目录
├── cache/ # 缓存
└── exports/ # 导出文件
系统采用「语义 + 算法」双轨对齐策略:
- AI 智能对齐(优先):利用 GLM-4 理解上下文语义,即使两段文字差异巨大,也能准确匹配对应段落
- 算法对齐(降级方案):基于最长公共子序列(LCS)寻找锚点,以 30% 相似度阈值判定匹配
基于 Python difflib.SequenceMatcher 的字符级比对:
- 替换 (Substitution):底本某字被校本替换为另一字
- 删除 (Deletion):底本有字,校本无(校本少字)
- 插入 (Insertion):底本无,校本多出内容(校本多字)
对于「插入」类差异,系统自动向前回溯,寻找最近的非标点字符作为锚点,确保校勘记表述清晰:
「某某字」下,校本多「……」
采用严格模式过滤:去除标点后若文字内容相同,则忽略该差异,避免无意义的标点变体污染校勘结果。
config.yaml 主要配置项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
llm.api_key |
智谱 API Key | 必填 |
llm.model |
模型选择 | glm-4 |
llm.temperature |
生成温度 | 0.3 |
punctuation_filtering.mode |
标点过滤模式 | strict |
collation.show_variant_chars |
显示异体字 | false |
ui.max_versions |
最大版本数 | 4 |
- Python 3.9+
- Streamlit 1.30+
- 智谱 GLM API
完整依赖见 requirements.txt。
A: 系统默认使用严格模式过滤标点差异。如果仍有问题,请检查两个版本是否使用了不同的引号格式(如中文引号 vs 西文引号)。
A: 系统会自动分段处理。建议单次输入不超过 10000 字,以获得最佳性能。
A: 主要针对中文古籍设计,对繁体/简体、异体字有专门优化。
- 支持更多 LLM 模型(OpenAI、Claude 等)
- 批量文件处理
- 校勘结果在线分享
- 异体字库扩展
- PDF 直接导入
本项目采用 MIT 许可证。详见 LICENSE 文件。
本程序由 李周渊 设计开发。
如有问题或建议,欢迎提交 Issue 或 Pull Request。