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 :
- Redressement (OpenCV) : Correction de perspective avec une stratégie de "Fallback Padding" pour les scans difficiles (CamScanner).
- Segmentation (YOLOv8) : Détection des zones de texte manuscrites.
- OCR (Ce modèle) : Transcription du texte extrait.
- 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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support