Pattern OCR vTool#
典型的應用包含序號、批號或其他具有固定結構的文字。在此類情境中,相關的圖像區域在設計上是穩固的,或者可以在前處理步驟中可靠地擷取並對齊。如果您的文字未遵循固定的圖案,請改用 Free-Form OCR vTool。
Pattern OCR vTool 會讀取透過 Image 輸入接腳接收到的圖像中的文字,並將其與型號設定的圖案進行比較。它會透過 Texts、BBoxes_px 與 Scores 輸出接腳輸出結果。
如果您在偵測前使用 ROI Creator vTool 指定感興趣區域,Pattern OCR vTool 會透過其 Roi 輸入接腳接受 ROI 資料。在該情況下,只會對感興趣區域執行偵測。附帶的好處是,這會加快處理速度。
若要執行 Pattern OCR vTool,您需要 pylon Supplementary Package for pylon AI 1.6.1 或更高版本。
若要購買 Pattern OCR vTool 的授權,請造訪 Basler 網站。

運作原理#
假設您想要讀取包裝上的有效期限。這些日期一律使用相同的字型列印,並採用相同的日期格式。
這是您的輸入圖像,顯示有效期限與其他資訊:

您透過載入經過訓練以讀取有效期限的型號來設定 vTool。

在精靈的第一頁上,您可以指定用來替代無法辨識之字元的替代字元。
您也可以看到您可以設定的型號專屬參數。這些參數來自於您所選的型號,因此此處未予記錄。如需關於型號專屬參數的詳細資訊,請在 Features - All 窗格中選取該參數,並檢查其在 Feature Documentation 窗格中的說明。
按一下 Next 以進入精靈的第二頁,您可以在該頁設定字元設定。

型號可以包含預先設定的圖案,您可以保留該圖案。若要自行定義圖案,請載入範例圖像。使用 Single Shot 來擷取目前的圖像,或使用 Open Image 來載入 .png 檔案。如果已連接 Roi 輸入,Single Shot 會使用該區域。旋轉的 ROI 在顯示之前會先拉直。如果已經存在字元標記,請選擇在擷取或開啟另一張圖像時是要保留還是刪除它們。
您可以將每個字元分類為字母 (L)、數字 (D) 或未知 (U)。設定行 (1–10) 以及該行中的單字位置 (1–20)。這些適用於每個選取的字元。在一個選取的字元上設定單字中的字元位置 (1–20)。使用 Shift + 滑鼠左鍵選取數個字元方塊,或使用 Ctrl+A選取全部。行、單字位置與字元位置的每個組合都必須是唯一的。編輯器會回報重複的定義。
建立圖案最簡單的方法是使用 Auto-Recognize Pattern 按鈕。
Auto-recognize 會詢問圖案包含多少行。請輸入 1 到 20 之間的數值。它會在找到的每個字元周圍加上方框,並據此更新字元定義。如果已有標記,請在取代前進行確認。如果找不到任何字元,目前的圖案將保持不變。如果您發現錯誤,請選取字元方框並變更其定義。
若要手動定義字元,請按一下 Mark Character 按鈕。
這會在影像中新增一個字元方框。將其拖曳至所需位置,並視需要編輯字元定義。
Character Pattern 區域可讓您檢查定義是否正確。
設定 vTool 後,執行會啟動推論過程的 recipe。vTool 會利用模型來分析影像並讀取其中的單字和文字片段。分析完成後,即會傳回 OCR 結果。
這是顯示結果的 pin 資料檢視:

影像格式#
根據模型的不同,Image 輸入 pin 接受的影像類型也不同,可以是彩色 (BGR 8 Packed)、單色 (Mono 8),或是彩色與單色影像。
- 如果模型需要彩色影像,彩色 Pixel Format 將會在內部轉換為 BGR 8 Packed。不接受單色影像。
- 如果模型需要單色影像,單色 Pixel Format 將會在內部轉換為 Mono 8。不接受彩色影像。
- 如果模型同時支援單色和彩色影像,單色輸入將會轉換為 Mono 8 並以單色傳送,彩色輸入將會轉換為 BGR 8 Packed 並以彩色傳送。vTool 不會將彩色轉換為單色,或將單色轉換為彩色。
如果輸入 Pixel Format 不受支援,請先使用 Image Format Converter vTool 轉換影像。選取彩色輸入的 BGR 8 Packed 或單色輸入的 Mono 8。
輸出資料對應#
Texts、BBoxes_px 和 Scores 結果會以索引對齊的陣列輸出。輸出中相同位置的元素對應至相同的文字片段。不會套用額外的 vTool 排序。
如果模型輸出順序或分割不同,輸出 pin 將保留模型輸出順序。
範例:
具有三個元素的輸出資料陣列,即識別出的文字片段
Texts: ["AB", "12045", "XZ"]
Scores: [0.98, 0.95, 0.93]
BBoxes_px: [b0, b1, b2]
在此,索引 0 對應至元素/文字片段 1,索引 1 對應至元素/文字片段 2,索引 2 對應至元素/文字片段 3。
設定 vTool#
若要設定 Pattern OCR vTool:

