Passaggi preparatori
- Apri l’attività “Sick Note DE” in Activity Editor.
- Seleziona uno dei documenti dal set di documenti.
- Assicurati che la modalità avanzata per le proprietà degli elementi sia attivata. Per attivare o disattivare questa modalità, fai clic sull’icona nel riquadro Properties.
- Tutti i documenti caricati sono stati prerecogniti ed è utile vedere quali oggetti sono stati individuati nell’immagine. Fai clic sull’icona. Se non vedi questa icona a causa delle dimensioni dello schermo, fai clic sull’icona e seleziona Recognized Words. Gli oggetti corrispondenti verranno evidenziati nell’immagine del documento. Puoi passare tra vari tipi di oggetti evidenziati in qualsiasi momento. Ad esempio, passare a Recognized Lines può essere utile quando cerchi paragrafi, mentre passare a Separators semplificherà la configurazione di un elemento di ricerca Separator.
- Se un elemento di ricerca si trova al di fuori dell’area di ricerca, non verrà trovato. Attiva l’opzione Show search area nel menu contestuale dell’immagine del documento. L’area di ricerca per ciascun elemento verrà evidenziata in verde quando valuti i risultati di corrispondenza.
Estrazione dei dati del paziente
- Fare clic su Create Element e selezionare l’elemento Group dall’elenco a discesa. Cambiarne il nome in “PatientDataArea”.
- Un nuovo elemento di ricerca di tipo gruppo è impostato come obbligatorio per impostazione predefinita. Se un elemento obbligatorio non viene trovato, l’Activity Editor genera un errore e il matching viene interrotto. Questo consente di saltare le attività se non sono adatte a un determinato documento. Tuttavia, in questo tutorial stiamo creando un’attività per estrarre dati da tutti i documenti in arrivo, quindi vogliamo che il gruppo sia facoltativo. Nella sezione Under what conditions, modificare il valore Element is in Optional.
- Vogliamo trovare il paragrafo che contiene il nome e l’indirizzo del paziente. Nei documenti in tedesco il paragrafo che cerchiamo si trova sempre nel field con l’etichetta “Name, Vorname … ”. Dobbiamo trovare questo testo nel documento e usarlo come riferimento per cercare i dati che vogliamo estrarre.
a. Le parole chiave possono essere rilevate utilizzando l’elemento di ricerca Static Text. Fare clic su Create Element e selezionare l’elemento Static Text dall’elenco a discesa. Cambiarne il nome in “kwPatientTitle”.
b. Inserire il testo “Name, Vorname” nel field Text to find nel riquadro Properties.
c. Fare clic su Match. Al termine dell’elaborazione, si vedrà il Tree of Hypotheses sotto il documento. Assicurarsi che Advanced Designer abbia trovato correttamente il testo statico desiderato. Un punto verde accanto al nome dell’elemento indica che un elemento corrispondente è stato trovato nel documento. Facendo clic sul nome dell’elemento nel Tree of Hypotheses, si vedrà un riquadro viola attorno all’area corrispondente nel documento.
- Ora individuiamo il bordo inferiore della cella che contiene il nome e l’indirizzo del paziente. Lo faremo usando un elemento Separator.
a. Aggiungi un elemento Separator al gruppo e chiamalo “SeparatorBottom”. Imposta la lunghezza minima su 200.
b. Fai clic con il pulsante destro sull’elemento e seleziona Match Element nel menu contestuale. Vedrai che l’Albero delle ipotesi contiene molti punti verdi. Corrispondono a diversi separatori che soddisfano i criteri di ricerca. Puoi fare clic su ciascun punto per vedere l’oggetto corrispondente nell’immagine.
c. Per affinare i criteri di ricerca, specifica l’area di ricerca per il separatore. Fai clic su Match per trovare l’elemento “kwPatientTitle” che verrà utilizzato come elemento di ancoraggio. Nella sezione Where to search del riquadro Properties, fai clic su Draw on Image. Seleziona l’elemento “kwPatientTitle” nel documento e fai clic sull’icona della freccia verso il basso per delimitare l’area di ricerca sotto la parola chiave e sull’icona più vicina per cercare il separatore più vicino alla parola chiave. Trovi una descrizione dettagliata degli elementi di ancoraggio nella documentazione.
d. Fai clic su Match e verifica che Advanced Designer abbia trovato il separatore sotto l’elemento “kwPatientTitle”. Puoi verificare l’ipotesi per ciascun elemento facendo clic sul suo nome nella sezione Tree of Hypotheses. - Un’etichetta e un separatore sono elementi di riferimento affidabili per i dati del paziente. Tuttavia, se la qualità di stampa è troppo bassa, è possibile che il testo dell’etichetta non venga riconosciuto o che il separatore non venga trovato. Per garantire buoni risultati di estrazione, cercheremo un paragrafo compreso tra l’etichetta e il separatore. Un paragrafo è un blocco uniforme di testo, quindi può essere individuato con successo anche se alcuni elementi di contorno non sono stati trovati.
a. Crea un elemento di ricerca Paragraph e chiamalo “NameAddressParagraph”.
b. Imposta Text alignment su Left.
c. I dati del paziente occupano da due a cinque righe, quindi specifica Line count da 2 a 5.
d. Specifica l’area di ricerca per il paragrafo. Questa volta usa il menu Add nella sezione Where to search. L’elemento deve trovarsi sotto l’elemento “kwPatientTitle” e sopra l’elemento “SeparatorBottom”.
e. Fai clic su Match. - Ora vogliamo estrarre i dati del paziente. Crea un nuovo elemento di gruppo chiamato “PatientGroup”.
- Il nome del paziente può occupare una o due righe. Per acquisire più occorrenze di un elemento, utilizzeremo un gruppo ripetuto.
a. Crea un elemento di ricerca Repeating Group e chiamalo “NameGroup”. Specifica 2 come numero massimo di ripetizioni. Imposta l’elemento come facoltativo.
b. Vogliamo cercare le righe che fanno parte del paragrafo “NameAddressParagraph”. Per impostare come area di ricerca la regione dell’elemento, fai clic sull’icona dell’editor di codice sotto l’immagine del documento e incolla il seguente script nella sezione Search Conditions del Code Editor:
d. Il testo che stiamo cercando può contenere lettere maiuscole e minuscole, oltre a un insieme di segni di punteggiatura che possono comparire nei nomi. Configura due insiemi di caratteri separati. Il primo insieme deve contenere tutte le lettere latine maiuscole e minuscole. Per aggiungere caratteri con segni diacritici, modifica la sottorange Unicode oppure incolla direttamente i caratteri nel field Selected characters.
e. L’altro insieme deve contenere i seguenti segni di punteggiatura: ,-.()’. Non vogliamo che la string contenga solo segni di punteggiatura, quindi imposta Portion in text, % per il secondo insieme al 40%. Questa proprietà definisce la percentuale massima consentita di caratteri provenienti da un determinato insieme. Nota: Le impostazioni predefinite consentono alla string di contenere fino al 30% di caratteri non inclusi in alcun insieme. Questo aiuta a trovare string anche quando alcuni caratteri sono riconosciuti in modo errato o non sono inclusi nell’insieme (ad esempio, caratteri con segni diacritici). Puoi modificare questa impostazione cambiando il valore Allowed errors nel riquadro Properties. f. Disabilitare l’opzione Search for parts of words.
g. Specificare l’area di ricerca per l’elemento “NameLine”: sotto l’elemento “kwPatientTitle” e il più vicino possibile ad esso.
h. Fare clic su Match e verificare l’albero delle ipotesi. Verranno trovate due stringhe di caratteri. Tuttavia, la seconda stringa contiene l’indirizzo del paziente.
i. Per escludere l’indirizzo dai risultati, verificheremo se la prima stringa contiene sia nome sia cognome. È possibile farlo aggiungendo una semplice condizione di ricerca tramite script. Selezionare l’elemento di ricerca “NameLine” e aprire l’editor del codice Search Conditions.
j. Supponiamo che la prima riga contenga un nome completo se include una virgola e uno spazio. Se contiene un nome completo, non vogliamo cercare una seconda occorrenza del gruppo ripetuto. Incollare il seguente script nell’editor:
- Il nome del paziente estratto al passaggio 7 verrà mappato al field “Name”. Estrarremo e mapperemo anche l’indirizzo del paziente.
a. All’interno di “PatientGroup”, creare un elemento di ricerca Character String denominato “Address” con la stessa configurazione del set di caratteri dell’elemento “NameLine”.
b. Specificare l’area di ricerca per l’elemento tramite codice: l’indirizzo deve trovarsi sotto “NameLine” oppure, se questo elemento non è stato trovato, sotto la prima riga dell’elemento “NameAddressParagraph”.

