Étapes préparatoires
- Ouvrez l’activité “Sick Note DE” dans l’Éditeur d’activité.
- Sélectionnez l’un des documents de l’ensemble.
- Assurez-vous que le mode avancé des propriétés de l’élément est activé. Pour activer ou désactiver ce mode, cliquez sur l’icône dans le volet Propriétés.
- Tous les documents importés ont été préreconnus, et il est utile de voir quels objets ont été trouvés sur l’image. Cliquez sur l’icône. Si vous ne voyez pas cette icône en raison de la taille de votre écran, cliquez sur l’icône et sélectionnez Mots reconnus. Les objets correspondants seront mis en évidence sur l’image du document. Vous pouvez basculer à tout moment entre différents types d’objets mis en évidence. Par exemple, passer à Lignes reconnues peut être utile pour repérer des paragraphes, et passer à Séparateurs facilitera la configuration d’un élément de recherche Separator.
- Si un élément de recherche se situe en dehors de la zone de recherche, il ne sera pas trouvé. Activez l’option Afficher la zone de recherche dans le menu contextuel de l’image du document. La zone de recherche de chaque élément sera surlignée en vert lorsque vous évaluerez les résultats de correspondance.
Extraction des données du patient
- Cliquez sur Create Element et sélectionnez l’élément Group dans la liste déroulante. Renommez-le “PatientDataArea”.
- Un nouvel élément de recherche de type groupe est, par défaut, défini comme requis. Si un élément requis n’est pas trouvé, l’Activity Editor rencontre une erreur et la mise en correspondance est interrompue. Ce fonctionnement permet d’ignorer des activités si elles ne sont pas adaptées à un document donné. Toutefois, dans ce didacticiel, nous créons une activité pour extraire des données de tous les documents entrants ; nous souhaitons donc que le groupe soit facultatif. Dans la section Under what conditions, définissez Element is sur Optional.
- Nous voulons extraire le paragraphe qui contient le nom et l’adresse du patient. Dans les documents en allemand, le paragraphe recherché se trouve toujours dans le champ portant l’étiquette “Name, Vorname … ”. Nous devons repérer ce texte dans le document et l’utiliser comme point d’ancrage pour rechercher les données à extraire.
a. Les mots-clés peuvent être détectés à l’aide de l’élément de recherche Static Text. Cliquez sur Create Element et sélectionnez l’élément Static Text dans la liste déroulante. Renommez-le “kwPatientTitle”.
b. Saisissez le texte “Name, Vorname” dans le champ Text to find du volet Properties.
c. Cliquez sur Match. Une fois le traitement terminé, vous verrez le Tree of Hypotheses sous le document. Assurez-vous que Advanced Designer a bien trouvé le texte statique souhaité. Un point vert à côté du nom de l’élément indique qu’un élément correspondant a bien été trouvé dans le document. Si vous cliquez sur le nom de l’élément dans le Tree of Hypotheses, une bordure violette encadrera la zone correspondante dans le document.
- Nous allons maintenant repérer la limite inférieure de la cellule qui contient le nom et l’adresse du patient. Pour cela, nous utiliserons un élément Separator.
a. Ajoutez un élément Separator au groupe et nommez-le « SeparatorBottom ». Définissez sa longueur minimale sur 200.
b. Cliquez avec le bouton droit sur l’élément et sélectionnez Match Element dans le menu contextuel. Vous verrez que l’Arbre des hypothèses contient de nombreux points verts. Ils correspondent à différents séparateurs qui répondent aux critères de recherche. Vous pouvez cliquer sur chaque point pour voir l’objet correspondant sur l’image.
c. Pour affiner les critères de recherche, spécifiez la zone de recherche du séparateur. Cliquez sur Match pour trouver l’élément « kwPatientTitle » qui servira d’élément d’ancrage. Dans la section Where to search du panneau Properties, cliquez sur Draw on Image. Sélectionnez l’élément « kwPatientTitle » dans le document et cliquez sur l’icône de flèche vers le bas pour définir la zone de recherche sous le mot-clé et l’icône la plus proche afin de rechercher le séparateur le plus proche du mot-clé. Vous trouverez une description détaillée des éléments d’ancrage dans la documentation.
d. Cliquez sur Match et vérifiez que Advanced Designer a trouvé le séparateur sous l’élément « kwPatientTitle ». Vous pouvez vérifier l’hypothèse pour chaque élément en cliquant sur son nom dans la section Arbre des hypothèses. - Une étiquette et un séparateur sont des éléments de référence fiables pour les données du patient. Cependant, si la qualité d’impression est trop faible, il est possible que le texte de l’étiquette ne soit pas reconnu ou que le séparateur ne soit pas détecté. Pour garantir de bons résultats d’extraction, nous allons rechercher un paragraphe situé entre l’étiquette et le séparateur. Un paragraphe est un bloc de texte homogène, ce qui signifie qu’il peut être trouvé même si certains éléments de délimitation n’ont pas été détectés.
a. Créez un élément de recherche Paragraph et nommez-le « NameAddressParagraph ».
b. Modifiez Text alignment en Left.
c. Les données du patient s’étendent sur deux à cinq lignes ; spécifiez donc le Line count de 2 à 5.
d. Spécifiez la zone de recherche pour le paragraphe. Cette fois, utilisez le menu Add dans la section Where to search. L’élément doit être situé sous l’élément « kwPatientTitle » et au-dessus de l’élément « SeparatorBottom ».
e. Cliquez sur Match. - Nous voulons maintenant extraire les données du patient. Créez un nouvel élément de groupe nommé « PatientGroup ».
- Le nom du patient peut occuper une ou deux lignes. Pour capturer plusieurs instances d’un élément, nous utiliserons un groupe répétitif.
a. Créez un élément de recherche Repeating Group et nommez-le « NameGroup ». Indiquez 2 comme nombre maximal de répétitions. Rendez l’élément facultatif.
b. Nous voulons rechercher les lignes qui font partie du paragraphe « NameAddressParagraph ». Pour définir la région de l’élément comme zone de recherche, cliquez sur l’icône de l’éditeur de code sous l’image du document et collez le script suivant dans la section Search Conditions du Code Editor:
d. Le texte recherché peut contenir des lettres majuscules et minuscules, ainsi qu’un ensemble de signes de ponctuation susceptibles d’apparaître dans des noms. Configurez deux jeux de caractères distincts. Le premier doit contenir toutes les lettres latines majuscules et minuscules. Pour ajouter des caractères avec des signes diacritiques, modifiez la sous-plage Unicode ou collez directement les caractères dans le champ Caractères sélectionnés.
e. L’autre jeu doit contenir les signes de ponctuation suivants : ,-.()’. Nous ne voulons pas que la chaîne contienne uniquement des signes de ponctuation ; définissez donc la Part dans le texte, % pour le deuxième jeu à 40 %. Cette propriété définit le pourcentage maximal autorisé de caractères issus d’un jeu donné. Remarque : Les paramètres par défaut permettent à la chaîne de contenir jusqu’à 30 % de caractères n’appartenant à aucun jeu. Cela aide à trouver des chaînes même lorsque certains caractères sont mal reconnus ou ne sont pas inclus dans le jeu (par exemple des caractères avec signes diacritiques). Vous pouvez ajuster ce paramètre en modifiant la valeur Erreurs autorisées dans le panneau Propriétés. f. Désactivez l’option Search for parts of words.
g. Indiquez la zone de recherche pour l’élément « NameLine » : sous l’élément « kwPatientTitle » et au plus près de celui-ci.
h. Cliquez sur Match et examinez l’Arborescence des hypothèses. Vous constaterez que deux chaînes de caractères sont trouvées. Cependant, la seconde chaîne contient l’adresse du patient.
i. Pour exclure l’adresse des résultats, nous allons vérifier si la première chaîne contient à la fois le prénom et le nom. Cela peut être fait en ajoutant une simple condition de recherche par script. Sélectionnez l’élément de recherche « NameLine » et ouvrez l’éditeur de code Search Conditions.
j. Nous considérons que la première ligne contient un nom complet si elle comprend une virgule et un espace. Si c’est un nom complet, nous ne voulons pas rechercher une deuxième occurrence du groupe répétitif. Collez le script suivant dans l’éditeur :
- Le nom du patient extrait à l’étape 7 sera mappé au champ “Name”. Nous allons également extraire et mapper l’adresse du patient.
a. À l’intérieur de “PatientGroup”, créez un élément de recherche Character String nommé “Address” avec la même configuration d’ensemble de caractères que l’élément “NameLine”.
b. Spécifiez la zone de recherche de l’élément par code : l’adresse doit se situer sous “NameLine” ou, si cet élément n’a pas été trouvé, sous la première ligne de l’élément “NameAddressParagraph”.

