Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

古籍文本智能校勘系统

Python Streamlit License

数字文献学 · 智能对比 · 异文标注 · 学术导出

基于 GLM-4 智能算法与学术校勘规范开发的自动化文本比对系统。专为古籍研究设计,提供高质量的「脚注式」校勘结果与交互式阅读体验。


界面预览

系统采用「墨韵书香」主题设计,融合传统中式学术风格与现代数字化界面:

  • 宣纸色背景 + 朱砂红点缀
  • 思源宋体排版
  • 双向跳转脚注系统
  • 响应式布局

核心特色

学术级脚注体系

底本原貌 100% 保留,异文以脚注形式标注,符合传统学术规范。

双向跳转导航

正文注号与底部校勘记之间实现毫秒级跳转,支持一键返回,解决长篇文本阅读痛点。

智能插入锚点

自动识别「多字」差异,并精确锚定到前置非标点字符,避免注号悬空。

标点深度脱敏

底层过滤纯标点差异(如「」与 ""),确保校勘记聚焦于实质文字变动。

动态差异高亮

侧边栏一键开关,实时以底纹点亮正文中的异文位置。

多格式导出

支持 TXT、HTML、Word 三种格式导出,可选择导出「附校勘记原文」或「纯校勘记」。


快速开始

1. 克隆项目

git clone https://github.com/YOUR_USERNAME/classical-text-collation.git
cd classical-text-collation

2. 创建虚拟环境(推荐)

python -m venv venv
source venv/bin/activate  # macOS/Linux
#
venv\Scripts\activate  # Windows

3. 安装依赖

pip install -r requirements.txt

4. 配置 API Key

cp config.example.yaml config.yaml

编辑 config.yaml,填入您的智谱 GLM API Key:

llm:
  api_key: "your_api_key_here"

获取 API Key:访问 智谱AI开放平台

5. 启动系统

streamlit run app.py

浏览器访问 http://localhost:8501 即可使用。


使用指南

基本操作

  1. 输入文本:在左右两侧文本框中分别粘贴底本和校本内容
  2. 设置版本名称:在侧边栏中为每个版本命名(如「大正藏」「高丽藏」)
  3. 选择底本:指定哪个版本作为校勘基准
  4. 开始校勘:点击「开始校勘」按钮

查看结果

  • 批注视图:正文中标注脚注编号,底部显示完整校勘记
  • 校勘记列表:纯文本形式的校勘条目清单
  • 统计分析:差异类型分布(多字/少字/异文)
  • 导出:下载校勘结果

显示设置

  • 高亮异文位置:开启后,正文中有异文的字会以底色标出
  • 显示异体字:控制是否在结果中包含异体字差异

项目结构

├── 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/                # 导出文件

技术原理

文本对齐 (Alignment)

系统采用「语义 + 算法」双轨对齐策略:

  1. AI 智能对齐(优先):利用 GLM-4 理解上下文语义,即使两段文字差异巨大,也能准确匹配对应段落
  2. 算法对齐(降级方案):基于最长公共子序列(LCS)寻找锚点,以 30% 相似度阈值判定匹配

差异检测 (Detection)

基于 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


常见问题

Q: 校勘结果中标点差异太多怎么办?

A: 系统默认使用严格模式过滤标点差异。如果仍有问题,请检查两个版本是否使用了不同的引号格式(如中文引号 vs 西文引号)。

Q: 如何处理超长文本?

A: 系统会自动分段处理。建议单次输入不超过 10000 字,以获得最佳性能。

Q: 支持哪些语言?

A: 主要针对中文古籍设计,对繁体/简体、异体字有专门优化。


开发计划

  • 支持更多 LLM 模型(OpenAI、Claude 等)
  • 批量文件处理
  • 校勘结果在线分享
  • 异体字库扩展
  • PDF 直接导入

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。


致谢


联系作者

本程序由 李周渊 设计开发。

如有问题或建议,欢迎提交 Issue 或 Pull Request。

About

古籍文本智能校勘系统 - 基于 Python + Streamlit 的学术级文本校勘工具

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages