Présentation de DharmaOCR

DharmaOCR est un modèle d'OCR (reconnaissance optique de caractères) conçu spécifiquement pour le portugais brésilien. Il a été entraîné en deux étapes : une étape de fine-tuning supervisée et une étape d'optimisation de préférence directe (DPO). Cette dernière a permis au modèle d'apprendre à sélectionner la meilleure extraction possible en fonction des préférences comparatives entre les sorties concurrentes.

Fonctionnement de DharmaOCR

Le modèle a été entraîné sur une collection de fichiers en portugais provenant de différentes sources, formats et niveaux de complexité. L'étape de fine-tuning a aligné les poids du modèle sur le vocabulaire, la syntaxe et les structures de documents spécifiques du portugais brésilien. L'étape de DPO a enseigné au modèle à supprimer les modes de défaillance qui provoquent des sorties répétitives ou incohérentes, améliorant ainsi la fiabilité et la stabilité du modèle.

Comparaison avec les modèles récents

Les résultats de DharmaOCR ont été comparés à ceux de Mistral OCR4 et Unlimited-OCR, deux modèles récents qui ont attiré l'attention de la communauté de recherche. Les résultats ont montré que DharmaOCR surpasse ces modèles, avec un score de 0,925 contre 0,798 pour Mistral OCR4 et 0,7587 pour Unlimited-OCR. Cette différence est significative et montre que la spécialisation de DharmaOCR dans le portugais brésilien lui confère un avantage mesurable.

Implications et limites

Les résultats montrent que les modèles multilingues tendent à échouer sur les documents non triviaux en portugais, en particulier lorsqu'il s'agit de vocabulaire et de noms propres spécifiques au portugais brésilien. Les erreurs de transcription commises par Mistral OCR4 et Unlimited-OCR sur les documents de type ENEM (examen national de fin d'études secondaires au Brésil) sont significatives et montrent que la spécialisation de DharmaOCR est justifiée. Cependant, il est important de noter que les modèles récents ont apporté des améliorations significatives dans le domaine de l'OCR et que la comparaison avec DharmaOCR doit être considérée dans le contexte de l'évolution du domaine.

Exemple de code pour l'entraînement de DharmaOCR :
   # Entraînement en deux étapes
   # Étape 1 : fine-tuning supervisée
   model.fit(X_train, y_train, epochs=10, batch_size=32)
   # Étape 2 : optimisation de préférence directe (DPO)
   model.fit(X_train, y_train, epochs=10, batch_size=32, optimizer='adam')