Downloads · 30 days
9
11% of all-time downloads
lapislazuli666/kraken-htr-medieval-french
kraken-htr-medieval-french is a image-to-text model from lapislazuli666. Use it when you need a caption or text from an image. It is set up for kraken. The card lists the license as cc-by-4.0.
Modèle de reconnaissance automatique d'écriture manuscrite (HTR) fine-tuné pour les manuscrits gothiques français médiévaux. CER = 6,0 % sur le split de validation (seuil d'excellence).
Downloads · 30 days
9
11% of all-time downloads
All-time downloads
84
Public
Repo size
23 MB
Likes
0
Public
Click a slice to open those files.
.mlmodel23 MB · 100%
From the Hugging Face model README
Modèle de reconnaissance automatique d'écriture manuscrite (HTR) fine-tuné pour les manuscrits gothiques français médiévaux. CER = 6,0 % sur le split de validation (seuil d'excellence).
Ce modèle est un réseau CNN+LSTM+CTC entraîné avec Kraken pour transcrire des manuscrits en écriture gothique textualis (français médiéval, XIIIe–XVe siècle). Il a été fine-tuné à partir du modèle pré-entraîné cremma-medieval sur le corpus CREMMA Médiéval.
| Métrique | Valeur |
|---|---|
| CER (ligne, validation) | 6,0 % |
| CER (manuscrit non vu) | 15,2 % |
| Accuracy Kraken | 0,848 |
| WER (ligne) | ~18 % |
Le CER de 15,2 % est mesuré sur un manuscrit complet non vu à l'entraînement (split par manuscrit), reflétant la performance réelle en conditions d'utilisation.
| Modèle | CER (ligne) | CER (manuscrit non vu) | Statut |
|---|---|---|---|
| Kraken cremma-medieval (zero-shot) | 32,6 % | 32,6 % | Baseline |
| TrOCR Base (zero-shot) | 67,9 % | 67,9 % | Baseline |
| TrOCR + LoRA r=8 (fine-tuné) | 15,3 % | 33,0 % | Validation |
| Ce modèle (Kraken fine-tuné 12 epochs) | 6,0 % | 15,2 % | 🏆 Excellence |
| Epoch | Accuracy | CER (val) | CER (manuscrit non vu) |
|---|---|---|---|
| 0 (zero-shot) | 0,674 | 32,6 % | 32,6 % |
| 1 | 0,816 | 18,4 % | — |
| 3 | 0,835 | 16,5 % | — |
| 9 | 0,838 | 16,2 % | — |
| 12 (best) | 0,848 | 6,0 % | 15,2 % |
Les images proviennent de Gallica (BnF) via le protocole IIIF :
| Paramètre | Valeur |
|---|---|
| Framework | Kraken 4.x |
| Architecture | VGSL (CNN + LSTM + CTC) |
| Couches | Conv×4 → MaxPool×3 → BiLSTM×3 → Linear |
| Paramètres | ~4,0 M |
| Entrée | Image de ligne, niveaux de gris, hauteur normalisée 120px |
| Sortie | Séquence de caractères (alphabet médiéval étendu) |
| Loss | CTC (Connectionist Temporal Classification) |
| Paramètre | Valeur |
|---|---|
| Plateforme | Kaggle (GPU T4 16 GB) |
| Epochs | 12 |
| Learning rate | 1e-4 |
| Batch size | 16 |
| Modèle de base | cremma-medieval (HTR-United) |
| Augmentation | Rotation ±2°, bruit gaussien |
| Seed | 42 |
| Temps d'entraînement | ~4h |
pip install kraken
# Segmentation + transcription
kraken -i image.jpg output.txt segment -bl ocr -m kraken_final_best.mlmodel
from kraken import blla, rpred
from kraken.lib import vgsl
from PIL import Image
# Charger le modèle
model = vgsl.TorchVGSLModel.load_model('kraken_final_best.mlmodel')
# Charger et segmenter l'image
img = Image.open('manuscript_page.jpg')
baseline_seg = blla.segment(img)
# Transcrire
pred = rpred.rpred(model, img, baseline_seg)
for record in pred:
print(record.prediction)
# Prétraitement
python run_pipeline.py preprocess --input data/raw/ --output data/preprocessed/
# Segmentation Kraken BLLA
python run_pipeline.py segment --input data/preprocessed/ --output segmentations/
# Transcription
python run_pipeline.py transcribe --model kraken \
--model-path models/kraken_final_best.mlmodel \
--input segmentations/ --output results/
Le modèle reconnaît les caractères suivants :
@misc{ouaraz2026kraken-medieval-french,
title={Pipeline HTR pour Manuscrits Médiévaux Français (XIIIe–XVe siècle)},
author={Asmaa, Sanaa, Ayoub, Amine},
year={2026},
institution={HETIC — Master Data \& Intelligence Artificielle},
note={Projet MD5, Module Vision par Ordinateur}
}