- 人工智能
- 计算机视觉
- OCR
【免费下载链接】trocr-base-handwritten-hist-swe-2
trocr-base-handwritten-hist-swe-2 是瑞典国家档案馆推出的历史手稿 HTR(手写文本识别)模型,专为 1600–1900 年瑞典手写文书训练。本文将手把手教你如何用 20–50 份样本文档微调它,把字符错误率(CER)压低到个位数,实现整卷历史档案的自动转录。
🤔 一、先认识这位"手稿翻译官":模型是什么来头
如果你手头有一批 17 世纪的古董书信,用普通 OCR 工具基本"一个字都认不出来"——因为古旧手写体的笔画连笔、字形与印刷体差异巨大。这正是trocr-base-handwritten-hist-swe-2解决的问题:
| 关键属性 | 说明 |
|---|---|
| 模型类型 | TrOCR base handwritten(ViT 视觉编码器 + Transformer 解码器) |
| 基座模型 | microsoft/trocr-base-handwritten |
| 训练领域 | 1600–1900 年瑞典行书手稿 |
| 工作方式 | 文本行级识别(每次输入一行文字的图片) |
| 开发方 | 瑞典国家档案馆、斯德哥尔摩市档案馆等联合开发 |
| 许可证 | apache-2.0 |
📁 模型仓库核心文件一览:
- 模型权重:model.safetensors
- 架构配置:config.json(编码器为 12 层 ViT,解码器 12 层、16 个注意力头)
- 图像预处理参数:preprocessor_config.json(输入统一缩放到 384×384)
- 词表与分词器:vocab.json、merges.txt、tokenizer.json(50265 个 BPE token)
- 生成参数:generation_config.json(4 束搜索、最大长度 256)
- 推理入口示例:handler.py
📊 二、为什么 20–50 份文档就够了?官方评测数据说明一切
官方在 README.md 中明确建议:如果你有一批模型训练域内、但未包含在训练集中的材料(比如某位贵族 17 世纪的信件集),只需人工转录 20–50 份信件用于微调,就能转录整个文集。
这不是画饼。官方域内评测表(按 CER 排序)显示,同一模型在不同档案上的表现差异主要来自"该档案训练样本量":
| 数据集 | 训练行数 | 评测行数 | WER | CER |
|---|---|---|---|---|
| krigshovrattens_dombocker_lines | 16,887 | 1,877 | 0.0330 | 0.0075 |
| stockholms_stadsarkiv_allmana_barnhuset_1700_lines | 565 | 142 | 0.0647 | 0.0120 |
| goteborgs_poliskammare_fore_1900_lines | 339,297 | 17,858 | 0.0800 | 0.0187 |
| svea_hovratt_lines | 36,884 | 4,099 | 0.1484 | 0.0313 |
| trolldomskommissionen_lines | 33,498 | 3,722 | 0.2321 | 0.0600 |
📌 关键结论:训练样本越贴合目标材料,CER 越低。微调的本质,就是让模型快速"记住"你这批材料的笔迹风格——所以 20–50 份人工转录的文档往往足够。
📝 三、微调前数据准备:按"文本行"整理样本
HTR 模型工作在文本行级别,数据准备时请注意:
- 切分行:将样本文档按书写行切分,每行生成一张图片(可用分割模型辅助,如 HTRflow 的 YOLO 行分割步骤);
- 白底化:参考官方预处理方式——将文字行的多边形区域抠出,放置在纯白背景上,尺寸取外接框(见 README.md 的 Preprocessing 一节);
- 人工转录:为每行图片配一份准确转录文本,这是模型学习的"标准答案";
- 留出验证集:从 20–50 份样本中划出 10%–20% 不参与训练,用于评估微调效果。
💡 转录是工作量最大的一步,但也是精度提升的源泉。样本越准确,模型学得的映射越可靠。
🛠 四、微调实操:加载基座模型 + 三组关键超参数
微调流程的核心只有三步:加载模型 → 喂入样本训练 → 保存新权重。
from transformers import TrOCRProcessor, VisionEncoderDecoderModel processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten") model = VisionEncoderDecoderModel.from_pretrained( "Riksarkivet/trocr-base-handwritten-hist-swe-2" )训练超参数直接沿用官方配置即可(出自 README.md 的 Training Hyperparameters 一节,完整架构见 config.json):
| 参数 | 官方取值 | 说明 |
|---|---|---|
| 训练精度 | bf16 | 显存减半、数值稳定 |
| 学习率 | 5e-5 | 微调常用小学习率,避免破坏基座能力 |
| 权重衰减 | 0.01 | 抑制过拟合 |
几个新手容易踩的坑:
- 🖼️ 输入图片会被 preprocessor_config.json 统一缩放为 384×384,切行时尽量保持行图接近横向矩形,避免大量留白;
- ⚙️ 生成阶段官方使用
num_beams: 4、no_repeat_ngram_size: 3(见 generation_config.json),微调后建议沿用,可明显减少重复字符; - 💾 训练完成后再保存新的 processor 与权重,部署时直接指向你的微调模型目录即可。
📏 五、如何验证效果:看懂 CER 与 WER 两个指标
微调前后,用验证集计算两个指标(定义详见 README.md 的 Metrics 一节):
- CER(字符错误率)=(替换 + 删除 + 插入)÷ 参考文本总字符数——衡量"每个字认得准不准";
- WER(词错误率)= 同口径但按词统计——衡量"每个词认得准不准",对排版阅读体验更敏感。
参考基线:不微调直接跑未见过的档案(域外测试),CER 在2.5%–21.8%之间波动,最差样本高达 0.52 WER;而微调贴合笔迹后,域内 CER 可压到1% 左右(如 krigshovrattens 数据集 CER 仅 0.0075)。
🎯 实用经验:微调后若验证集 CER 低于域外基线一半以上,说明"专属模型"已明显优于通用模型,可以投入批量转录了。
🚀 六、部署成果:接入 HTRflow 流水线批量转档案
单行识别只是第一步。要转录整页档案,官方推荐自家的HTRflow包:写一个 YAML 管道配置,指定分割与识别模型,然后一条命令跑完全流程:
htrflow pipeline path/to/pipeline.yaml path/to/images管道核心配置(节选自 README.md):
steps: - step: Segmentation # 版面区域分割 settings: model: yolo model_settings: model: Riksarkivet/yolov9-regions-1 - step: Segmentation # 行分割 settings: model: yolo model_settings: model: Riksarkivet/yolov9-lines-with-regions-1 - step: TextRecognition # 把这里换成你的微调模型 settings: model: WordLevelTrocr model_settings: model: Riksarkivet/trocr-base-handwritten-hist-swe-2最后通过Export步骤输出 ALTO / Page XML 标准格式,直接对接档案数字化系统。
💡 七、新手常见问答
Q1:能识别非瑞典语或现代手写信吗?不能开箱即用。模型只在 1600–1900 年瑞典手稿上训练,其他语言、印刷体都不在适用范围内(Out-of-Scope Use)。
Q2:样本一定要 20–50 份吗?这是官方推荐的"甜蜜区间"。少于 20 份效果可能不稳定;样本再多收益递减,而人工转录成本会线性增长。
Q3:没有 GPU 能微调吗?模型仅 base 规模(12 层 ViT 编码器),消费级 GPU(8GB 显存级别)配合 bf16/混合精度通常可完成小样本微调;数据极小时 CPU 也慢速可行。
Q4:微调后的模型怎么保存和复用?训练框架会输出model.safetensors与 tokenizer 文件,组织成与当前仓库一致的目录结构即可(对照 config.json、tokenizer_config.json),部署入口可参考 handler.py 的推理逻辑。
✅ 八、总结:微调路线图速查
- 选样:从目标文集中挑 20–50 份代表性文档;
- 切行 + 白底化:按文本行切图,置于白底;
- 转录:逐行人工录入标准文本,划出验证集;
- 微调:加载基座模型,bf16、学习率 5e-5、权重衰减 0.01;
- 评估:验证集 CER 显著低于域外基线即达标;
- 部署:接入 HTRflow 管道,批量输出 ALTO/Page XML。
从 20 份样本到整卷档案自动转录,trocr-base-handwritten-hist-swe-2 让小样本微调成为历史手稿数字化的高性价比路径——动手试试吧!
- 人工智能
- 计算机视觉
- OCR
【免费下载链接】trocr-base-handwritten-hist-swe-2
相关推荐
TrOCR识别精度:文字识别任务准确率测试
TrOCR识别精度:文字识别任务准确率测试 引言:OCR技术的新范式 在数字化转型的浪潮中,光学字符识别(Optical Character Recogniti
人工智能大模型深度学习预训练微调NLP计算机视觉多模态语音DC-SDK 快速上手:四步跑通二三维一体 WebGIS 地图
DC SDK 快速上手:四步跑通二三维一体 WebGIS 地图 DC SDK 是基于 Cesium(开源的三维地球 JS 库)做的二三维一体 WebGis 应用
UmiJS 4 打包优化:快速解决 umi.js 过大的 3 个方法
UmiJS 4 打包优化:快速解决 umi.js 过大的 3 个方法 上周有同事上线了个项目,首页白屏好几秒。翻 dist 目录一看,罪魁祸首很明确:一个 2.
前端Web框架前端构建构建工具插件系统
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考