前置步驟
- 在 Activity Editor 中開啟 “Sick Note DE” 活動。
- 從文件集中選擇一份文件。
- 確認已啟用元素屬性的進階模式。若要切換此模式的開啟或關閉,請按一下 Properties 窗格上的圖示。
- 所有上傳的文件都已經過預先辨識,檢視在影像上找到了哪些物件會很有幫助。按一下圖示。若因螢幕大小而看不到此圖示,請按一下圖示並選擇 Recognized Words。相對應的物件會在文件影像上以反白方式標示。您可以隨時在各種已反白的物件類型之間切換。例如,在尋找段落時,切換為 Recognized Lines 會很有幫助,而切換為 Separators 則能協助設定 Separator 搜尋元素。
- 如果搜尋元素位於搜尋區域之外,將無法被找到。請在文件影像的快顯功能表中啟用 Show search area 選項。當您評估比對結果時,每個元素的搜尋區域會以綠色反白顯示。
擷取病患的資料
- 按一下 Create Element,然後在下拉式清單中選取 Group 元素。將其名稱變更為 “PatientDataArea”。
- 新建立的群組搜尋元素預設為必要元素。如果找不到必要元素,Activity Editor 就會發生錯誤並中止比對。這種做法可讓在不適用於特定文件時略過該活動。不過,在本教學中,我們要建立一個從所有輸入文件擷取資料的活動,因此希望讓此群組為選用。在 Under what conditions 區段中,將 Element is 的值變更為 Optional。
- 我們想要找到並擷取包含病患姓名與地址的段落。在德文文件中,我們要找的這個段落一律位於標籤為 “Name, Vorname … ” 的欄位中。我們需要先在文件上找到這段文字,並將其作為搜尋欲擷取資料的參考。
a. 可以使用 Static Text 搜尋元素來尋找關鍵字。按一下 Create Element,然後在下拉式清單中選取 Static Text 元素。將其名稱變更為 “kwPatientTitle”.
b. 在 Properties 窗格的 Text to find 欄位中輸入 “Name, Vorname”。
c. 按一下 Match。處理完成後,您會在文件下方看到 Tree of Hypotheses。請確認 Advanced Designer 已成功找到所需的靜態文字。元素名稱旁的綠點表示已在文件上成功找到對應的元素。若您在 Tree of Hypotheses 中按一下元素名稱,便會看到文件上對應區域的外框顯示為紫色。
- 現在來找出包含病患姓名與地址之儲存格的下邊界。我們將使用 Separator 元素來完成此操作。 a. 將 Separator 元素新增到群組中,並將其命名為 “SeparatorBottom”。將其最小長度設為 200。 b. 以滑鼠右鍵按一下該元素,然後在快顯功能表中選擇 Match Element。您會看到 Tree of Hypotheses 中包含許多綠色圓點。這些圓點對應於符合搜尋條件的不同分隔線。您可以按一下每個圓點,以在影像上查看對應的物件。 c. 若要縮小搜尋條件範圍,請為分隔線指定搜尋區域。按一下 Match 以尋找將用作錨點元素的 “kwPatientTitle” 元素。在 Properties 窗格的 Where to search 區段中,按一下 Draw on Image。在文件上選取 “kwPatientTitle” 元素,並按一下向下箭頭圖示,以指定關鍵字下方的搜尋區域,然後按一下最近的箭頭圖示,以尋找最接近該關鍵字的分隔線。您可以在說明文件中找到關於錨點元素的詳細說明。 d. 按一下 Match,並確認 Advanced Designer 已找到位於 “kwPatientTitle” 元素下方的分隔線。您可以在 Tree of Hypotheses 區段中按一下各元素的名稱來檢查每個元素的假設結果。
- 標籤與分隔線是病患資料的可靠參考元素。但是,如果列印品質太差,就有可能導致標籤文字無法被辨識,或是分隔線無法被找到。為了確保良好的擷取結果,我們將搜尋位於標籤與分隔線之間的段落。段落是一個連續且一致的文字區塊,這表示即使有部分邊界元素未被找到,也仍然可以成功找到它。 a. 建立一個 Paragraph 搜尋元素,並將其命名為 “NameAddressParagraph”。 b. 將 Text alignment 變更為 Left。 c. 病患資料佔用 2 到 5 行,因此請將 Line count 指定為從 2 到 5。 d. 為段落指定搜尋區域。這次您應該使用 Where to search 區段中的 Add 功能表。該元素應位於 “kwPatientTitle” 元素下方以及 “SeparatorBottom” 元素上方。 e. 按一下 Match。
- 現在我們要擷取病患的資料。建立一個名為 “PatientGroup” 的新群組元素。
- 病患姓名可能佔用一或兩行。為了擷取元素的多個實例,我們將使用重複群組。 a. 建立一個 Repeating Group 搜尋元素,並將其命名為 “NameGroup”。將最大重複次數指定為 2。將此元素設為選用。 b. 我們希望搜尋屬於 “NameAddressParagraph” 段落的各行。若要將該元素的區域指定為搜尋區域,請按一下文件影像下方的程式碼編輯器圖示,並在 Code Editor 的 Search Conditions 區段貼上下列指令碼:
- 在步驟 7 中擷取的患者姓名會對應到「Name」欄位。我們也會擷取並對應患者的地址。 a. 在「PatientGroup」內,建立一個名為「Address」的 Character String 搜尋元素,其字元集設定需與「NameLine」元素相同。 b. 使用程式碼為此元素指定搜尋區域:地址必須位於「NameLine」下方;或者如果未找到此元素,則必須位於「NameAddressParagraph」元素第一行的下方。

