ドイツの文書に対する Extraction Rules activity の設定を続けます。Fast Learning ですでに一部の field は処理されているため、このアクティビティでは残りを扱います。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.
開始する前に
抽出精度を高めるために、検索要素の詳細プロパティを試してみると有効な場合があります。
また、抽出ルールの動作を確認し、セット内の異なるドキュメントで抽出結果を比較するため、頻繁に Match をクリックすることをお勧めします。コンテキストメニューで Match Element をクリックすると、他の要素との関連なしに単一の要素をテストできます。この場合、先行要素の仮説品質は照合結果に影響しません。
患者データの抽出
PatientDataArea グループを作成する
- Create Element をクリックし、ドロップダウンリストから Group 要素を選択します。名前を “PatientDataArea” に変更します。
- Under what conditions セクションで、Element is の値を Optional に変更します。
Static Text 要素で患者ラベルを見つける
ドイツの文書では、患者の氏名と住所を含む段落は、常に “Name, Vorname …” というラベルの field 内にあります。このテキストを文書上で見つけ、それを基準にして、抽出したいデータを検索します。
- Create Element をクリックし、ドロップダウンリストから Static Text 要素を選択します。名前を “kwPatientTitle” に変更します。
- Properties ペインの Text to find field に “Name, Vorname” と入力します。
- Match をクリックします。処理が完了すると、文書の下に Tree of Hypotheses が表示されます。Advanced Designer が目的の静的テキストを正しく見つけたことを確認してください。要素名の横に緑色の点が表示されていれば、照合成功です。Tree of Hypotheses で要素名をクリックすると、文書上の該当する領域が紫色のフレームで囲まれて表示されます。
要素が見つからなかった場合は、名前の横にオレンジ色の点が表示され、文書画像の該当箇所がオレンジ色のフレームで囲まれます。要素の仮説の品質は、チェーン内の後続要素の状態やチェーン全体の品質に影響する点に注意してください。仮説の品質の詳細については、ドキュメントを参照してください。
Separatorを使って下側の境界を特定する
Separator 要素を使用して、患者の氏名と住所を含むセルの下境界を見つけます。
- グループに Separator 要素を追加し、“SeparatorBottom” という名前を付けます。最小長を 200 に設定します。
- 要素を右クリックし、コンテキストメニューから Match Element を選択します。Tree of Hypotheses には多数の緑色の点が表示されます。これらは、検索条件に一致するさまざまな区切り線に対応しています。各点をクリックすると、画像上の対応するオブジェクトを確認できます。
- 検索条件をさらに絞り込むため、区切り線の検索領域を指定します。Match をクリックして、アンカー要素として使用する “kwPatientTitle” 要素を見つけます。Properties ペインの Where to search セクションで、Draw on Image をクリックします。ドキュメント上の “kwPatientTitle” 要素を選択し、下向き矢印アイコンをクリックしてキーワードの下側を検索領域として指定します。次に、最も近いアイコンをクリックして、キーワードに最も近い区切り線を検索します。
- Match をクリックし、Advanced Designer が “kwPatientTitle” 要素の下にある区切り線を検出したことを確認します。
氏名と住所が記載された段落を探します
患者データについては、ラベルと区切り線が信頼できる参照要素です。ただし、印字品質が低すぎると、ラベルのテキストが認識されなかったり、区切り線が検出されなかったりすることがあります。良好な抽出結果を得るには、ラベルと区切り線の間にある段落を検索します。段落は均一なテキストブロックであり、境界要素の一部が見つからなかった場合でも正常に検出できます。
- Paragraph の search element を作成し、“NameAddressParagraph” という名前を付けます。
- Text alignment を Left に変更します。
- 患者データは2行から5行にわたるため、Line count を 2 ~ 5 に指定します。
- Where to search セクションの Add メニューを使用して、段落の search area を指定します。この要素は、“kwPatientTitle” 要素の下、“SeparatorBottom” 要素の上に配置する必要があります。
- Match をクリックします。
繰り返しグループ「NameGroup」を設定する
患者の名前は、1 行または 2 行にわたる場合があります。要素の複数のインスタンスを取得するには、繰り返しグループを使用します。
- 繰り返しグループ 検索要素を作成し、“NameGroup” という名前を付けます。最大繰り返し回数に 2 を指定します。要素はオプションにします。
-
検索範囲を “NameAddressParagraph” 段落に含まれる行のみに制限するには、文書画像の下にある Code Editor アイコンをクリックし、次のスクリプトを Search Conditions セクションの Code Editor に貼り付けます。
- 繰り返しグループ内に、1 行分の文字列を取得するための Character String 要素を作成します。“NameLine” という名前を付けます。
-
検索対象のテキストには、ラテン文字の大文字・小文字と、いくつかの句読記号が含まれる場合があります。2 つの文字セットを個別に設定します。
- 1 つ目のセットには、ラテン文字の大文字と小文字をすべて含めます。ダイアクリティカルマーク付きの文字を追加するには、Unicode サブレンジを変更するか、文字を Selected characters field に直接貼り付けます。
- 2 つ目のセットには、次の句読記号を含めます: ,-.()’. 文字列が句読記号だけにならないように、2 つ目のセットの Portion in text, % を 40% に設定します。
- Search for parts of words オプションを無効にします。
- “NameLine” 要素の検索範囲を指定します。“kwPatientTitle” 要素の下で、かつその最も近くに設定します。
- Match をクリックし、Tree of Hypotheses を確認します。2 つの文字列が見つかりますが、2 つ目の文字列には患者の住所が含まれています。
-
検索結果から住所を除外するには、スクリプト検索条件を追加します。“NameLine” 検索要素を選択し、Search Conditions の Code Editor を開きます。次のスクリプトを貼り付けます。これは、1 行目にカンマと空白が含まれている場合、その行には氏名が含まれていると見なし、氏名が見つかった場合は繰り返しグループが 2 つ目のインスタンスの検索を停止することを前提としています。
- Match をクリックし、名前が正しく検出されることを確認します。
既定の設定では、どのセットにも含まれない文字を文字列に最大 30% まで含めることができます。これにより、一部の文字が誤って認識された場合や、セットに含まれていない場合 (ダイアクリティカルマーク付き文字など) でも、文字列を検出しやすくなります。この設定は、Properties ペインの Allowed errors の値を変更して調整できます。
Address要素を設定する
前のStepで抽出した患者名は、“Name” field にマッピングされます。次に、患者の住所を抽出します。
- “PatientGroup” 内に、“NameLine” 要素と同じ文字セット設定を持つ、“Address” という名前の Character String search element を作成します。
-
コードを使って、その要素の search area を指定します。住所は “NameLine” の下、またはその要素が見つからなかった場合は “NameAddressParagraph” 要素の1行目の下にある必要があります。
- Search for parts of words オプションを無効にします。
- Match をクリックします。

