Trocr Base Handwritten Hist Swe 2
模型简介
模型特点
模型能力
使用案例
🚀 瑞典雄狮自由模型(Swedish Lion Libre)
瑞典雄狮自由模型是一款用于识别历史瑞典语手写文字的模型,由瑞典国家档案馆联合斯德哥尔摩市档案馆、芬兰国家档案馆和耶姆特兰古文字协会共同开发。该模型基于1600 - 1900年间的瑞典手写文字数据进行训练。
🚀 快速开始
单文本行识别
使用以下代码开始使用该模型,但请记住输入的图像必须是单文本行:
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
import requests
img_path = 'path/to/image'
image = Image.open(img_path)
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained('Riksarkivet/trocr-base-handwritten-hist-swe-2')
pixel_values = processor(images=image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
整页识别
如果您想转录整页内容,可以考虑使用HTRflow。这是一个由瑞典国家档案馆开发的用于简化大规模和小规模手写文字识别(HTR)/光学字符识别(OCR)项目的包。您需要安装该包,编写一个管道配置yaml文件,在其中通过Hugging Face ID指定要使用的模型,添加预处理或后处理步骤,然后使用htrflow pipeline <path/to/yaml> <path/to/image/images>
运行管道。一个用于转录整页内容的.yaml文件示例如下:
# 用于运行文本的演示管道
steps:
# 区域分割
- step: Segmentation
settings:
model: yolo
model_settings:
model: Riksarkivet/yolov9-regions-1
generation_settings:
conf: 0.3
batch_size: 32
# 行分割
- step: Segmentation
settings:
model: yolo
model_settings:
model: Riksarkivet/yolov9-lines-within-regions-1
generation_settings:
conf: 0.3
batch_size: 16
- step: TextRecognition
settings:
model: WordLevelTrocr
model_settings:
model: Riksarkivet/trocr-base-handwritten-hist-swe-2
generation_settings:
batch_size: 16
num_beams: 1
- step: ReadingOrderMarginalia
settings:
two_page: always
- step: RemoveLowTextConfidencePages
settings:
threshold: 0.95
- step: RemoveLowTextConfidenceLines
settings:
threshold: 0.95
# 导出为Alto和Page XML
- step: Export
settings:
dest: outputs/new_models/alto
format: alto
- step: Export
settings:
dest: outputs/new_models/page
format: page
# 设置标签格式为regionX_lineY_wordZ
labels:
level_labels:
- region
- line
- word
sep: _
template: "{label}{number}"
有关特定步骤和自定义的更多说明,请参阅HTRflow包的文档。
✨ 主要特性
- 专为历史瑞典语手写文字识别而开发。
- 基于TrOCR基础手写模型进行微调。
- 可用于单文本行和整页内容的识别。
📦 安装指南
文档未提及具体安装命令,故跳过此章节。
💻 使用示例
基础用法
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
import requests
img_path = 'path/to/image'
image = Image.open(img_path)
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained('Riksarkivet/trocr-base-handwritten-hist-swe-2')
pixel_values = processor(images=image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
高级用法
使用HTRflow进行整页内容转录:
# 用于运行文本的演示管道
steps:
# 区域分割
- step: Segmentation
settings:
model: yolo
model_settings:
model: Riksarkivet/yolov9-regions-1
generation_settings:
conf: 0.3
batch_size: 32
# 行分割
- step: Segmentation
settings:
model: yolo
model_settings:
model: Riksarkivet/yolov9-lines-within-regions-1
generation_settings:
conf: 0.3
batch_size: 16
- step: TextRecognition
settings:
model: WordLevelTrocr
model_settings:
model: Riksarkivet/trocr-base-handwritten-hist-swe-2
generation_settings:
batch_size: 16
num_beams: 1
- step: ReadingOrderMarginalia
settings:
two_page: always
- step: RemoveLowTextConfidencePages
settings:
threshold: 0.95
- step: RemoveLowTextConfidenceLines
settings:
threshold: 0.95
# 导出为Alto和Page XML
- step: Export
settings:
dest: outputs/new_models/alto
format: alto
- step: Export
settings:
dest: outputs/new_models/page
format: page
# 设置标签格式为regionX_lineY_wordZ
labels:
level_labels:
- region
- line
- word
sep: _
template: "{label}{number}"
📚 详细文档
模型详情
模型描述
属性 | 详情 |
---|---|
开发者 | 瑞典国家档案馆 |
模型类型 | TrOCR基础手写模型 |
语言(NLP) | 历史瑞典语手写文字 |
许可证 | apache - 2.0 |
微调基础模型 | trocr - base - handwritten |
用途
直接使用
该模型可以在不进行微调的情况下用于所有手写文字识别,但在其训练所用的手写文字类型(1600 - 1900年间的瑞典手写文字)上表现最佳。具体的测试和评估结果见下文。
下游使用
该模型可以在其他类型的手写文字上进行微调。如果您计划使用它来转录模型适用范围内但未包含在训练数据中的特定材料,例如有大量17世纪的信件集合,您可以在少量手动转录的领域内数据(例如20 - 50封信)上进行微调,然后使用该模型转录整个集合。
超出适用范围的使用
该模型在未进行调整的情况下,对于非瑞典语的其他语言以及印刷文本的识别效果不佳。
训练详情
训练数据
由于并非所有训练数据均由开发者创建,因此无法公开发布所有训练数据。以下是可以公开发布的数据集链接:
- 哥德堡警察厅1850 - 1900
- 军事法庭判决书
- 斯维亚高等法院
- 矿业委员会关系及信件
- 自由时代委员会文件
- 卡尔·弗雷德里克·帕尔曼旅行日记
- 巫术委员会
- 约塔高等法院
- 诺拉矿主手写文字
- 阿尔沃斯堡通行证
- 延雪平市政厅法院及治安官
训练过程
预处理
将文本行多边形进行遮罩处理,并放置在白色背景上,其尺寸由多边形的边界框决定。
训练超参数
请参阅模型仓库中的config.json文件。
- 训练机制:bf16
- 学习率:5e - 5
- 权重衰减:0.01
评估
领域内评估数据(按字符错误率排序)
这些是从与训练集相同的档案馆获取的评估数据上的字符和单词错误率。当然,评估样本不包含在训练数据中。训练集中包含的样本数量可以表明通过在模型范围内的特定材料上进行微调,模型的性能提升情况。
数据集 | 单词错误率(WER) | 字符错误率(CER) | 训练行数 | 评估行数 |
---|---|---|---|---|
krigshovrattens_dombocker_lines | 0.0330 | 0.0075 | 16,887 | 1,877 |
stockholms_stadsarkiv_allmana_barnhuset_1700_lines | 0.0647 | 0.0120 | 565 | 142 |
stockholms_stadsarkiv_blandat_2_1700_lines | 0.0807 | 0.0170 | 25,024 | 2,781 |
goteborgs_poliskammare_fore_1900_lines | 0.0800 | 0.0187 | 339,297 | 17,858 |
stockholms_stadsarkiv_stockholms_domkapitel_1700_lines | 0.0948 | 0.0187 | 96,409 | 5,075 |
stockholms_stadsarkiv_politikollegiet_1700_lines | 0.1108 | 0.0225 | 120,238 | 6,329 |
bergskollegium_relationer_och_skrivelser_lines | 0.1056 | 0.0253 | 62,201 | 6,912 |
stockholms_stadsarkiv_stadens_kamnarsratt_1700_lines | 0.1252 | 0.0278 | 38,330 | 4,259 |
svea_hovratt_lines | 0.1484 | 0.0313 | 36,884 | 4,099 |
stockholms_stadsarkiv_stockholms_domkapitel_1800_lines | 0.1400 | 0.0324 | 2,070 | 230 |
stockholms_stadsarkiv_handelskollegiet_1600_1700_lines | 0.1785 | 0.0350 | 9,201 | 1,023 |
frihetstidens_utskottshandlingar_lines | 0.1481 | 0.0362 | 13,490 | 1,499 |
stockholms_stadsarkiv_kungliga_hovkonsistoriet_1700_lines | 0.1541 | 0.0364 | 5,753 | 640 |
national_archives_finland_court_records_lines | 0.1607 | 0.0368 | 147,456 | 7,761 |
stockholms_stadsarkiv_blandat_1600_1700_lines | 0.1505 | 0.0379 | 16,137 | 1,794 |
stockholms_stadsarkiv_blandat_3_1600_lines | 0.1633 | 0.0400 | 43,142 | 4,794 |
stockholms_stadsarkiv_norra_forstadens_kamnarsratt_1600_1700_lines | 0.1755 | 0.0463 | 18,474 | 2,053 |
carl_fredrik_pahlmans_resejournaler_lines | 0.1768 | 0.0482 | 7,081 | 787 |
stockholms_stadsarkiv_sollentuna_haradsratt_1700_1800_lines | 0.1921 | 0.0505 | 19,096 | 2,122 |
stockholms_stadsarkiv_byggningskollegium_1600_lines | 0.2262 | 0.0514 | 3,104 | 345 |
ra_enstaka_sidor_lines | 0.1991 | 0.0538 | 5,078 | 565 |
trolldomskommissionen_lines | 0.2321 | 0.0600 | 33,498 | 3,722 |
stockholms_stadsarkiv_stockholms_domkapitel_1600_lines | 0.2170 | 0.0607 | 11,619 | 1,292 |
stockholms_stadsarkiv_botkyrka_kyrkoarkiv_1600_1800_lines | 0.2548 | 0.0627 | 3,617 | 402 |
gota_hovratt_lines | 0.2450 | 0.0630 | 2,421 | 269 |
bergmastaren_i_nora_htr_lines | 0.2558 | 0.0709 | 7,916 | 880 |
bergskollegium_advokatfiskalkontoret_lines | 0.2906 | 0.0722 | 2,411 | 268 |
jl_fornsallskap_jamtlands_domsaga_lines | 0.2585 | 0.0732 | 60,544 | 6,728 |
alvsborgs_losen_lines | 0.1896 | 0.0806 | 5,632 | 626 |
jonkopings_radhusratt_och_magistrat_lines | 0.2864 | 0.0853 | 1,179 | 131 |
national_archives_finland_letters_recipes_lines | 0.3857 | 0.1360 | 651 | 163 |
测试数据
领域外测试数据(按字符错误率排序)
这些测试集均来自未包含在训练数据中的档案馆。因此,如果直接使用该模型处理模型时间范围内的任何连续文本文件,这些结果就是您可以预期的。整个测试套件可在此处获取:手写文字识别测试套件
数据集 | 单词错误率(WER) | 字符错误率(CER) | 评估行数 |
---|---|---|---|
1792_R0002231_eval_lines | 0.1190 | 0.0250 | 501 |
1794 - 1795_A0068546_eval_lines | 0.1503 | 0.0303 | 510 |
1775 - 1786_A0068551_eval_lines | 0.2203 | 0.0543 | 525 |
1841_Z0000017_eval_lines | 0.2247 | 0.0555 | 470 |
1690_A0066756_eval_lines | 0.2571 | 0.0611 | 249 |
1716_A0017151_eval_lines | 0.2517 | 0.0650 | 558 |
1824_H0000743_eval_lines | 0.2684 | 0.0674 | 260 |
1699 - 1700_C0113233_eval_lines | 0.2713 | 0.0691 | 394 |
1845 - 1857_B0000011_eval_lines | 0.2546 | 0.0706 | 153 |
1812_A0069332_eval_lines | 0.2868 | 0.0793 | 69 |
1659 - 1674_R0000568_eval_lines | 0.3278 | 0.0886 | 304 |
1755 - 1756_C0112394_eval_lines | 0.3440 | 0.0918 | 248 |
1723_H0000374_eval_lines | 0.3105 | 0.1140 | 378 |
1887 - 1892_A0002409_eval_lines | 0.3670 | 0.1297 | 784 |
1679_R0002397_eval_lines | 0.4768 | 0.1422 | 88 |
1800_C0101725_eval_lines | 0.4459 | 0.1767 | 37 |
1871_K0017448_eval_lines | 0.4504 | 0.1945 | 331 |
1654_R0001308_eval_lines | 0.5200 | 0.2179 | 199 |
评估指标
字符错误率(CER)
字符错误率(CER)是一种用于评估手写文字识别(HTR)系统性能的指标,通过在字符级别上将识别文本与参考(真实)文本进行比较来计算。 计算公式如下: $$ CER = \frac{S + D + I}{N} $$ 其中:
- ( S ) = 替换次数(错误字符数)
- ( D ) = 删除次数(缺失字符数)
- ( I ) = 插入次数(多余字符数)
- ( N ) = 参考文本中的字符总数
较低的CER表示更好的识别准确性。
单词错误率(WER)
单词错误率(WER)是一种用于在单词级别评估HTR系统准确性的指标,通过将识别文本与参考文本进行比较来计算。 计算公式如下: $$ WER = \frac{S + D + I}{N} $$ 其中:
- ( S ) = 替换次数(错误单词数)
- ( D ) = 删除次数(缺失单词数)
- ( I ) = 插入次数(多余单词数)
- ( N ) = 参考文本中的单词总数
与CER类似,较低的WER表示更好的单词级别准确性。
🔧 技术细节
模型架构
请参阅模型仓库中的config.json文件。
📄 许可证
本模型使用的许可证为apache - 2.0。
📖 引用











