--- language: fr license: apache-2.0 tags: - trocr - optical-character-recognition - handwritten - medical-records - senegal datasets: - Artemis-IA/IAMRIMES metrics: - cer - wer --- # 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 ```python 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)