メインコンテンツへスキップ
ドイツ向けアクティビティの設定が完了したら、オランダ語とベルギーの病欠証明書向けに 2 つ目の Extraction Rules アクティビティを設定します。 オランダ語とベルギーの病欠証明書は、ドイツの文書とは構造が異なり、同じ class 内でも形式のばらつきが大きいため、ここでは Fast Learning は適していません。さらに、これらの文書に固有の fields もあるため、アクティビティの設定に合わせてデータ フォームに追加していきます。 まずはすべての文書に共通して現れる fields から始め、その後、新しいフィールドに対応するためにフォームを拡張します。
skill 名の横にある現在のアクティビティ名をクリックし、ドロップダウンから “Sick Note BE-NL” を選択すると、Activity Editor を閉じずにアクティビティを切り替えられます。次に、セット内の最初の文書を選択します。

発行日の抽出

これらの文書の日付は Date 要素を使って簡単に抽出できるため、今回はこの field 用に自動作成された search element を使用します。
1

Date field を追加する

  1. Fields タブで Manage Fields ダイアログを開き、このアクティビティで使用する “Date” field を選択します。Save をクリックします。
  2. Search Elements タブに移動します。“Date” field 用の Date 型 search element が自動的に作成され、マッピングされています。
2

kwDate ラベルを含む IssueDateGroup を作成する

  1. “IssueDateGroup” という名前の Group search element を作成し、オプションに設定します。
  2. グループ内に “kwDate” という名前の Static Text 要素を追加します。これにより、実際の日付の位置を特定する手がかりとなるラベルを見つけます。
  3. この document class にはオランダ語またはフランス語の文書が含まれるため、Text to find ダイアログでラベルテキストの候補を別々の行に入力します。1 行目に “Date”、2 行目に “Datum” を入力します。
  4. Search for parts of words オプションを無効にします。
3

グループに Date 要素を追加する

“Date” search element をグループにドラッグアンドドロップし、“kwDate” 要素の下に配置します。
4

Date 要素の search area を設定する

  1. 要素の作成時に自動的に追加された Nearest to 関係を削除します。
  2. 検索対象の要素に最も近い要素として “kwDate” 要素を選択します。
  3. 日付はキーワードの右側または下側に配置されることがあります。“kwDate” 要素の下の search area を指定します。
  4. search area には、キーワードがある行も含める必要があります。要素名の右側にある下側境界アイコンをクリックし、Top Boundary of Region を選択します。行の高さがそろっていない場合があるため、search area が行の少し上まで広がるように Below の値を -10 に設定します。
5

日付が見つかることを確認する

Match をクリックして、日付が正しく特定されることを確認します。search element の構造は次のようになります。
ベルギー・オランダ語の発行日に対する search element の階層: kwDate キーワードと Date 要素を含む IssueDateGroup

病欠日付の抽出

これらの日付は Key value 要素を使用して抽出します。Key value 要素では、固定テキストのラベルと値の両方を検索できます。ただし、値の位置や特性のばらつきにはあまり対応できません。
1

SicknessDatesGroup と EndDate 要素を作成する

  1. “SicknessDatesGroup” という Group 要素を作成します。要素はオプションにします。
  2. 開始日の静的テキストは省略されることがあるため、まず終了日を検索します。“EndDate” という Key value 要素を作成して設定します。 a. Text to find field に “au”、“jusqu’au”、“tot en met” を各行に入力します。 b. Gap between key and value オプションを無効にします。 c. 値の型を Date に設定します。
2

StartDate要素のコピーを作成します

  1. “EndDate” 要素をコピーして貼り付け、名前を “StartDate” に変更します。
  2. Text to find を調整します。今回は “du” または “van” という単語を検索します。
  3. Match をクリックし、Advanced Designer で日付が正しく見つかったことを確認します。
3

開始日ラベルのない文書に StartDateNoLabel 要素を追加します