- 開啟 Manage Fields 對話方塊,建立對應的欄位,並將它們對應到搜尋元素,如下所示:
| Name | Type | Search element |
|---|---|---|
| Name | ”Patient” 群組中的文字欄位 | NameLine |
| Address | ”Patient” 群組中的文字欄位 | Address |
- 刪除針對新欄位自動建立的搜尋元素。
擷取病假證明的類型
- 建立一個名為 “TypeOfSickNoteGroup” 的 Group 元素。將此元素設為選填。
- 為了儲存這兩個勾選標記的資訊,建立一個 重複群組 搜尋元素,並將其命名為 “PrimaryGroup”。 a. 建議的做法是限制此元素群組的搜尋區域。使用程式碼指定搜尋區域:在 “PatientGroup” 元素的右側,且在(稍後將建立的)“DoctorAreaGroup” 元素的上方。**Note: **在使用未來才會建立的元素時,請務必指定 “Exists” 條件。
Checkmark,Checkmark state:Checked,Minimum height:10,Maximum width:20,Maximum height:20。指定該元素位於 “kwPrimary” 元素的左側,且與其最近。
d. 按一下 Match。
- 複製並貼上 “PrimaryGroup” 群組。將複製的群組重新命名為 “SecondaryGroup”。此群組為必填。
- 編輯 “SecondaryGroup”。 a. 將 “kwPrimary” 元素重新命名為 “kwSecondary”,並將要查找的文字設定為 “Folgebescheinigung”。指定搜尋區域:位於 “PrimaryGroup” 中 “kwPrimary” 元素的下方。 b. 為 “Checkmark” 元素指定搜尋區域:位於 “kwSecondary” 的左側,且與其最近。 c. Object Collection 搜尋元素會在搜尋區域內找出所有符合條件的物件集合。如果核取記號位於同一行中,“SecondaryGroup” 的 “Checkmark” 元素也可能找到 PrimaryGroup 的核取記號。為避免這種情況,請將主要核取記號(“PrimaryGroup” 的 “Checkmark” 元素)從 “SecondaryGroup” 的 “Checkmark” 元素搜尋區域中排除。 d. 按一下 Match。

- 開啟 Manage Fields 視窗,建立對應的欄位,並按照下表將它們對應到搜尋元素:
| Name | Type | Search element |
|---|---|---|
| Type of Sick Note | Checkmark group | |
| Primary | ”Type of Sick Note” 核取記號群組中的 Checkmark | PrimaryGroup -> Checkmark |
| Secondary | ”Type of Sick Note” 核取記號群組中的 Checkmark | SecondaryGroup -> Checkmark |
- 刪除為新欄位自動建立的搜尋元素。
擷取醫師資料
- 建立一個名為 “DoctorAreaGroup” 的 Group 元素。將此元素設為非必填。
- 我們要尋找的方框包含一個標籤。為了找到它,建立一個名為 “kwDoctorTitle” 的 Static Text 元素(要尋找的文字:“Unterschrift des Arztes”)。
- 在 “DoctorAreaGroup” 群組內,再建立一個名為 “DataArea” 的群組。
- 包含醫師資訊與簽名的方框是由四條分隔線組合而成。它們位於 “kwDoctorTitle” 元素的周圍。不過,我們必須以一種方式來設定這些元素,使程式即使找不到 “kwDoctorTitle” 元素,也仍然可以找到它們。在 “DataArea” 群組中,建立四個具有下列屬性的 Separator 搜尋元素:
| Name | Orientation | Minimum length | Search area |
|---|---|---|---|
SeparatorRight | Vertical | 180 | 位於 “kwDoctorTitle” 右側、最靠近右側頁面邊緣 |
SeparatorLeft | Vertical | 180 | 位於 “kwDoctorTitle” 左側、位於 “SeparatorRight” 左側(如果找不到 “kwDoctorTitle” 時)、最靠近 “SeparatorRight”、位於 “SeparatorRight” 下方(按一下分隔線名稱右側的 icon,並選取 Top Boundary of Region)、排除 “SeparatorRight” |
SeparatorBottom | Horizontal | 200 | 位於 “kwDoctorTitle” 下方(調整 -10 點)、位於 “SeparatorLeft” 右側、位於 “SeparatorRight” 左側、最靠近頁面下邊緣(如果找不到 “kwDoctorTitle”,此設定會很有用) |
SeparatorTop | Horizontal | 200 | 位於 “kwDoctorTitle” 上方、位於 “SeparatorLeft” 右側、最靠近 “TypeOfSickNoteGroup”、排除 “SeparatorBottom” |
- 原本我們可以根據找到的分隔線,手動指定醫師簽名與醫師資訊的搜尋區域。但我們不打算這麼做,而是要建立一個 Region 元素,對應於由這些分隔線所圍成的區域。建立一個名為 “BoxRegion” 的 Region 搜尋元素,並指定搜尋區域:位於 “SeparatorRight” 左側、位於 “SeparatorLeft” 右側、位於 “SeparatorBottom” 上方,以及位於 “SeparatorTop” 下方。
- 建立一個名為 “DoctorGroup” 的新群組。
- 為了定位醫師簽名,在 “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); |
- 為了擷取方框內的文字資訊,建立一個具有下列設定的 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; |
- 按一下 Match,並確認這些元素都能正確被找到。

- 開啟 Manage Fields 對話方塊,建立對應的欄位,並將它們對應到搜尋元素如下:
| Name | Type | Search element |
|---|---|---|
| Doctor Information | ”Doctor” 群組中的 Text 欄位 | DoctorInformation |
| Signature | ”Doctor” 群組中的 Image 欄位 | Signature |
- 刪除為新欄位自動建立的搜尋元素。
