Remidesbois/LightonOCR-2-1b-poneglyph

Model

0

stars

23

commits

1

repos using this model

1

linked in READMEs

Jul 31, 2026

updated

conversational
endpoints_compatible
fine-tuned
french
image-text-to-text
lighton-ocr
lighton_ocr
manga
ocr
safetensors
transformers
vision
Browse cluster: Manga OCR and Translation

README

LightOnOCR-2-1B Poneglyph

Version fine-tunée de lightonai/LightOnOCR-2-1B-base, spécialisée dans la transcription OCR de bulles de manga françaises recadrées.

Ce modèle est entraîné directement depuis le modèle de base. Il ne reprend pas les poids d’un ancien fine-tune Poneglyph.

Résultats

Évaluation held-out sur 1 128 crops, avec une séparation stricte par page :

MétriqueRésultat
CER0,329 %
WER1,200 %
Exact match93,00 %
Blank rate0 %
Multiline rate0 %
Token-limit rate0 %

Les détails complets, les erreurs les plus difficiles et la comparaison au modèle publié sont disponibles dans benchmark_test.json. Le gate de qualité est conservé dans quality_gate.json.

Utilisation

from PIL import Image
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch

model_id = "Remidesbois/LightonOCR-2-1b-poneglyph"
processor = AutoProcessor.from_pretrained(model_id, fix_mistral_regex=True)
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

image = Image.open("bubble.png").convert("RGB")
prompt = "Transcription OCR (uniquement le texte de la bulle, pas de suite) :"
messages = [{
    "role": "user",
    "content": [{"type": "image"}, {"type": "text", "text": prompt}],
}]
text = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device)
with torch.inference_mode():
    output = model.generate(**inputs, max_new_tokens=128, do_sample=False)
print(processor.batch_decode(output[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)[0].strip())

Pour une RTX 3090, torch.bfloat16 est recommandé. Le modèle attend principalement un crop de bulle unique ; la détection et le découpage des bulles doivent être effectués en amont.

Fine-tuning

La recette rtx3090-base-dora-v5 utilise un entraînement LoRA/DoRA depuis le modèle de base : rang 65, alpha 130, cibles attention/MLP et lm_head, BF16, SDPA, AdamW fusionné, longueur d’image maximale 700 px et longueur de génération maximale 128 tokens. Les transcriptions d’un seul caractère sont conservées.

Les paramètres exacts sont archivés dans training_recipe.json. Les fichiers de benchmark sont fournis pour rendre les chiffres reproductibles.

Limites

Les métriques sont mesurées sur le jeu de test du corpus Poneglyph et ne constituent pas une garantie de performance sur d’autres mangas, langues, polices ou mises en page. Le modèle ne réalise pas la détection de bulles et ne fournit pas de bounding boxes.

Contributors

Remidesbois

23 commits

Remidesbois/LightonOCR-2-1b-poneglyph

Model

0

stars

23

commits

1

repos using this model

1

linked in READMEs

Jul 31, 2026

updated

conversational
endpoints_compatible
fine-tuned
french
image-text-to-text
lighton-ocr
lighton_ocr
manga
ocr
safetensors
transformers
vision
Browse cluster: Manga OCR and Translation

README

LightOnOCR-2-1B Poneglyph

Version fine-tunée de lightonai/LightOnOCR-2-1B-base, spécialisée dans la transcription OCR de bulles de manga françaises recadrées.

Ce modèle est entraîné directement depuis le modèle de base. Il ne reprend pas les poids d’un ancien fine-tune Poneglyph.

Résultats

Évaluation held-out sur 1 128 crops, avec une séparation stricte par page :

MétriqueRésultat
CER0,329 %
WER1,200 %
Exact match93,00 %
Blank rate0 %
Multiline rate0 %
Token-limit rate0 %

Les détails complets, les erreurs les plus difficiles et la comparaison au modèle publié sont disponibles dans benchmark_test.json. Le gate de qualité est conservé dans quality_gate.json.

Utilisation

from PIL import Image
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch

model_id = "Remidesbois/LightonOCR-2-1b-poneglyph"
processor = AutoProcessor.from_pretrained(model_id, fix_mistral_regex=True)
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

image = Image.open("bubble.png").convert("RGB")
prompt = "Transcription OCR (uniquement le texte de la bulle, pas de suite) :"
messages = [{
    "role": "user",
    "content": [{"type": "image"}, {"type": "text", "text": prompt}],
}]
text = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device)
with torch.inference_mode():
    output = model.generate(**inputs, max_new_tokens=128, do_sample=False)
print(processor.batch_decode(output[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)[0].strip())

Pour une RTX 3090, torch.bfloat16 est recommandé. Le modèle attend principalement un crop de bulle unique ; la détection et le découpage des bulles doivent être effectués en amont.

Fine-tuning

La recette rtx3090-base-dora-v5 utilise un entraînement LoRA/DoRA depuis le modèle de base : rang 65, alpha 130, cibles attention/MLP et lm_head, BF16, SDPA, AdamW fusionné, longueur d’image maximale 700 px et longueur de génération maximale 128 tokens. Les transcriptions d’un seul caractère sont conservées.

Les paramètres exacts sont archivés dans training_recipe.json. Les fichiers de benchmark sont fournis pour rendre les chiffres reproductibles.

Limites

Les métriques sont mesurées sur le jeu de test du corpus Poneglyph et ne constituent pas une garantie de performance sur d’autres mangas, langues, polices ou mises en page. Le modèle ne réalise pas la détection de bulles et ne fournit pas de bounding boxes.

Contributors

Remidesbois

23 commits