セット内の2番目のドキュメント (“BE-NL 02.png”) を選択します。このドキュメントには、日付に加えて病気休暇期間に関する情報も含まれていることがわかります。また、このドキュメントでは開始日にラベルがありません。まず、開始日を抽出するための追加の要素を設定します。a. “StartDateNoLabel”という名前のDate要素を作成します。 b. 日付フォーマットを「日、月、年」に設定します。 c. 要素の検索範囲を”EndDate”の左側に指定します。 d. 終了日と同じ行にある日付を見つけたいため、要素が”EndDate”の上かつ下に位置するよう指定します。次に、対応するリレーションの近くにある下端境界と上端境界のアイコンをクリックして、検索の基準となる要素の境界を変更します。検索範囲は、“EndDate”の上端より下、かつその下端より上に配置されるようにします。このように設定すると、検索範囲を”EndDate”がある行に限定できます。 e. “StartDate”要素が見つかっている場合は、この要素を検索する必要はありません。PropertiesペインのUnder what conditions領域で、Do not find element ifの右側にあるプラスアイコンをクリックします。 f. ドロップダウンメニューでOther Element Is Found…を選択し、次に”StartDate”要素を選択します。 g. “StartDate”要素に戻ります。これが見つからない場合、後続の要素のhypothesis qualityが低下し、対応する領域はfieldに渡されません。これを避けるには、PropertiesペインのUnder what conditions領域に移動し、この要素のMin. hypothesis qualityを1に設定します。
4

病気休暇の期間を抽出する

  1. “Duration” という名前の Key value 要素を作成します。
  2. Text to find フィールドに、文字列 “durée de :” と “Gedurand” を貼り付けます。
  3. Gap between key and value オプションを無効にします。
  4. 値の型を Character String に設定し、文字セットを編集します。数字だけを含めるようにしてください。
  5. 最大文字数を 3 に設定します。
  6. Match をクリックし、値が正しく見つかったことを確認します。
検索要素の構造は次のようになります。
ベルギーオランダ語の病気日付用の検索要素の階層: EndDate、StartDate、StartDateNoLabel、Duration の Key value 要素を含む SicknessDatesGroup
5

fieldを作成してマッピングする

  1. Manage Fieldsダイアログを開き、“Duration”という名前の新しいText fieldを作成します。データ型をNumberに変更します。
  2. このアクティビティで使用する”Start Date”フィールドと”End Date”フィールドを選択します。Saveをクリックします。
  3. fieldをマップします。
    NameSearch element
    End DateEndDate
    DurationDuration
    Start Date以下を参照
    “Start Date”フィールドには、このフィールドにRegionを渡す可能性のあるsearch elementが2つあります。コードを使用して各要素が見つかったかどうかを確認し、対応するRegionをフィールドに渡します。Get region fromリストでCodeを選択し、次のコードをCode Editorに貼り付けます。
    if SicknessDatesGroup.StartDate.IsFound then OutputRegion = SicknessDatesGroup.StartDate.Rect;
    else if SicknessDatesGroup.StartDateNoLabel.IsFound then OutputRegion = SicknessDatesGroup.StartDateNoLabel.Rect;
    
  4. フィールドを有効にしたときに自動的に作成された要素を削除します。

患者データの抽出

これらの文書に含まれる患者データは、ドイツの病欠証明書ほど定型的ではありません。多くのデータ項目が欠けている場合があります。常に記載されているのは、患者の氏名だけです。
1