- Ouvrez la boîte de dialogue Gérer les champs, créez les champs correspondants et associez-les aux éléments de recherche comme suit :
| Nom | Type | Élément de recherche |
|---|---|---|
| Name | Champ Text dans le groupe “Patient” | NameLine |
| Address | Champ Text dans le groupe “Patient” | Address |
- Supprimez les éléments de recherche qui ont été automatiquement créés pour les nouveaux champs.
Extraction du type d’arrêt maladie
- Créez un élément Group nommé « TypeOfSickNoteGroup ». Rendez cet élément facultatif.
- Pour stocker les informations des deux coches, créez un élément de recherche Repeating Group et nommez-le « PrimaryGroup ».
a. Il est judicieux de restreindre la zone de recherche pour le groupe d’éléments. Spécifiez-la en code : à droite de l’élément « PatientGroup » et au-dessus de l’élément « DoctorAreaGroup » (qui sera créé ultérieurement). Remarque : indiquez toujours la condition « Exists » lorsque vous faites référence à des éléments futurs.
c. Créez un élément de recherche Object Collection nommé « Checkmark » avec les paramètres suivants : Type :
Checkmark, État de la coche : Checked, Hauteur minimale : 10, Largeur maximale : 20, Hauteur maximale : 20. Indiquez que l’élément est situé à gauche de l’élément « kwPrimary » et au plus près de celui-ci. d. Cliquez sur Match.
- Copiez-collez le groupe « PrimaryGroup ». Renommez le groupe copié en « SecondaryGroup ». Ce groupe sera obligatoire.
-
Modifiez « SecondaryGroup ».
a. Renommez l’élément « kwPrimary » en « kwSecondary » et définissez le texte à rechercher sur « Folgebescheinigung ». Spécifiez la zone de recherche : sous l’élément « kwPrimary » du « PrimaryGroup ».
b. Spécifiez la zone de recherche pour l’élément « Checkmark » : à gauche de « kwSecondary » et au plus près de celui-ci.
c. L’élément de recherche Object Collection retourne une collection de tous les objets correspondant aux critères dans la zone de recherche. Si les coches se trouvent sur la même ligne, l’élément « Checkmark » de « SecondaryGroup » peut aussi repérer la coche primaire. Pour éviter cela, excluez la coche primaire (élément « Checkmark » de « PrimaryGroup ») de la zone de recherche de l’élément « Checkmark » de « SecondaryGroup ».
d. Cliquez sur Match.