- Aprire la finestra di dialogo Gestisci Fields, creare i relativi Fields e associarli agli elementi di ricerca come segue:
| Nome | Tipo | Elemento di ricerca |
|---|---|---|
| Nome | Field di tipo Testo nel gruppo “Patient” | NameLine |
| Indirizzo | Field di tipo Testo nel gruppo “Patient” | Address |
- Eliminare gli elementi di ricerca creati automaticamente per i nuovi Fields.
Estrazione del tipo di certificato di malattia
- Crea un elemento Group chiamato “TypeOfSickNoteGroup”. Imposta l’elemento come facoltativo.
- Per memorizzare le informazioni su entrambe le caselle di controllo, crea un elemento di ricerca Repeating Group e chiamalo “PrimaryGroup”.
a. È consigliabile limitare l’area di ricerca per il gruppo di elementi. Specifica l’area di ricerca tramite codice: a destra dell’elemento “PatientGroup” e sopra l’elemento “DoctorAreaGroup” (che verrà creato più avanti). Nota: specifica sempre la condizione “Exists” quando utilizzi elementi futuri.
c. Creare un elemento di ricerca Object Collection denominato “Checkmark” con le seguenti impostazioni: Type:
Checkmark, Checkmark state: Checked, Minimum height: 10, Maximum width: 20, Maximum height: 20. Specificare che l’elemento è posizionato a sinistra dell’elemento “kwPrimary” ed è quello più vicino. d. Fare clic su Match.
- Copiare e incollare il gruppo “PrimaryGroup”. Rinomina il gruppo copiato in “SecondaryGroup”. Questo gruppo sarà obbligatorio.
-
Modificare “SecondaryGroup”.
a. Rinominare l’elemento “kwPrimary” in “kwSecondary” e impostare il testo da trovare su “Folgebescheinigung”. Specificare l’area di ricerca: sotto l’elemento “kwPrimary” del “PrimaryGroup”.
b. Specificare l’area di ricerca per l’elemento “Checkmark”: a sinistra di “kwSecondary” e il più vicino.
c. L’elemento di ricerca Object Collection trova una raccolta di tutti gli oggetti idonei nell’area di ricerca. Se i segni di spunta si trovano sulla stessa riga, l’elemento “Checkmark” del “SecondaryGroup” potrebbe trovare anche il segno di spunta primario. Per evitarlo, escludere il segno di spunta primario (elemento “Checkmark” del “PrimaryGroup”) dall’area di ricerca per l’elemento “Checkmark” del “SecondaryGroup”.
d. Fare clic su Match.