患者情報を含む段落を特定します

  1. “PatientParagraphGroup” という名前の Group 要素を作成します。要素はオプションに設定します。
  2. 患者データの前には、医師が患者を診察したことを述べる文があります。この文を特定するために、この文に含まれる語句を検索します。“kwExamined” という名前の Static Text 要素を作成します (Text to find: “interrogé” または “ondervraagd”) 。
  3. 患者データの後には、医師が患者に何ができないかを述べる結論があります。この結論を特定するために、“kwIncapable” という名前の Static Text 要素を作成します (Text to find: “incapable”、“niet in staat”、“onbekwaam”、“déclare que :”) 。
  4. 患者データを含む段落は、先ほど見つけた 2 つのキーワードの間にあります。次の設定で Paragraph 要素を作成します。
    プロパティ
    名前NameAddressParagraph
    最小行数1
    最大行数4
    最小行幅200
    検索領域”kwExamined” の下、“kwIncapable” の上、“kwExamined” に最も近い
  5. Match をクリックします。
2

PatientGroup と AdditionalDataGroup を作成する

  1. 段落からデータを抽出するために、“PatientGroup” という名前の任意のグループを作成します。
  2. まず、見つけやすく、一部のドキュメントにのみ存在する追加データを抽出します。“PatientGroup” グループ内に、“AdditionalDataGroup” という名前の任意のグループを作成します。
  3. 患者の生年月日を抽出するには、“BirthDate” という名前の Date 要素を作成します。ドキュメントにデータがない場合でもこの要素を抽出できるように、Min. hypothesis quality を調整します。
  4. “NameAddressParagraph” 内の検索領域を指定するには、Code Editor を使用します。
    RSA: PatientParagraphGroup.NameAddressParagraph.Rects;
    
  5. 患者名の後に、通常はかっこで囲まれた 11 桁の数値 ID が続く場合があります。この ID を抽出するには、次の設定で Character String 要素を作成します。
    プロパティ
    名前PatientID
    メソッドRegular Expression
    正規表現("("|)N{11}(")")
    文字数{11, 11, 13, 13}
    語の一部を検索無効
    Regular Expression Editor では固有の構文を使用します。詳しくは、Character String トピックを参照するか、エディターで Syntax help をクリックしてください。
3

患者の氏名を検索する

  1. “PatientGroup” グループ内に、“NameGroup” という名前のオプション グループを作成します。
  2. まず、一部のドキュメントに含まれるラベルを除外します。“NameLabel” という名前の Static Text 要素 (検索するテキスト: “Nom, prénom du patient :” または “Patiente”) を作成します。大文字と小文字を区別 オプションを有効にし、最小仮説品質 を 1 に変更します。
  3. 名前は先頭が大文字の 2 語または 3 語で構成されると見なし、正規表現を使用して検索します。次の設定で Character String 要素を作成します。
    プロパティ
    名前Name
    メソッド正規表現
    正規表現(([A-Z])(C|"-"){1-}s)
    許容エラー0%
    単語数{2, 2, 3, 3}
    語の一部を検索無効
    検索領域ページ上端に最も近い位置、“PatientID” と “NameLabel” を除外
    Code Editor の Search Conditions セクションRSA: PatientParagraphGroup.NameAddressParagraph.Rects;
4

患者の住所を検索する

患者の住所が存在する場合、その住所は、これまでに見つかったすべての要素より下にある “NameAddressParagraph” 内にあります。“PatientGroup” グループで、次の設定で Paragraph 検索要素を作成します。
プロパティ
名前AddressParagraph
検索領域”Name”、“BirthDate”、“AdditionalDataGroup” の下
Code Editor の Search Conditions セクションRSA: PatientParagraphGroup.NameAddressParagraph.Rects;
検索要素の構造は次のようになります。
ベルギー・オランダ語の患者データに対する検索要素の階層: kwExamined、kwIncapable、NameAddressParagraph を含む PatientParagraphGroup と、AdditionalDataGroup、NameGroup、AddressParagraph を含む PatientGroup
5

患者のfieldをマッピングする

  1. Manage Fieldsダイアログを開き、このアクティビティで使用する「Patient」グループ内の以下のfieldを選択し、次のようにsearch elementにマッピングします。
    名前検索要素
    氏名PatientGroup -> NameGroup -> Name
    生年月日PatientGroup -> AdditionalDataGroup -> BirthDate
    保険者番号PatientGroup -> AdditionalDataGroup -> PatientID
    住所PatientGroup -> AddressParagraph
  2. fieldを有効にした際に自動作成された要素を削除します。