- Ouvrez la fenêtre Manage Fields, créez les champs correspondants et mappez-les aux éléments de recherche comme suit :
| Name | Type | Search element |
|---|---|---|
| Type of Sick Note | Checkmark group | |
| Primary | Checkmark in the “Type of Sick Note” checkmark group | PrimaryGroup -> Checkmark |
| Secondary | Checkmark in the “Type of Sick Note” checkmark group | SecondaryGroup -> Checkmark |
- Supprimez les éléments de recherche automatiquement créés pour les nouveaux champs.
Extraction des données du médecin
- Créez un élément Group nommé “DoctorAreaGroup”. Rendez l’élément facultatif.
- La zone que nous allons rechercher contient un libellé. Pour la trouver, créez un élément Static Text nommé “kwDoctorTitle” (texte à rechercher : “Unterschrift des Arztes”).
- À l’intérieur du groupe “DoctorAreaGroup”, créez un autre groupe nommé “DataArea”.
- La zone qui contient les informations du médecin et la signature est délimitée par quatre séparateurs. Ils sont situés autour de l’élément “kwDoctorTitle”. Toutefois, nous devons configurer les éléments de manière à permettre au programme de les trouver même si l’élément “kwDoctorTitle” n’a pas été trouvé. Dans le groupe “DataArea”, créez quatre éléments de recherche Separator avec les propriétés suivantes :
| Name | Orientation | Minimum length | Search area |
|---|---|---|---|
SeparatorRight | Vertical | 180 | Right of “kwDoctorTitle”, Nearest to the right page edge |
SeparatorLeft | Vertical | 180 | Left of “kwDoctorTitle”, Left of “SeparatorRight” (in case “kwDoctorTitle” wasn’t found), Nearest to “SeparatorRight”, Below “SeparatorRight” (click the icon to the right of the separator name and select Top Boundary of Region), Exclude “SeparatorRight” |
SeparatorBottom | Horizontal | 200 | Below “kwDoctorTitle” (with adjustment of -10 points), Right of “SeparatorLeft”, Left of “SeparatorRight”, Nearest to the bottom page edge (this setting will be useful in case “kwDoctorTitle” wasn’t found) |
SeparatorTop | Horizontal | 200 | Above “kwDoctorTitle”, Right of “SeparatorLeft”, Nearest to “TypeOfSickNoteGroup”, Exclude “SeparatorBottom” |
- Nous pourrions spécifier manuellement la zone de recherche pour la signature et les informations du médecin par rapport aux séparateurs trouvés. Au lieu de cela, nous allons créer un élément Region correspondant à la zone délimitée par ces séparateurs. Créez un élément de recherche Region nommé “BoxRegion” et définissez la zone de recherche : à gauche de “SeparatorRight”, à droite de “SeparatorLeft”, au-dessus de “SeparatorBottom” et en dessous de “SeparatorTop”.
- Créez un nouveau groupe nommé “DoctorGroup”.
- Pour localiser la signature du médecin, créez un élément Object Collection avec les paramètres suivants dans “DoctorGroup” :
| Property | Value |
|---|---|
| Name | Signature |
| Type | Picture |
| Minimum width | 15 |
| Minimum height | 15 |
| Maximum width | 600 |
| Maximum height | 350 |
| Search Conditions section of the Code Editor | The signature may be partly located outside the box. To find the whole image, we will expand the search area by 100 dots in each direction: RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect.GetInflated(100dot,100dot); |
- Pour extraire les informations textuelles dans la zone, créez un élément Paragraph avec les paramètres suivants :
| Property | Value |
|---|---|
| Name | DoctorInformation |
| Maximum line count | 6 |
| Search area | Above “kwDoctorTitle”, Exclude “Signature” |
| Search Conditions section of the Code Editor | RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect; |
- Cliquez sur Match et vérifiez que les éléments sont correctement trouvés.

- Ouvrez la boîte de dialogue Manage Fields, créez les champs correspondants et mappez-les aux éléments de recherche comme suit :
| Name | Type | Search element |
|---|---|---|
| Doctor Information | Text field in the “Doctor” group | DoctorInformation |
| Signature | Image field in the “Doctor” group | Signature |
- Supprimez les éléments de recherche qui ont été créés automatiquement pour les nouveaux champs.
