Documentation Index
Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
Use this file to discover all available pages before exploring further.
各検索要素ごとに、Extraction Rules アクティビティ内のコードには、順次実行される一連のルールが含まれます。各ルールは2つの部分から成り、末尾はセミコロンで終わります。
左側部分は条件を判定し、条件を満たす値を抽出します。右側部分は新しい検索要素インスタンスを作成し、そこに値を割り当てます。
次の単純なルールは、キーワード「Contract」を含む検索要素 kw_Contract を検出します。
[ t: "Contract" ] // "Contract"という単語を検索し、トークンをtという新しい変数に割り当てる
=>
kw_Contract( t ); // "Contract"という単語が出現するたびに、kw_Contract検索要素の新しいインスタンスを作成する
左側部分は最大3つの部位で構成されています。
Existence_condition
トークンテンプレート
Additional_check
指定した属性を持つオブジェクトを検索します。オブジェクトが存在する場合は、同じルール内で再利用できるよう、そのオブジェクトに名前を付けることを推奨します。この条件では、オブジェクトが存在しないことを指定することもできます。
例
SellerName 検索要素のインスタンスを1件だけ見つけたい場合は、ルールの先頭で、まだインスタンスが見つかっていないことを指定します。
~SellerName // SellerName検索要素がまだ見つかっていないことを確認
否定条件を使用する場合は、変数名を割り当てられません。否定条件はオブジェクトが存在しないことを意味するためです。
この条件は、address という名前の固有表現が存在するかどうかを確認します。
a: NERAddress // 住所の固有表現の存在を確認し、aという新しい変数に割り当てる
この部分で使用される構文の詳細は、Existence conditionを参照してください。
トークンの並びで構成されます。トークンとは、自然言語の単語または句読点です。トークンには通常スペースは含まれませんが、1つの語として扱われる表現の中に空白が含まれるまれなケース (such as や a lot など) があります。
例
たとえば、次のトークンテンプレートは、「Grantor」というキーワードに一致するトークンが1つ、コロンのトークンが1つ、そしてPersonという固有表現の繰り返しトークン (人名は複数の語から成り、各語が個別のトークンとなり得るため繰り返しに指定) で構成されています。
["Grantor"] [":"] [p: @NERPerson]+
このテンプレートは「Grantor: Anne Smith」のようなテキスト文字列に一致し、変数 p に「Anne Smith」を代入します。
この部分で使用している構文の詳細は、Token templateを参照してください。
ルール内ですでに参照されているオブジェクトに対して、さらに条件をチェックします。
例
たとえば、契約の当事者を特定したく、field を各当事者ごとに 2 つの別個のグループインスタンスにまとめたとします。組織名と住所が見つかったら、これらの検索要素が同じ親を持つかどうかを確認できます。そうであれば、その住所はその組織に属していることを意味します。
n: Party.OrgName // 組織名検索要素は既に検出されています
[ a: @Party.Address ] // 住所検索要素が検出されたトークンを検索します
// 組織名と住所の検索要素が
// 同一のPartyグループ要素インスタンスの子要素であることを確認します
parent( n ) == parent( obj( a ) )
この部分で使用されている構文の詳細は、Additional checkを参照してください。
右側部分は、グループと検索要素の新しいインスタンスを作成し、検索要素に値を割り当てる、カンマ区切りの1つまたは複数のパートで構成されます。
グループAを作成,
要素Bを作成して値を割り当てる
通常、規則の左辺はトークン、トークン列、またはオブジェクトを見つけて変数に代入します。次に、右辺ではこの変数を用いて、その値を検索要素のいずれかに書き込むことができます。たとえば、次のコードは t の値を Element1 の検索要素に書き込みます。
[t: "Lease"] ["Agreement"]
=>
Root.kw_AgreementType( t );
この部分で使用される構文の詳細は、右側部分を参照してください。
コードで作成できるのは、Extraction Rules アクティビティ内に既に存在する検索要素およびグループ検索要素のインスタンスのみです。コードによって新しい検索要素を作成することはできません。構造内に検索要素を追加するには、Activity Editor のSearch Elementsタブを使用してください。
コードで検索要素にアクセスするには、その要素を一意に識別できる名前を使用する必要があります。要素に固有の名前がある場合は、その名前だけで参照できます。同じ名前の要素が複数ある場合は、その要素を識別できるよう十分な長さのパスを指定する必要があります。
次のような検索要素のネスト構造を考えます:
コードで買い手の氏名を参照するには、同名の要素が一意であるため、単に「FullName」を使用できます。「Buyer.FullName」や「Root.Buyer.FullName」でも同様に機能します。
買い手の住所を参照するには、「Address」という要素が2つあるため、少なくとも親グループ名を付ける必要があります。ここでは「Buyer.Address」または「Root.Buyer.Address」を使用してください。
ルールを実行する対象のDocumentの言語を指定できます。指定した場合、他の言語ではそのルールはスキップされます。ルールの前にハッシュ (#) と2文字の言語コード (ISO 639-1) を付けてください。
| 言語 | コード |
|---|
| 英語 | en |
| ドイツ語 | de |
| フランス語 | fr |
| スペイン語 | es |
| イタリア語 | it |
| ポルトガル語 (標準) | pt |
| 日本語 | ja |
| ロシア語 | ru |
例えば、英語とスペイン語のDocumentを処理する場合、言語別のキーワードを使用するとよいでしょう。
#en
[ t: "Grantor" ] // 英語文書のキーワード
=>
kw_landlord( t );
#es
[ t: "Arrendador" ] // スペイン語文書のキーワード
=>
kw_landlord( t );