医師データの抽出

医師に関する情報は通常、病欠証明書の下部にあり、通常はIDが含まれます。まず署名を特定し、次にIDを検索します。最後に、IDを含む段落を検索します。
1

SignatureGroup を作成して署名を特定する

  1. “SignatureGroup” という名前の Group 要素を作成します。この要素はオプションにします。
  2. 多くの文書には署名ラベルが含まれています。これを見つけるため、“kwSignature” という名前の Static Text 要素を作成します (Text to find: “Signature” または “handtekening”) 。
  3. 署名そのものを特定するには、次の設定で Object Collection 要素を作成します。
    PropertyValue
    名前Signature
    Picture
    最小幅15
    最小高さ15
    最大幅600
    最大高さ350
    search area”kwSignature” の上境界より下、“kwSignature” に最も近い
2

医師の ID を特定する

  1. “DoctorGroup” という名前の Group 要素を作成します。この要素はオプションにします。
  2. まず、形式が厳密に決まっているため正規表現で定義できる医師IDを検索します。次の設定で Character String 要素を作成します。
    PropertyValue
    名前DoctorID
    メソッドRegular Expression
    正規表現N{1-1}n{1-1}N{5-5}n{1-1}N{2-2}n{1-1}N{3-3}
    文字数{13, 13, INF, INF}
    search areaページ上端に最も近い
  3. 文書によっては医師の肩書きも含まれています。これを特定して、医師データを含む段落から除外します。次の設定で Static Text 要素を作成します。
    PropertyValue
    名前kwDoctorTitle
    Text to findCachet du prescripteur, Médecin, Stempel van de voorschrijver, Identification du médecin (各語句を新しい行に入力)
    Match caseEnabled
    許容エラー10%
    ヌル仮説の品質1
    文書の認識されたテキストをこの field に挿入できます。これを行うには、Text to find ダイアログを開いた状態で、文書画像上の目的の単語を含む領域を描画するだけです。テキストは自動的に新しい行に挿入されます。
  4. 医師データを特定するには、次の設定で Paragraph 要素を作成します。
    PropertyValue
    名前DoctorInformationParagraph
    テキスト配置Left
    行数4 - 6
    search area”kwDoctorTitle” の下、“DoctorID” に最も近い、“IssueDateGroup” を除外
search element の構造は次のようになります。
ベルギー・オランダ語の医師データ用search elementの階層: kwSignature と Signature を含む SignatureGroup、および DoctorID、kwDoctorTitle、DoctorInformationParagraph を含む DoctorGroup
3

医師fieldをマッピングする

  1. Manage Fields ダイアログを開き、このアクティビティで使用する “Doctor” グループ内のすべての field を選択して、次のように search element へマッピングします。
    NameSearch element
    医師情報DoctorInformationParagraph
    署名Signature
    医師 IDDoctorID
  2. field を有効にしたときに自動作成された要素を削除します。

病欠証明書の種類の抽出

ドイツの書類とは異なり、オランダやベルギーの病欠証明書では、この情報の示され方が統一されていません。チェックマークのラベルが一部欠けている場合があり、チェックマーク自体の見た目も異なることがあります。
1

TypeOfSickNoteグループとPrimaryGroupを作成する

  1. Group 要素を作成し、“TypeOfSickNote” という名前を付けます。この要素は任意にします。
  2. 各チェックマークを抽出するには、同じアルゴリズムを使用します。まず 1 つの要素グループを設定し、それをコピーして必要なプロパティを調整します。 a. “PrimaryGroup” という名前の任意のグループを作成します。 b. まず、キーワードの位置を特定する必要があります。“kwCheckmark” という名前のStatic Text 要素を作成します (Text to find: “le début de” または “Eerste ongeschiktheid”) 。 c. この要素を必須にします。キーワードが見つからない場合、Advanced Designer は対応するチェックマークを検索しません。
