Vai al contenuto principale
Per ogni elemento di ricerca, il codice in un’attività Extraction Rules contiene una serie di regole eseguite in sequenza. Ogni regola è composta da due parti e termina con un punto e virgola:
Parte sinistra
=>
Parte destra;
La parte sinistra verifica una condizione o individua i valori che la soddisfano. La parte destra crea nuove istanze di elementi di ricerca e vi assegna i valori.

Esempio

La semplice regola seguente trova un elemento di ricerca kw_Contract che contiene la parola chiave “Contract”:
[ t: "Contract" ] // ricerca della parola "Contract" e assegnazione del token a una nuova variabile denominata t
=>
kw_Contract( t ); // creazione di una nuova istanza dell'elemento di ricerca kw_Contract a ogni ripetizione della parola "Contract"

Struttura della parte sinistra

La parte sinistra è composta da un massimo di tre sezioni:
Condizione_di_esistenza
Token_template
Additional_check

Condizione di esistenza (facoltativa)

Trova un oggetto che abbia gli attributi specificati. Si consiglia di assegnare un nome all’oggetto, se esiste, così da poterlo riutilizzare all’interno della stessa regola. La condizione può anche specificare l’assenza di un oggetto. Esempi Se devi trovare una sola occorrenza dell’elemento di ricerca SellerName, specifica all’inizio della regola che non è ancora stata trovata alcuna occorrenza:
~SellerName // verifica che l'elemento di ricerca SellerName non sia ancora stato trovato
Nota. Non è possibile assegnare un nome di variabile quando si utilizzano condizioni negative, perché una condizione negativa implica che non esiste alcun oggetto.
Questa condizione verifica l’esistenza di un’entità denominata “indirizzo”:
a: NERAddress // verifica l'esistenza di un'entità denominata indirizzo e la assegna a una nuova variabile chiamata a
Vedi Condizione di esistenza per i dettagli sulla sintassi utilizzata in questa sezione.

Modello di token (obbligatorio)

È costituito da una sequenza di token. Un token è una parola di una lingua naturale o un segno di punteggiatura. Di norma, i token non contengono spazi, tranne in alcuni rari casi in cui lo spazio si trova all’interno di una locuzione fissa usata come un’unica parola: such as, a lot. Esempio Ad esempio, il seguente modello di token è composto da un token che corrisponde alla parola chiave “Grantor”, un token con i due punti e un token ripetuto con l’entità denominata Person (indicato come ripetuto perché il nome di una persona può essere composto da più parole, ciascuna rappresentata da un token distinto):
["Grantor"] [":"] [p: @NERPerson]+
Il modello corrisponderà a una string come “Grantor: Anne Smith” e assegnerà il valore “Anne Smith” alla variabile p. Vedi Token template per i dettagli sulla sintassi utilizzata in questa sezione.

Controllo aggiuntivo (facoltativo)

Verifica ulteriori condizioni per gli oggetti già menzionati nella regola. Esempio Ad esempio, supponiamo che tu stia cercando le parti di un contratto e abbia raggruppato i field in due istanze di gruppo separate, una per ciascuna parte. Dopo aver trovato un nome di organizzazione e un indirizzo, puoi verificare se questi elementi di ricerca hanno lo stesso parent. In tal caso, significa che questo indirizzo appartiene a questa organizzazione.
n: Party.OrgName // the organization name search element was found earlier
[ a: @Party.Address ] // finds the token on which the address search element was found
// Verifica che gli elementi di ricerca del nome dell'organizzazione e dell'indirizzo
// siano elementi figlio della stessa istanza dell'elemento di gruppo Party
parent( n ) == parent( obj( a ) )
Vedere Controllo aggiuntivo per i dettagli sulla sintassi utilizzata in questa sezione.

Struttura della parte destra

La parte destra è composta da una o più sezioni, separate da virgole, che creano nuove istanze di gruppi ed elementi di ricerca e assegnano valori agli elementi di ricerca:
Crea_gruppo_A,
Crea_elemento_B_e_assegna_valore
Di solito, la parte sinistra della regola individua un token, una sequenza di token o un oggetto nella parte sinistra e lo assegna a una variabile. Quindi, la parte destra può utilizzare questa variabile per scriverne il valore in uno degli elementi di ricerca. Ad esempio, il codice seguente scrive il valore di t nell’elemento di ricerca Element1:

Esempio

[t: "Locazione"] ["Contratto"]
=>
Root.kw_AgreementType( t );
Vedi Parte destra per i dettagli sulla sintassi utilizzata in questa sezione.
Nota: Il codice crea solo istanze di elementi di ricerca e di elementi di ricerca di gruppo già presenti nell’attività Extraction Rules. Non è possibile creare nuovi elementi di ricerca tramite codice. Per aggiungere ulteriori elementi di ricerca nella struttura, usa la scheda Search Elements nell’Activity Editor.

Riferimento agli elementi di ricerca

Per accedere a un elemento di ricerca nel codice, è necessario usare un nome che lo identifichi in modo univoco. Se un elemento ha un nome univoco, è possibile farvi riferimento semplicemente con quel nome. Se sono presenti più elementi con lo stesso nome, è necessario specificare un percorso sufficientemente lungo da identificare l’elemento.

Esempio

Considera la seguente struttura annidata di elementi di ricerca:
  • Property
    • Type
    • Address
  • Buyer
    • FullName
    • Address
Per fare riferimento al nome dell’acquirente nel codice, puoi semplicemente usare “FullName”, perché l’elemento con questo nome è univoco. “Buyer.FullName” o “Root.Buyer.FullName” funzionano altrettanto bene. Per fare riferimento all’indirizzo dell’acquirente, devi aggiungere almeno il nome del gruppo padre, perché ci sono due elementi chiamati “Address”. In questo caso, usa “Buyer.Address” o “Root.Buyer.Address”.

Regole specifiche per lingua

È possibile specificare la lingua del documento per cui eseguire la regola. In questo modo, la regola verrà ignorata per le altre lingue. Anteporre alla regola un cancelletto (#) e il codice della lingua a due lettere (standard ISO 639-1).

Codici delle lingue supportate

LinguaCodice
Ingleseen
Tedescode
Francesefr
Spagnoloes
Italianoit
Portoghese (standard)pt
Giapponeseja
Russoru
Ad esempio, se elabori documenti in inglese e in spagnolo, potresti voler usare parole chiave specifiche per lingua:

Esempio

#en
[ t: "Grantor" ] // la parola chiave per i documenti in inglese
=>
kw_landlord( t );

#es
[ t: "Arrendador" ] // la parola chiave per i documenti in spagnolo
=>
kw_landlord( t );