Pular para o conteúdo principal
Para cada elemento de pesquisa, o código em uma atividade Extraction Rules contém uma série de regras executadas sequencialmente. Cada regra é composta por duas partes e termina com ponto e vírgula:
Parte esquerda
=>
Parte direita;
A parte à esquerda verifica uma condição ou encontra valores que a atendam. A parte à direita cria novas instâncias de elementos de busca e lhes atribui esses valores.

Exemplo

A regra simples abaixo encontra um elemento de pesquisa kw_Contract que contém a palavra-chave “Contract”:
[ t: "Contract" ] // procurando a palavra "Contract" e atribuindo o token a uma nova variável chamada t
=>
kw_Contract( t ); // criando uma nova instância do elemento de pesquisa kw_Contract a cada repetição da palavra "Contract"

Estrutura da seção esquerda

A seção esquerda é composta por até três partes:
Condição_de_existência
Modelo_de_token
Verificação_adicional
  1. Condição de existência (opcional): Localiza um objeto que tenha os atributos especificados. Recomendamos atribuir um nome ao objeto, caso ele exista, para poder reutilizá-lo na mesma regra. A condição também pode especificar a ausência de um objeto.

Exemplos

Se você precisar encontrar apenas uma instância do elemento de pesquisa SellerName, especifique no início da regra que ainda não foi encontrada nenhuma instância:
~SellerName // verifica se o elemento de pesquisa SellerName ainda não foi encontrado
Observe que não é possível atribuir um nome de variável ao usar condições negativas, pois uma condição negativa indica que não há objeto. Esta condição verifica a existência de uma entidade nomeada “address”:
a: NERAddress // verifica a existência de uma entidade nomeada de endereço e a atribui a uma nova variável chamada a
Consulte Condição de existência para obter detalhes sobre a sintaxe usada nesta seção.
  1. Modelo de token (obrigatório): Consiste em uma sequência de tokens. Um token é uma palavra de uma língua natural ou um sinal de pontuação. Tokens geralmente não contêm espaços, exceto em alguns casos raros em que o espaço faz parte de uma construção usada como uma única palavra: such as, a lot.

Exemplo

Por exemplo, o seguinte modelo de token consiste em um token que corresponde à palavra-chave “Grantor”, um token com dois-pontos e um token repetido com a entidade nomeada Person (definido como repetido porque o nome de uma pessoa pode ser composto por várias palavras, cada uma sendo um token separado):
["Grantor"] [":"] [p: @NERPerson]+
O modelo corresponderá a uma string de texto como “Grantor: Anne Smith” e atribuirá o valor “Anne Smith” à variável p. Consulte Token template para obter detalhes sobre a sintaxe usada nesta parte.
  1. Verificação adicional (opcional): Verifica condições adicionais para objetos que já foram mencionados na regra.

Exemplo

Por exemplo, suponha que você esteja procurando as partes de um contrato e tenha agrupado os campos em duas instâncias de grupo separadas, uma para cada parte. Após encontrar o nome de uma organização e um endereço, você pode verificar se esses elementos de pesquisa têm o mesmo elemento pai. Se tiverem, isso significa que esse endereço pertence a essa organização.
n: Party.OrgName // o elemento de pesquisa do nome da organização foi encontrado anteriormente
[ a: @Party.Address ] // localiza o token no qual o elemento de pesquisa do endereço foi encontrado
// Verifica se os elementos de pesquisa de nome da organização e endereço
// são filhos da mesma instância do elemento de grupo Party
parent( n ) == parent( obj( a ) )
Consulte Verificação adicional para obter detalhes sobre a sintaxe usada nesta seção.

Estrutura da parte direita

A parte direita consiste em uma ou várias partes, separadas por vírgulas, que criam novas instâncias de grupos e de elementos de pesquisa e atribuem valores a esses elementos de pesquisa:
Criar_grupo_A,
Criar_elemento_B_e_atribuir_valor
Normalmente, a parte esquerda da regra localiza um token, uma sequência de tokens ou um objeto na própria parte esquerda e o atribui a uma variável. Em seguida, a parte direita pode usar essa variável para gravar seu valor em um dos elementos de busca. Por exemplo, o código a seguir grava o valor de t no elemento de busca Element1:

Exemplo

[t: "Lease"] ["Agreement"]
=>
Root.kw_AgreementType( t );
Consulte Parte direita para obter detalhes sobre a sintaxe usada nesta seção. Observação: O código apenas cria instâncias de elementos de pesquisa e de elementos de pesquisa de grupo que já existem na atividade Extraction Rules. Não é possível criar novos elementos de pesquisa por meio de código. Para criar elementos de pesquisa adicionais na estrutura, use a guia Search Elements no Activity Editor.

Referenciando elementos de pesquisa

Para acessar um elemento de pesquisa no código, você precisa usar um nome que identifique esse elemento de forma inequívoca. Se um elemento tiver um nome único, você pode referir-se a ele simplesmente pelo nome. Se houver vários elementos com o mesmo nome, será necessário especificar um caminho suficientemente detalhado para identificar o elemento.

Exemplo

Considere a seguinte estrutura aninhada de elementos de pesquisa:
  • Property
    • Type
    • Address
  • Buyer
    • FullName
    • Address
Para fazer referência ao nome do comprador no código, você pode simplesmente usar “FullName”, porque o elemento com esse nome é único. “Buyer.FullName” ou “Root.Buyer.FullName” também funcionarão. Para fazer referência ao endereço do comprador, será necessário acrescentar pelo menos o nome do grupo pai, pois existem dois elementos chamados “Address”. Nesse caso, use “Buyer.Address” ou “Root.Buyer.Address”.

Regras específicas de idioma

Você pode especificar o idioma do documento para o qual a regra deve ser executada. Ao fazer isso, a regra será ignorada para outros idiomas. Coloque um hash (#) antes da regra e o código de idioma de duas letras (padrão ISO 639-1).

Códigos dos idiomas compatíveis

IdiomaCódigo
Inglêsen
Alemãode
Francêsfr
Espanholes
Italianoit
Português (padrão)pt
Japonêsja
Russoru
Por exemplo, se você processar documentos em inglês e espanhol, talvez queira usar palavras-chave específicas do idioma:

Exemplo

#en
[ t: "Grantor" ] // a palavra-chave para documents em inglês
=>
kw_landlord( t );

#es
[ t: "Arrendador" ] // a palavra-chave para documents em espanhol
=>
kw_landlord( t );