病欠証明書の種類の抽出
PrimaryGroup を設定する
2つのチェックマークの情報を保持するために、「PrimaryGroup」という名前の繰り返しグループ検索要素を作成します。
-
コードを使用して要素グループの検索範囲を制限します。「PatientGroup」要素の右側かつ「DoctorAreaGroup」要素 (これは後で作成します) より上の範囲です。
- 「kwPrimary」という名前のStatic Text検索要素 (検索するテキスト: 「Erstbescheinigung」) を作成し、必須にします。
-
次の設定で「Checkmark」という名前のObject Collection検索要素を作成します: Type
Checkmark、Checkmark stateChecked、Minimum height10、Maximum width20、Maximum height20。この要素が「kwPrimary」要素の左側にあり、かつ最も近い位置にあるよう指定します。 - Match をクリックします。
後で作成する要素 (上の「DoctorAreaGroup」など) を参照する場合は、必ず Exists 条件を指定してください。
SecondaryGroup を作成して設定する
- 「PrimaryGroup」グループをコピーして貼り付けます。コピーしたグループの名前を「SecondaryGroup」に変更します。このグループは必須です。
- その中の「kwPrimary」要素の名前を「kwSecondary」に変更し、検索するテキストを「Folgebescheinigung」に設定します。検索範囲は、「PrimaryGroup」の「kwPrimary」要素の下に指定します。
- 「Checkmark」要素の検索範囲を指定します。「kwSecondary」の左側で、かつ最も近い位置です。
- Object Collection検索要素は、検索範囲内にある条件に合うすべてのobjectのcollectionを見つけます。チェックマークが同じ行に配置されている場合、「SecondaryGroup」の「Checkmark」要素が Primary のチェックマークも見つけてしまうことがあります。これを避けるため、検索範囲から primary のチェックマークを除外します。
- Match をクリックします。

