TrOCR pour l'Extraction de Formulaires d'Autopsie Verbale

📝 Description du Modèle

Ce modèle est une version fine-tunée de microsoft/trocr-base-handwritten optimisée pour la lecture de documents manuscrits dans le cadre d'un projet de Master en Informatique au Sénégal. Il fait partie d'un pipeline complet visant à numériser les formulaires d'autopsie verbale pour les services de santé publique.

🚀 Pipeline d'Utilisation

Ce modèle n'est pas utilisé seul, il intervient dans un flux complexe :

  1. Redressement (OpenCV) : Correction de perspective avec une stratégie de "Fallback Padding" pour les scans difficiles (CamScanner).
  2. Segmentation (YOLOv8) : Détection des zones de texte manuscrites.
  3. OCR (Ce modèle) : Transcription du texte extrait.
  4. NER (LayoutLMv3) : Classification des entités selon 10 classes métiers (IDENTITÉ, DATE, SYMPTÔME, etc.) via le format BIO.

🧠 Stratégie d'Entraînement

  • Dataset de base : IAMRIMES (manuscrit français/latin).
  • Architecture : Vision Transformer (Encoder) + GPT-2 (Decoder).
  • Optimisation : Fine-tuning avec perte de padding ignorée (-100) pour une meilleure précision sur les termes médicaux et administratifs.

📊 Classes de Sortie (Destinées au NER)

Le texte extrait par ce modèle est ensuite traité pour identifier les entités suivantes :

  • IDENTITE (Nom, Enquêteur, Sexe)
  • DATE (Naissance, Décès, Visite)
  • SYMPTOME (Fièvre, Toux, Diarrhée)
  • DIAGNOSTIC (Cause déclarée, Code CIM-10)
  • ... (10 classes au total)

⚠️ Limitations

Le modèle est optimisé pour les formulaires avec un contraste suffisant. Pour les documents dont les bords sont coupés, il est impératif d'utiliser le script de Padding noir avant la détection des coins pour garantir un redressement parfait.

🛠 Utilisation

from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

processor = TrOCRProcessor.from_pretrained("ton-pseudo/trocr-autopsie-verbale-senegal")
model = VisionEncoderDecoderModel.from_pretrained("ton-pseudo/trocr-autopsie-verbale-senegal")

image = Image.open("chemin_vers_crop_manuscrit.jpg").convert("RGB")
pixel_values = processor(image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
Downloads last month
32
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train morlayecis0003/trocr-autopsie-verbale-senegal