跳轉到主要內容
我們已經開始從德文文件擷取資料,因此先為這些文件設定「Extraction Rules(擷取規則)」活動。

前置步驟

  1. Activity Editor 中開啟 “Sick Note DE” 活動。
  2. 從文件集中選擇一份文件。
  3. 確認已啟用元素屬性的進階模式。若要切換此模式的開啟或關閉,請按一下 Properties 窗格上的圖示。
  4. 所有上傳的文件都已經過預先辨識,檢視在影像上找到了哪些物件會很有幫助。按一下圖示。若因螢幕大小而看不到此圖示,請按一下圖示並選擇 Recognized Words。相對應的物件會在文件影像上以反白方式標示。您可以隨時在各種已反白的物件類型之間切換。例如,在尋找段落時,切換為 Recognized Lines 會很有幫助,而切換為 Separators 則能協助設定 Separator 搜尋元素。
  5. 如果搜尋元素位於搜尋區域之外,將無法被找到。請在文件影像的快顯功能表中啟用 Show search area 選項。當您評估比對結果時,每個元素的搜尋區域會以綠色反白顯示。
請記住,嘗試調整搜尋元素的進階屬性可能有助於提升資料擷取的準確度。 我們也建議您經常按一下 Match,以檢查擷取規則的運作方式,並比較此文件集內不同文件的擷取結果。您可以在不考慮與其他元素關聯的情況下,透過在其快顯功能表中按一下 Match Element 來測試單一元素。在這種情況下,先前元素的假設品質不會影響比對結果。

擷取病患的資料

現在先從擷取病患缺少的資料開始。為此,我們需要建立數個搜尋元素。 建議將與同一實體相關的所有元素分組。元素會依序進行比對,若找不到最上層元素,會降低後續元素的假設品質。與此同時,各組搜尋元素在比對時會彼此獨立處理,並為每個群組分別建立假設。如此一來,您可以控制元素彼此之間的影響。您也可以透過檢查群組中的元素是否都成功找到,一眼評估比對結果。最後,分組有助於縮短比對時間。
  1. 按一下 Create Element,然後在下拉式清單中選取 Group 元素。將其名稱變更為 “PatientDataArea”。
  2. 新建立的群組搜尋元素預設為必要元素。如果找不到必要元素,Activity Editor 就會發生錯誤並中止比對。這種做法可讓在不適用於特定文件時略過該活動。不過,在本教學中,我們要建立一個從所有輸入文件擷取資料的活動,因此希望讓此群組為選用。在 Under what conditions 區段中,將 Element is 的值變更為 Optional
  3. 我們想要找到並擷取包含病患姓名與地址的段落。在德文文件中,我們要找的這個段落一律位於標籤為 “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 中按一下元素名稱,便會看到文件上對應區域的外框顯示為紫色。
注意: 如果未找到某個元素,您會在其名稱旁看到一個橙色圓點,且文件影像周圍會出現橙色外框。請記住,元素的假設品質會影響鏈中後續元素的狀態,以及整條鏈的整體品質。您可以在說明文件中找到有關假設品質的詳細說明。
  1. 現在來找出包含病患姓名與地址之儲存格的下邊界。我們將使用 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 區段中按一下各元素的名稱來檢查每個元素的假設結果。
  2. 標籤與分隔線是病患資料的可靠參考元素。但是,如果列印品質太差,就有可能導致標籤文字無法被辨識,或是分隔線無法被找到。為了確保良好的擷取結果,我們將搜尋位於標籤與分隔線之間的段落。段落是一個連續且一致的文字區塊,這表示即使有部分邊界元素未被找到,也仍然可以成功找到它。 a. 建立一個 Paragraph 搜尋元素,並將其命名為 “NameAddressParagraph”。 b. 將 Text alignment 變更為 Left。 c. 病患資料佔用 2 到 5 行,因此請將 Line count 指定為從 2 到 5。 d. 為段落指定搜尋區域。這次您應該使用 Where to search 區段中的 Add 功能表。該元素應位於 “kwPatientTitle” 元素下方以及 “SeparatorBottom” 元素上方。 e. 按一下 Match
  3. 現在我們要擷取病患的資料。建立一個名為 “PatientGroup” 的新群組元素。
  4. 病患姓名可能佔用一或兩行。為了擷取元素的多個實例,我們將使用重複群組。 a. 建立一個 Repeating Group 搜尋元素,並將其命名為 “NameGroup”。將最大重複次數指定為 2。將此元素設為選用。 b. 我們希望搜尋屬於 “NameAddressParagraph” 段落的各行。若要將該元素的區域指定為搜尋區域,請按一下文件影像下方的程式碼編輯器圖示,並在 Code EditorSearch Conditions 區段貼上下列指令碼:
RSA:PatientDataArea.NameAddressParagraph.Rect;
c. 在重複群組內建立一個用於擷取一行字元的 Character String 元素,將其命名為「NameLine」。 d. 我們要尋找的文字可能包含大寫與小寫字母,以及一組可能出現在姓名中的標點符號。請設定兩個不同的字元集。第一個字元集應包含所有拉丁文大、小寫字母。若要加入含變音符號的字元,請變更 Unicode 子範圍,或將這些字元直接貼入 Selected characters 欄位中。 e. 另一個字元集應包含以下標點符號: ,-.()‘。我們不希望字串只包含標點符號,因此請將第二個字元集的 Portion in text, % 設為 40%。此屬性定義了來自特定字元集的字元所允許的最大百分比。 注意: 預設值允許字串最多包含 30% 不屬於任何字元集的字元。這有助於在某些字元被錯誤辨識或未包含在字元集中(例如含變音符號的字元)時,仍能找到字串。您可以在 Properties 窗格中變更 Allowed errors 值來調整此設定。 f. 停用 Search for parts of words 選項。 g. 為「NameLine」元素指定搜尋區域:在「kwPatientTitle」元素之下且最接近它的位置。 h. 按一下 Match,並檢視 Tree of Hypotheses。您會看到找到兩個字串。不過,第二個字串包含病患的地址。 i. 若要將地址從搜尋結果中排除,我們會檢查第一個字串是否同時包含名字與姓氏。這可以透過新增一個簡單的指令碼搜尋條件來完成。選取「NameLine」搜尋元素並開啟 Search Conditions 程式碼編輯器。 j. 我們假設若第一行同時包含逗號和空白字元,則其包含全名。若其包含全名,我們就不希望再搜尋第二個重複群組的實例。將以下指令碼貼到編輯器中:
if (NameGroup.HasInstances and LastFound.NameLine.Value.Find(", ") > 0) then DontFind;
k. 按一下 Match,並確保成功找到正確的名稱。
  1. 在步驟 7 中擷取的患者姓名會對應到「Name」欄位。我們也會擷取並對應患者的地址。 a. 在「PatientGroup」內,建立一個名為「Address」的 Character String 搜尋元素,其字元集設定需與「NameLine」元素相同。 b. 使用程式碼為此元素指定搜尋區域:地址必須位於「NameLine」下方;或者如果未找到此元素,則必須位於「NameAddressParagraph」元素第一行的下方。
RSA: PatientDataArea.NameAddressParagraph.Rect;
if NameGroup.HasInstances then
  RSA.Top: Max(RSA.Top, LastFound.NameLine.Rect.Bottom);
else
  RSA.Top: PatientDataArea.NameAddressParagraph.Lines[0].Rect.Bottom;
c. 停用 Search for parts of words 選項。d. 按一下 Match 搜尋元素的結構應如下所示: AD_Tutorial_DE_Patient_Structure
  1. 開啟 Manage Fields 對話方塊,建立對應的欄位,並將它們對應到搜尋元素,如下所示:
NameTypeSearch element
Name”Patient” 群組中的文字欄位NameLine
Address”Patient” 群組中的文字欄位Address
  1. 刪除針對新欄位自動建立的搜尋元素。

擷取病假證明的類型

病假證明類型欄位有兩個核取方塊,其標籤為「Erstbescheinigung」與「Folgebescheinigung」。任務是先找到這些標籤,然後檢查其旁邊是否有已勾選的核取標記。
  1. 建立一個名為 “TypeOfSickNoteGroup” 的 Group 元素。將此元素設為選填。
  2. 為了儲存這兩個勾選標記的資訊,建立一個 重複群組 搜尋元素,並將其命名為 “PrimaryGroup”。 a. 建議的做法是限制此元素群組的搜尋區域。使用程式碼指定搜尋區域:在 “PatientGroup” 元素的右側,且在(稍後將建立的)“DoctorAreaGroup” 元素的上方。**Note: **在使用未來才會建立的元素時,請務必指定 “Exists” 條件。
if PatientGroup.Exists then RSA.Left: PatientGroup.NameGroup.NameLine.Rect.Right;
if DoctorAreaGroup.Exists then RSA.Bottom: DoctorAreaGroup.DataArea.SeparatorTop.Rect.Top;
b. 建立名為 “kwPrimary” 的 Static Text 搜尋元素(要查找的文字:“Erstbescheinigung”),並將其設為必填。 c. 建立名為 “Checkmark” 的 Object Collection 搜尋元素,並設定以下參數:Type:Checkmark,Checkmark state:Checked,Minimum height:10,Maximum width:20,Maximum height:20。指定該元素位於 “kwPrimary” 元素的左側,且與其最近。 d. 按一下 Match
  1. 複製並貼上 “PrimaryGroup” 群組。將複製的群組重新命名為 “SecondaryGroup”。此群組為必填。
  2. 編輯 “SecondaryGroup”。 a. 將 “kwPrimary” 元素重新命名為 “kwSecondary”,並將要查找的文字設定為 “Folgebescheinigung”。指定搜尋區域:位於 “PrimaryGroup” 中 “kwPrimary” 元素的下方。 b. 為 “Checkmark” 元素指定搜尋區域:位於 “kwSecondary” 的左側,且與其最近。 c. Object Collection 搜尋元素會在搜尋區域內找出所有符合條件的物件集合。如果核取記號位於同一行中,“SecondaryGroup” 的 “Checkmark” 元素也可能找到 PrimaryGroup 的核取記號。為避免這種情況,請將主要核取記號(“PrimaryGroup” 的 “Checkmark” 元素)從 “SecondaryGroup” 的 “Checkmark” 元素搜尋區域中排除。 d. 按一下 Match