医師データの抽出
DoctorAreaGroup と DataArea を作成
- “DoctorAreaGroup” という名前の Group 要素を作成します。この要素は任意とします。
- 探すボックスにはラベルが含まれています。これを見つけるために、“kwDoctorTitle” という名前の Static Text 要素を作成します (検索するテキスト: “Unterschrift des Arztes”) 。
- “DoctorAreaGroup” グループの中に、“DataArea” という名前のグループをもう 1 つ作成します。
境界を成す 4 つの Separator を追加
医師の情報と署名を含むボックスは、4 本のセパレーターの組み合わせによって構成されています。これらは “kwDoctorTitle” 要素の周囲に配置されています。ただし、“kwDoctorTitle” 要素が見つからなかった場合でもプログラムがボックスを見つけられるように、要素を設定する必要があります。“DataArea” グループ内に、次のプロパティを持つ 4 つの Separator 検索要素を作成します。
4 つの要素すべてについて Fits entirely within search area オプションを無効にします。
| Name | Orientation | Minimum length | Search area |
|---|---|---|---|
SeparatorRight | Vertical | 180 | ”kwDoctorTitle” の右側、ページ右端に最も近い位置 |
SeparatorLeft | Vertical | 180 | ”kwDoctorTitle” の左側、“SeparatorRight” の左側 (“kwDoctorTitle” が見つからなかった場合) 、“SeparatorRight” に最も近い位置、“SeparatorRight” の下側 (セパレーター名の右側にあるアイコンをクリックして Top Boundary of Region を選択) 、“SeparatorRight” を除外 |
SeparatorBottom | Horizontal | 200 | ”kwDoctorTitle” の下側 (-10 ポイントのオフセット付き) 、“SeparatorLeft” の右側、“SeparatorRight” の左側、ページ下端に最も近い位置 (この設定は “kwDoctorTitle” が見つからなかった場合に有用です) |
SeparatorTop | Horizontal | 200 | ”kwDoctorTitle” の上側、“SeparatorLeft” の右側、“TypeOfSickNoteGroup” に最も近い位置、“SeparatorBottom” を除外 |
BoxRegion の作成
“BoxRegion” という名前の Region 検索要素を作成し、検索領域を次のように指定します: “SeparatorRight” の左側、“SeparatorLeft” の右側、“SeparatorBottom” の上側、“SeparatorTop” の下側。この領域は 4 本のセパレーターで囲まれた範囲に対応しており、これを使用することで、署名と医師情報の検索領域を手動で指定する必要がなくなります。
Signature の Object Collection を追加する
医師の署名を検出するために、“DoctorGroup” 内に次の設定を持つ Object Collection 要素を作成します。
| 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 | 署名はボックスの外側にはみ出している場合があります。画像全体を検出するため、検索領域を各方向に 100 ドット拡張します: RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect.GetInflated(100dot,100dot); |
DoctorInformation Paragraph の追加
ボックス内のテキスト情報を抽出するには、次の設定を持つ Paragraph 要素を作成します。
| Property | Value |
|---|---|
| Name | DoctorInformation |
| Maximum line count | 6 |
| Search area | ”kwDoctorTitle” の上側、“Signature” を除外 |
| Search Conditions section of the Code Editor | RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect; |
アクティビティのテスト
次のステップ
Step 8. 病欠証明書 BE-NL アクティビティを設定する
オランダとベルギーの病欠証明書向けに、Extraction Rules アクティビティを設定します。
チュートリアルの概要
チュートリアルの概要に戻ります。