-
在 vTool Settings 區域的 Recipe Management 窗格中,按一下 Open Settings 或按兩下 vTool。
隨即會開啟 Pattern OCR 對話方塊。 -
在 Server Selection 區域中,選取您要連線的伺服器。
伺服器必須正在執行才能與其連線。- 選項 1:手動輸入您的 Triton Inference Server 的 IP 位址與連接埠。
- 選項 2:在下拉式清單中選取您的伺服器的 IP 位址 / 主機名稱與連接埠。
-
按一下 Connect 以建立連線。
然後,vTool 會載入可用的模型。 -
在 模型選取 區域中,在下拉式清單中選取包含所需模型的套件 (bundle)。
選取套件後,下拉式清單下方的資訊將會填入套件詳細資料,讓您可以檢查是否已選取正確的套件。
-
如果未列出所需的套件,請按一下 部署新模型 位於下拉式清單中。

這會開啟 pylon AI Agent ,可讓您部署更多模型。
部署新模型後,您必須按一下 Refresh 按鈕。 -
指定取代字元,或保留預設字元不變。
-
指定模型特定參數。
資訊
此區域中可用的參數取決於所選的模型。某些參數只有在選取特定模型後才會顯示。預設值由模型提供。
-
按一下 下一頁.
影像 Character Settings 頁面隨之開啟。
- 在 Character Settings 頁面上,若您的型號包含預先設定的圖樣,請檢視該圖樣。
若型號未包含預先設定的圖樣,請使用 Single Shot 擷取範例影像,或使用 Open Image 開啟現有影像。使用 Auto-Recognize Pattern 或手動標記字元來定義圖樣。 - 在 Character Pattern 區域中檢視圖樣。
- 按一下 Finish。
您可以在引腳資料檢視中查看「OCR vTool 」模式的結果。在此處,您可以選擇要顯示哪些輸出。
Inputs#
Image#
直接接收來自 Camera vTool 或輸出影像之 vTool(例如 Image Format Converter vTool)的影像。
- 資料類型:Image
- 影像格式:單色或彩色影像。支援的像素格式會根據機型,在內部轉換為 Mono 8 或 BGR 8 Packed。更多詳細資訊,請參閱「影像格式」。
ROI#
可接受來自「ROI Creator vTool 」或任何其他能輸出矩形的 vTool 的單一感興趣區域。
若 ROI 與影像沒有重疊,或 ROI 位於影像內的區域僅為 1×1 像素或更小,vTool 將直接返回空的Texts、Scores 及BBoxes_px陣列,而不會呼叫推論伺服器。這包括當未選取任何項目時,ROI Creator 的預設行為。
如果 ROI 已旋轉,則會在推論前進行校正。將矩形範圍內的區域從輸入影像中裁切出來,並進行旋轉,使其與坐標軸對齊。這個經過校正的裁切區域便是用於推論的輸入。
生成的邊界框會被轉換回原始輸入影像的座標系,並以軸對齊矩形的形式返回。位置、寬度和高度始終是指輸入影像,而非裁切區域。
- 資料類型:RectangleF
Outputs#
「Texts」、「BBoxes_px」和「Scores」的結果會以索引對齊的陣列形式輸出。輸出中位於相同位置的項目,代表同一段文字。
若輸入影像無效或處理失敗,每個已啟用的輸出都會返回一個包含錯誤原因的無效值。
文字#
回傳每個偵測到的單字或文字片段。無法辨識的文字將以替代字元呈現。
- 資料類型:String Array
BBoxes_px#
針對每個文字區段,回傳一個與軸對齊的邊界框。每個邊界框皆為該區段中所有字元邊界框的並集,並由其中心像素的座標、寬度及高度 (x_center, y_center, width, height) 所定義。區段中的底線字元 (_) 不會被納入此並集中。
座標均以原始輸入影像為基準,即使連接了ROI輸入接腳時亦然。若 ROI 經過旋轉,這些框體將被映射回該影像中,並以軸對齊的矩形呈現。此邊界框輸出可作為其他 vTools 的ROI輸入接腳之輸入。
- 資料類型:RectangleF 陣列
Scores#
回傳每個已辨識文字區段的信心分數。數值越高表示信心越高。區段分數是該區段內所有已辨識字元分數的算術平均值。若某個字元分數低於設定的閾值,且該字元已被設定的「字元替換」值所取代,該字元位置仍會以其原始字元分數計入此平均值中。
若分數為 0 或以下,則會傳回 0.0.
- 資料類型:浮點數陣列
Payload#
傳回有關 Inference Server 效能的額外資訊以供評估。只有在 Debug Settings 參數群組的 Features - All 窗格中啟用它時,此輸出 pin 才會可用。
- 資料類型:String