搜尋元素結構應如下所示: AD_Tutorial_DE_TypeOfSickNote_Structure
  1. 開啟 Manage Fields 視窗,建立對應的欄位,並按照下表將它們對應到搜尋元素:
NameTypeSearch element
Type of Sick NoteCheckmark group
Primary”Type of Sick Note” 核取記號群組中的 CheckmarkPrimaryGroup -> Checkmark
Secondary”Type of Sick Note” 核取記號群組中的 CheckmarkSecondaryGroup -> Checkmark
  1. 刪除為新欄位自動建立的搜尋元素。

擷取醫師資料

現在我們需要處理這些文件上最後一個資料區塊。它包含醫師的資料和簽名。我們會先找到承載這些資料的方框,然後從中擷取包含醫師資訊的段落,以及包含簽名的影像區域。
  1. 建立一個名為 “DoctorAreaGroup” 的 Group 元素。將此元素設為非必填。
  2. 我們要尋找的方框包含一個標籤。為了找到它,建立一個名為 “kwDoctorTitle” 的 Static Text 元素(要尋找的文字:“Unterschrift des Arztes”)。
  3. 在 “DoctorAreaGroup” 群組內,再建立一個名為 “DataArea” 的群組。
  4. 包含醫師資訊與簽名的方框是由四條分隔線組合而成。它們位於 “kwDoctorTitle” 元素的周圍。不過,我們必須以一種方式來設定這些元素,使程式即使找不到 “kwDoctorTitle” 元素,也仍然可以找到它們。在 “DataArea” 群組中,建立四個具有下列屬性的 Separator 搜尋元素:
NameOrientationMinimum lengthSearch area
SeparatorRightVertical180位於 “kwDoctorTitle” 右側、最靠近右側頁面邊緣
SeparatorLeftVertical180位於 “kwDoctorTitle” 左側、位於 “SeparatorRight” 左側(如果找不到 “kwDoctorTitle” 時)、最靠近 “SeparatorRight”、位於 “SeparatorRight” 下方(按一下分隔線名稱右側的 icon,並選取 Top Boundary of Region)、排除 “SeparatorRight”
SeparatorBottomHorizontal200位於 “kwDoctorTitle” 下方(調整 -10 點)、位於 “SeparatorLeft” 右側、位於 “SeparatorRight” 左側、最靠近頁面下邊緣(如果找不到 “kwDoctorTitle”,此設定會很有用)
SeparatorTopHorizontal200位於 “kwDoctorTitle” 上方、位於 “SeparatorLeft” 右側、最靠近 “TypeOfSickNoteGroup”、排除 “SeparatorBottom”
同時請為這些元素全部停用 Fits entirely within search area 選項。
  1. 原本我們可以根據找到的分隔線,手動指定醫師簽名與醫師資訊的搜尋區域。但我們不打算這麼做,而是要建立一個 Region 元素,對應於由這些分隔線所圍成的區域。建立一個名為 “BoxRegion” 的 Region 搜尋元素,並指定搜尋區域:位於 “SeparatorRight” 左側、位於 “SeparatorLeft” 右側、位於 “SeparatorBottom” 上方,以及位於 “SeparatorTop” 下方。
  2. 建立一個名為 “DoctorGroup” 的新群組。
  3. 為了定位醫師簽名,在 “DoctorGroup” 中建立一個具有下列設定的 Object Collection 元素:
PropertyValue
NameSignature
TypePicture
Minimum width15
Minimum height15
Maximum width600
Maximum height350
Search Conditions section of the Code Editor簽名的一部分可能位於方框外側。為了找到整個影像,我們會將搜尋區域向四個方向各擴展 100 點:RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect.GetInflated(100dot,100dot);
  1. 為了擷取方框內的文字資訊,建立一個具有下列設定的 Paragraph 元素:
PropertyValue
NameDoctorInformation
Maximum line count6
Search area位於 “kwDoctorTitle” 上方、排除 “Signature”
Search Conditions section of the Code EditorRSA: DoctorAreaGroup.DataArea.BoxRegion.Rect;
  1. 按一下 Match,並確認這些元素都能正確被找到。
搜尋元素結構應如下所示: AD_Tutorial_DE_Doctor_Structure
  1. 開啟 Manage Fields 對話方塊,建立對應的欄位,並將它們對應到搜尋元素如下:
NameTypeSearch element
Doctor Information”Doctor” 群組中的 Text 欄位DoctorInformation
Signature”Doctor” 群組中的 Image 欄位Signature
  1. 刪除為新欄位自動建立的搜尋元素。

測試活動

我們已完成所有必要的搜尋元素和欄位設定。請選取所有文件,按一下 Match,然後切換到 Fields 分頁,以檢視文件影像上的欄位區域。請注意,只有當某個區域屬於最佳路徑中的假設時,才會傳遞到欄位中。 當您對結果感到滿意時,請按一下文件影像上方的複製 icon,將預測標記複製到參考標記。