Views
No views yet
datalab-to/surya-ocr-2
pour la transcription exacte de bulles de manga francophones recadrées.
Ce modèle transcrit une bulle à la fois ; il ne détecte pas les bulles et ne
renvoie pas de bounding boxes.| Split | Pages | Bulles |
|---|---|---|
| Train | 749 | 6 793 |
| Validation | 161 | 1 311 |
| Test held-out | 161 | 1 423 |
| Métrique | Résultat |
|---|---|
| CER | 0,451 % |
| WER | 1,656 % |
| Exact match | 90,65 % |
| Levenshtein moyen | 0,1595 caractère |
| Sorties vides | 0 / 1 423 |
| Hallucinations sur références vides | 0 |
| Limite de génération atteinte | 0 / 1 423 |
benchmark_test.json contient les métriques,
les tranches par longueur et les prédictions de chaque échantillon.1import torch
2from PIL import Image
3from transformers import AutoModelForImageTextToText, AutoProcessor
4
5model_id = "Remidesbois/surya-bubble-ocr-poneglyph"
6processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
7model = AutoModelForImageTextToText.from_pretrained(
8 model_id,
9 dtype=torch.bfloat16,
10 device_map="cuda",
11 trust_remote_code=True,
12).eval()
13
14image = Image.open("bulle.png").convert("RGB")
15messages = [{
16 "role": "user",
17 "content": [
18 {"type": "image", "image": "bulle.png"},
19 {
20 "type": "text",
21 "text": "Transcris exactement le texte visible dans cette bulle. Ne rajoute rien.",
22 },
23 ],
24}]
25prompt = processor.apply_chat_template(
26 messages,
27 add_generation_prompt=True,
28 tokenize=False,
29)
30inputs = processor(text=[prompt], images=[image], return_tensors="pt").to("cuda")
31
32with torch.inference_mode():
33 output_ids = model.generate(
34 **inputs,
35 max_new_tokens=256,
36 do_sample=False,
37 )
38
39prompt_tokens = inputs["input_ids"].shape[1]
40text = processor.batch_decode(
41 output_ids[:, prompt_tokens:],
42 skip_special_tokens=True,
43)[0].strip()
44print(text)docker_scripts/finetune_surya_bubble_ocr du projet Poneglyph.openrail est héritée du modèle de base.