Atelier Arkindex 2025
===
# Application de modèles d'IA pour le traitement de documents numérisés
[Présentation PowerPoint "Traitement automatique de documents numérisés avec Arkindex"](https://teklia.sharepoint.com/:p:/s/publications-communications/EYTivRpt5UVLjx1An-NwZlQBd4lVlF7lhAnkFJyWsZi5tA?e=CzTIRA)
## Introduction
Dans le cadre du consorium PictorIA, TEKLIA développe et met à disposition la plateforme open-source Arkindex afin de permettre aux professionels du secteur patrimonial et culturel d'accéder aux technologie d'IA les plus récentes. Vous pouvez nous aider à développer un service au plus près des besoins des utilisateurs en nous laissant des commentaires ou propositions d'amélioration ici : https://notes.teklia.com/motIk0xlRJ6CCPNkQ5IquQ?both#
## Documentation et liens :
* Instance Arkindex PictorIA hébergée par Huma-Num : https://pictoria-doc.huma-num.fr ou demo.arkindex.org
* Le forum TEKLIA pour poser des questions et trouver des réponses : https://support.teklia.com
* Documentation arkindex : https://doc.arkindex.org/overview/
* Importer des documents ou un manifest IIIf : https://doc.arkindex.org/howto/upload/
* Créer un processus de traitement (inference) : https://doc.arkindex.org/howto/run-process/
* Les vidéos du tutoriel sur [Youtube](https://www.youtube.com/watch?v=Ij5bn5WT7lw&list=PLzBiN__3ysJLk2FJCN1TgUHPCMIRlSRRs)
## Inscription
Pour réaliser l'atelier, vous devez créer un compte sur l'instance PictorIA : https://pictoria-doc.huma-num.fr
- vous recevrez un email pour valider votre inscription
- vous devez demander à un administrateur de vous promouvoir comme contributeur dans le groupe "Free Registration" pour pouvoir exécuter des traitements.
## Atelier
:::warning
**Attention** :
Gallica limite maintenance l'accès à ses serveurs IIIF, pour éviter les erreurs, il vaut mieux utiliser les pdf ou images
:::
### [Simple] Segmentation d'objets : détection de photographies avec le modèle YOLO
[YOLO](https://docs.ultralytics.com/) est un modèle open-source de classification, detection et segmentation d'objets dans les images. Cette librarie est très performante, tant sur le plan de la qualité des prédictions que sur les temps de traitement et ne nécessite pas beaucoup d'exemples pour entrainer des modèles. YOLO est intégré dans Arkindex pour l'entrainement et l'inférence mais vous pouvez aussi entrainer un modèle vous-même (à l'extérieur d'Arkindex) et [l'importer dans Arkindex](https://cli.arkindex.org/models/) pour traiter un grand corpus de documents.
- Importer un document Gallica grâce à son manifest :
- Document : https://gallica.bnf.fr/ark:/12148/btv1b10500740b ou https://gallica.bnf.fr/ark:/12148/btv1b8432796t
- Manifest IIIF : https://gallica.bnf.fr/iiif/ark:/12148/btv1b10500740b/manifest.json ou https://gallica.bnf.fr/iiif/ark:/12148/btv1b8432796t/manifest.json
Vidéo : [Importer un manifest IIIF](https://www.youtube.com/watch?v=Ij5bn5WT7lw)
- Créer un processus de traitement (inference) :
- sur les pages
- en utilisant le worker "YOLO Segmenter"
- avec le modèle "YOLO | HikarIA | Segmentation Photograph"
Vidéo : [Détecter les photographies avec Yolo](https://www.youtube.com/watch?v=wUXHRMsZ5AI)
- Evaluer la segmentation en passant en revue les photographies détectées
- avec la barre de filtrage, afficher type=photograph recursive=yes


### [Simple] Reconnaissance d'écriture manuscrite avec l'ATR Microsoft
Microsoft propose une API de reconnaissance de documents imprimés et manuscrits multilingue ([Microsoft OCR](https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/overview-ocr)). Le système fonctionne bien pour des documents récents (à partir de fin XIXème).
- Importer la lettre manuscrite https://gallica.bnf.fr/ark:/12148/btv1b55001486j.image
- Créer un processus de traitement (inference) :
- sur les 2 pages
- en utilisant le worker "Microsoft OCR"
Le service procède à une détection de ligne, suivie d'une reconnaissance d'écriture. La transcription est ajoutée sur les elements "Text line".
Vidéo : [Reconnaissance d'écriture manuscrite avec Microsoft OCR](https://www.youtube.com/watch?v=Z1im7TKwyoc)
### [Moyen] Extraction d'informations dans un document imprimé avec un LLM (OpenAI)
Les LLM (Large Language Models) sont des modèles pré-entrainés capables de réaliser n'importe quelle tâche à partir d'une description en langage naturel. Certains LLM sont aussi capables d'analyser des images de documents pour transcrire le texte et extraire des informations. Les LLMs les plus puissants sont généralement les LLMs commerciaux accessibles par API. Arkindex permet de faire des requêtes en utilisant ces API commerciales. Il est nécessaire d'obtenir une clé d'API associée à un moyen de paiement.
- Importer un catalogue de vente à partir de son manifest sur Gallica :
- Document : https://gallica.bnf.fr/ark:/12148/bpt6k6484869c.texteImage
- Manifest IIIF : https://gallica.bnf.fr/iiif/ark:/12148/bpt6k6484869c/manifest.jsonmanifest.json
- Extraire une image et faire des tests de prompt avec chat.openai.com
- Créer un processus de traitement (inference) :
- sur une page sélectionnée
- en utilisant le worker "LLM OpenAI GPT "
- créer une nouvelle configuration "Catalogue de vente" avec le prompt de chatGPT. Ajouter l'image dans le prompt :
```voici l'image $IMAGE```
Vidéo : [Extraction d'information dans un document imprimé avec ChatGPT](https://www.youtube.com/watch?v=cXeLv7Jd5sk)
### [Moyen] Reconnaissance d'écriture imprimée avec un modèle PyLaia sur mesure
[PyLaia](https://gitlab.teklia.com/atr/pylaia/) est une librairie de reconnaissance d'écriture manuscrite et imprimée maintenue par TEKLIA depuis 2022. PyLaia est intégré dans Arkindex pour l'entrainement et l'inférence mais vous pouvez aussi entrainer un modèle vous-même (à l'extérieur d'Arkindex) et [l'importer dans Arkindex](https://cli.arkindex.org/models/) pour traiter un grand corpus de documents.
Dans cet exemple, nous allons lancer deux traitements sur les mêmes documents : un traitement avec tesseract qui réaliser la détection de ligne et la transcription; un traitement avec pyLaia qui utilise les lignes précédemment détectées et réalise une transcription.
- Importer le document https://gallica.bnf.fr/ark:/12148/bpt6k15109171/
- Créer un processus de traitement (inference) Tesseract:
- sur pages
- en utilisant le worker "Tesseract Inference"
- avec le modèle "Tesseract (fra) | French"
- sur la ferme de serveur "MSH Clermont"
- analyser le résultat
- Créer un processus de traitement (inference) PyLaia :
- sur les pages du même corpus
- puis le worker "PyLaia Generic" avec le modèle "PyLaia | French Printed XVI-XVII"
Chaque "Text line" comporte ainsi 2 transcriptions : une réalisée avec Tesseract, une réalisée avec pyLaiai.
Les traitements peuvent aussi être chainés lors de la configuration du traitement.
Vidéo : [Reconnaissance d'écriture imprimée avec PyLaia](https://youtu.be/5GqtltdvCEo)
### [Simple] Reconnaissance d'écriture imprimée avec l'OCR Tesseract (modèle générique)
[Tesseract](https://github.com/tesseract-ocr/tesseract) est un OCR open-source efficace pour des documents simples et modernes. Il supporte nativement plus de [100 langues](https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html)
- Importer le document https://gallica.bnf.fr/ark:/12148/bpt6k15109171/
- Créer un processus de traitement (inference) :
- sur pages
- en utilisant le worker "Tesseract Inference"
- avec le modèle "Tesseract (fra) | French"
Vidéo : [Reconnaissance d'écriture avec Tesseract](https://www.youtube.com/watch?v=rnhGwmbKcgo&list=PLzBiN__3ysJLk2FJCN1TgUHPCMIRlSRRs&index=3)
### Extraction d'entités nommées avec spaCy
[spaCy](https://spacy.io/) est une librairie open-source pour l'analyse morpho-syntaxique et la detection d'entités nommées efficace et facilement configurable. Elle comporte [24 modèles](https://spacy.io/models) pré-entrainés. spaCy est intégré dans Arkindex pour l'entrainement et l'inférence mais vous pouvez aussi entrainer un modèle vous-même (à l'extérieur d'Arkindex) et [l'importer dans Arkindex](https://cli.arkindex.org/models/) pour traiter un grand corpus de documents.
- Importer le document https://gallica.bnf.fr/iiif/ark:/12148/bpt6k3348465m/manifest.json et effectuer une reconnaissance d'écriture imprimée avec tesseract et un modèle français
- - Créer un processus de traitement (inference) :
- sur pages
- en utilisant le worker "spaCy Remote model"
- ajouter la configuration "French Paragraph"
Vidéo : [Reconnaissance d'entités nommées avec spaCy](https://www.youtube.com/watch?v=m9s5WQvHNJQ)