- Aprire la finestra Manage Fields, creare i relativi field e mappare tali field agli elementi di ricerca come segue:
| 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 |
- Eliminare gli elementi di ricerca creati automaticamente per i nuovi field.
Estrazione dei dati del medico
- Crea un elemento Group chiamato “DoctorAreaGroup”. Imposta l’elemento come facoltativo.
- Il riquadro che cerchiamo contiene un’etichetta. Per trovarla, crea un elemento Static Text chiamato “kwDoctorTitle” (testo da cercare: “Unterschrift des Arztes”).
- All’interno del gruppo “DoctorAreaGroup”, crea un altro gruppo chiamato “DataArea”.
- Il riquadro che contiene le informazioni e la firma del medico è definito da quattro separatori. Si trovano attorno all’elemento “kwDoctorTitle”. Tuttavia, dobbiamo configurare gli elementi in modo che il programma possa trovarli anche se l’elemento “kwDoctorTitle” non viene individuato. Nel gruppo “DataArea”, crea quattro elementi di ricerca Separator con le seguenti proprietà:
| 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” |
- Potremmo specificare manualmente l’area di ricerca per la firma e le informazioni del medico rispetto ai separatori trovati. Invece, creeremo un elemento Region che corrisponde all’area delimitata dai separatori. Crea un elemento di ricerca Region chiamato “BoxRegion” e specifica l’area di ricerca: a sinistra di “SeparatorRight”, a destra di “SeparatorLeft”, sopra “SeparatorBottom” e sotto “SeparatorTop”.
- Crea un nuovo gruppo chiamato “DoctorGroup”.
- Per individuare la firma del medico, crea un elemento Object Collection con le seguenti impostazioni all’interno di “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 | La firma può trovarsi parzialmente all’esterno del riquadro. Per trovare l’intera immagine, espanderemo l’area di ricerca di 100 dot in ogni direzione: RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect.GetInflated(100dot,100dot); |
- Per estrarre le informazioni testuali nel riquadro, crea un elemento Paragraph con le seguenti impostazioni:
| 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; |
- Fai clic su Match e verifica che gli elementi vengano trovati correttamente.

- Apri la finestra di dialogo Manage Fields, crea i relativi field e mappali agli elementi di ricerca come segue:
| Name | Type | Search element |
|---|---|---|
| Doctor Information | Text field in the “Doctor” group | DoctorInformation |
| Signature | Image field in the “Doctor” group | Signature |
- Elimina gli elementi di ricerca creati automaticamente per i nuovi field.