2

Checkmark、XMark、CheckmarkRegion の各要素を作成する

次に、チェックマークを検索します。まず実際のチェックマークを検索し、次に文字 "x" を含む文字列を検索します。チェックマークまたは X マークに対して見つかった矩形を、field にマッピングする Region search element に割り当てます。Primary チェックマークを特定するには、次の要素を作成します。
PropertyValue
Object Collection search element:
NameCheckmark
TypeCheckmark
Maximum height100
Search area”kwCheckmark” の top boundary より下、Below value = -15、“kwCheckmark” の左、“kwCheckmark” の bottom boundary より上、Above value = -15、“kwCheckmark” に最も近い
Min. hypothesis quality1 (チェックマークが見つからなかった場合に hypothesis chain quality が低下しないように、この設定を調整します)
Character String search element:
NameXMark
MethodCharacters
Character set[]|Xx
Word count{1, 1, 1, 1}
Character count{1, 1, 3, 3}
Search for parts of wordsDisabled
Search area”kwCheckmark” の top boundary より下、Below value = -15、“kwCheckmark” の左、“kwCheckmark” の bottom boundary より上、Above value = -15、“kwCheckmark” に最も近い
Under what conditions”Checkmark” が見つかった場合は要素を検索しない
Region search element:
NameCheckmarkRegion
“CheckmarkRegion” 要素では、Code EditorSearch Conditions セクションに次のコードを貼り付けます。
if Checkmark.IsFound then 
   RSA: Checkmark.Rect;
else if XMark.IsFound then 
   RSA: XMark.Rect;
else DontFind;
3

SecondaryGroupとRelapseGroupを作成する

  1. “PrimaryGroup” のコピーを作成し、名前を “SecondaryGroup” に変更します。次に、その “kwCheckmark” 要素の検索対象テキストを “prolongation”、“verlenging” に変更します。
  2. ドイツの病欠証明書は2種類に分かれています。一方、オランダとベルギーの病欠証明書は3種類に分かれています (‘relapse’ が追加の種類です) 。そのため、“PrimaryGroup” グループのコピーをもう1つ作成し、名前を “RelapseGroup” に変更します。
  3. その “kwCheckmark” 要素の検索対象テキストを “Herval” に変更し、文中に現れる単語を除外するため、大文字と小文字を区別 オプションを有効にします。
検索要素の構造は次のようになります。
ベルギー・オランダの病欠証明書の種類の検索要素階層: PrimaryGroup、SecondaryGroup、RelapseGroup を含む TypeOfSickNote。各グループには kwCheckmark、Checkmark、XMark、CheckmarkRegion 要素が含まれます
4

「Relapse」のチェックマークを追加し、fieldをマッピングする

  1. Manage Fields ウィンドウを開き、“再発” チェックマークを “病欠証明書の種類” チェックマークグループに追加します。現在のアクティビティで使用できるよう、グループ内のすべてのチェックマークを有効にし、Save をクリックします。
  2. チェックマークを対応する Region 要素にマッピングし、field を有効にしたときに自動的に作成された要素を削除します。

アクティビティのテスト

必要な検索要素とfieldはすべて設定しました。すべてのdocumentsを選択し、Match をクリックして Fields タブに切り替え、ドキュメント画像上のfieldの領域を確認します。最良パスの仮説に属している場合にのみ、その領域はfieldに渡されることに注意してください。 結果に問題がなければ、ドキュメント画像上部のコピーiconをクリックして、予測ラベリングを基準ラベリングにコピーします。

次のステップ

ステップ 9. ビジネスルールを設定する

抽出されたfieldの値を検証して正規化するためのビジネスルールを追加します。

チュートリアルの概要

チュートリアルの冒頭に戻ります。