OCR vTool#
光學字元辨識的主要目標是識別影像中的物件,或讀取物件上的特定資訊,例如有效期限、序號或產品標籤。
OCR vTool 透過 Image 輸入引腳接收影像。文字以及所得單字的分割區域則透過 Texts 與 Regions 輸出引腳輸出。
若要購買 OCR vTool 的授權,請造訪 Basler 網站。

運作原理#
在指定的興趣區域中,OCR vTool 會將文字分割為單字與個別字元,並將每個字元分類(例如字母、數字或特殊字元,如標點符號)。
儘管其名稱如此,OCR vTool 並非讀取單一字元,而是讀取單字。最小單字長度為 2 個字元。
如果您的文字跨越多行,則每一行至少被視為一個單字。如果單行內的單字之間存在較大的間距,演算法會將這些單字視為不同的實體。
4 步驟精靈將引導您完成 vTool 的設定。它能針對您的設定所產生的效果提供即時回饋。請參閱以下章節以深入了解各個步驟。
預覽區域#
預覽區域是一個實用的工具,可讓您立即檢查在 vTool 設定中所做的任何變更。
預覽區域上方有兩個按鈕,一個用於切換顯示分割區域和辨識字元周圍的外框,另一個用於突顯區域。

顯示邊界框與辨識出的字元#
這個按鈕可讓您顯示/隱藏分割區域周圍的外框:
在每個辨識出的字元上方,會顯示其辨識結果。這可讓您快速驗證辨識是否正確運作。

突顯區域#
這個按鈕可讓您突顯分割區域:
這有助於更容易看出字元是已被完整辨識還是僅部分辨識。這對於微調分割設定(例如對比度)非常有用。

步驟 1:初始設定#
首先載入適當的教導影像,可以從磁碟載入,也可以使用即時相機影像。就以下各方面而言,教導影像必須具有檢測影像的代表性:
- 文字的位置與方向
- 字元大小(如果您手動指定 character dimensions)
在自動模式下,字元大小允許有所變化。
Basler 建議在設定 OCR vTool 時使用多張不同的樣本影像。透過這種方式,您可以更好地評估文字的 Image Quality,並檢查分割結果以及候選項目的信賴度。這些樣本影像最好能涵蓋您在應用中預期會出現的完整字元集。
矩形設定#
載入影像後,影像中會顯示一個矩形。這用於標記文字所在的區域。您可以透過拖曳矩形的控制點,或在預覽區域左側的輸入方塊中手動輸入數值,來調整其位置、方向和大小。
該區域只能包含您想要讀取的文字,因為 OCR 演算法無法區分字元與不需要的影像元素(雜訊或干擾)。如果無法完全避免雜訊或干擾,您應該採取適當的措施,例如新增後處理步驟,或新增其他 OCR vTools 以定義多個文字區域。此外,矩形切勿貼得文字太緊,因為影像與影像之間,文字可能會在所有方向上有些微位移。
在定義區域時,請注意貫穿區域矩形的箭頭。這表示讀取方向。無法讀取其他方向的文字。
為了讓 OCR vTool 能夠穩定運行,您要處理的所有影像中,文字的方向應大致相同。微小的偏差(幾度之內)是可以接受的。Basler 建議調整相機的位置,以便能夠由左至右讀取文字。如果您的文字具有不同(但固定)的方向,請據此定位區域矩形,同時確保箭頭指向文字的讀取方向。
如果文字的位置變化很大且文字周圍的背景空間有限,您應該新增 Image Alignment 作為前處理步驟,以確保文字的方向和位置穩定。
這是一個樣本影像,其中的矩形經過微微旋轉以順應文字。

字型設定#
選擇適合影像中文字的字型及對應的字元集。通常這取決於應用規格或列印製程。
下表列出了可用的字型並顯示其外觀範例:
| 字型名稱 | 描述 | 外觀 |
|---|---|---|
| 標準混合 | 不同的字型,帶或不帶襯線,通常用於文件中 | ![]() |
| 標準無襯線 | 不同的無襯線辦公字型,通常用於文件中 | ![]() |
| OCR-A | 如 OCR-A 標準中所定義 | ![]() |
| OCR-B | 如 OCR-B 標準中所定義 | ![]() |
| 點陣列印 | 不同的點陣列印字型,由點陣印表機產生 | ![]() |
| Pharma | 製藥業使用的無襯線字型 | ![]() |
| SEMI | 半導體產業中使用的字型,如 SEMI 標準中所定義 | ![]() |
| 手寫 | 手寫數字 | ![]() |
根據字型的不同,可使用不同的字元集。字元集可以包含以下部分或全部子集:
- 大寫字母
- 小寫字母
- 數字
- 特殊字元
可識別的特殊字元會因字型而異。
下表列出了各字型可識別的字元:
| 字型名稱 | 大寫字母 | 小寫字母 | 數字 | 特殊字元 |
|---|---|---|---|---|
| 標準混合 | 是 | 是 | 是 | - = + < > . # $ % & ( ) @ * e £ ¥ |
| 標準無襯線 | 是 | 是 | 是 | - / + . $ % * e £ ¥ |
| OCR-A | 是 | 是 | 是 | - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥ |
| OCR-B | 是 | 是 | 是 | - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥ |
| 點陣列印 | 是 | 否 | 是 | - / . * : |
| Pharma | 是 | 否 | 是 | - / . ( ) : |
| SEMI | 是 | 否 | 是 | - . |
| 手寫 | 否 | 否 | 是 | 不適用 |
拒識類別#
拒絕類別(rejection class)可讓您處理不明確的結果,亦即 vTool 無法識別的字元。這些字元會被歸類為拒絕字元,並根據其在 pylon Viewer 中出現的位置以不同的問號圖示表示。
此圖示用於設定對話方塊中:
此圖示用於引腳資料檢視中:

使用拒絕類別可更好地評估結果的信賴度。除了解字元與訓練字型的契合程度外,信賴度也反映了字元的列印或影像 Quality 等資訊。
如果具有最高信賴度值的結果屬於拒絕類別,則影像的這部分無法明確指派給某個字元。這可能是由影像中的污漬或未完全列印的字元所引起的。如果這種情況經常發生,則表示影像 Quality 較差。在這種情況下,您可以嘗試改善影像 Quality,或在後續處理步驟中將此類字元宣告為無法讀取。透過這種方法,您可以採取更安全的做法,轉而選擇信賴度較低的字元。
如果您的分類結果經常不明確,您可以考慮使用正規表示式來執行單字校正。
如果您希望永遠傳回字元,請停用 Allow rejections 選項。
為了找到適合您的設定,請嘗試啟用和停用此選項,並觀察步驟 4 中的結果在候選清單和識別字元方面有何不同。
步驟 2:字元尺寸#
字元的分割取決於對字元尺寸(即寬度、高度和筆畫寬度)的一些假設。OCR vTool 支援自動演算法,可直接從影像資料中推導出這些尺寸。或者,您可以手動指定所需的尺寸範圍。20 到 30 像素之間的字元高度是適當的大小範圍,但您也可以指定更大的字元大小。小於 20 像素的字元將無法再可靠地識別。
資訊
如果字元大小在文字內或不同影像之間有所不同,請使用自動模式。這樣一來,無論大小如何,都可以讀取所有字元。
手動指定尺寸的典型使用情境是自動模式無法排除分割中的雜訊時。在這種情況下,手動指定尺寸可能會消除不需要的影像元素。
步驟 3:分割設定#
對比度#
影像中字元的分割基於閾值機制,並以指定的最低對比度值作為閾值。調整最低對比度並在預覽區域中觀察分割結果。使用預覽區域上方的切換按鈕啟用區域分割檢視,以獲得更好的視覺化效果。
選擇一個最低對比度設定,在此設定下所有字元都能被正確分割和讀取。請勿將最低對比度設得太低,因為這可能會導致偵測到不需要的雜訊。
可用的字型經過訓練,專門用於淺色背景上的深色字元。如果此 Polarity 設定適合您的應用,請使用 Dark on light 選項。
如果您的應用涉及深色背景上的淺色字元,則必須使用 Light on dark 選項。在這種情況下,影像會在預處理步驟中進行內部反轉。
如果您的應用涉及比背景更淺或更深的文字,請選取 Both 選項。但是,OCR vTool 無法讀取具有混合極性的文字。文字區域內的極性必須相同。
間距#
單字還可以包含特殊字元,例如點、逗號、連字號等。其中大多數是標點符號。然而,連字號和等號被視為分隔符號。
在某些應用中,您可能需要讀取這些字元。在這種情況下,請選取包含特殊字元的字元集,並啟用 Punctuation 和 Separators 選項。
在其他應用中,您可能更喜歡在沒有標點符號或分隔符號的情況下讀取單字,例如在讀取日期時,您只對讀取數字感興趣。因此,請選取僅包含數字的字元集,並停用 Punctuation 和 Separators** 選項。
在間距方面,您還必須考慮個別字元之間的距離。為了成功將文字分割為個別區域,字元之間必須有顯著的間隙。但在實際應用中,字元往往靠得太近,難以區分。如果您在應用中發現這種情況,請啟用 Separate touching characters 選項。
點陣列印#
Dot Print 字型與所有其他字型類型不同,因為其字元完全由個別點組成,而不是連續的筆畫。為了讀取 Dot Print 文字,OCR vTool 提供了專用的分割和分類選項。若要使這些選項可用,您必須在精靈的 step 1 中選取 Dot Print 字型。字元之間具有足夠大間隙且具有緊湊 Dot Print 配置的正常 Dot Print 字元可以直接讀取。
對於字元之間的間隙與字元內點之間的間隙相似或更小的 Dot Print 文字,Basler 建議啟用 Tight character spacing 選項。
為了成功分割,您還必須考慮字元點之間的間隙。在緊湊的 Dot Print 配置中,點靠得很近,間隙大小沒有變化。啟用預設設定 Auto 選項可以很好地讀取此類字元。在這種情況下,將使用內部的自動模式。
然而,如果某些間隙比其他間隙大,則單一字元的分割可能會失敗,並且該字元會被分割為多個區域。在這種情況下,使用 Max. dot gap 選項手動指定點之間允許的最大間隙可能會有所幫助。不過,這樣做可能會增加處理時間。
步驟 4:結果#
精靈的最後一步向您展示了一個表格,其中包含單字中每個字元位置的潛在候選者以及信賴度值。如果您按一下表格中的條目,預覽區域中對應的邊界框將被選取,反之亦然。
透過展開下拉清單,您可以顯示所有候選者。它們按信賴度降序排列。這使您可以評估字元分類的整體信賴度,並向您顯示潛在的替代方案。
資訊
信賴度是 0 到 1 之間的值。它表示字元辨識的運作情況。非常好的分類結果通常信賴度值高於 0.99。低於 0.9 或 0.8 的信賴度值可能表示分類不可靠。
表格下方是 Text Recognized 區域。這裡以緊湊的形式顯示已辨識的完整文字。
正規表示式#
OCR 面臨的典型挑戰是字元 0、O 和 o 之間的模稜兩可。像 OCR-A 或 SEMI 這樣明確的 OCR 字型旨在區分 0 和 O,但其他字型則不然。您可以在正規表示式的協助下解決此挑戰。
正規表示式允許您執行單字校正。單字校正意味著不僅採用信賴度最高候選者,還將其他候選者納入考量,以嘗試找到符合正規表示式的候選者組合。
為此,請在結果表格上方的輸入欄位中輸入與文字中單字數量一樣多的正規表示式。使用單一空格分隔正規表示式。
Example: 假設您想要讀取有效期限,例如「03/2026」。主要目的是讀取日期或時間的數字。同時假設也需要讀取特殊字元或字母。在這種情況下,您將選取包含數字、字母和特殊字元的字元集。透過使用正規表示式「(0[1-9]|10|11|12)/202[4-9]」,您能夠在維持 MM/YYYY 日期結構的同時讀取斜線。
資訊
正規表示式無法透過新增或消除字元來校正單字長度。正規表示式必須符合單字長度,且所有影像中的單字長度必須保持不變。
對長單字執行單字校正可能會增加處理時間。
設定 vTool#
若要設定 OCR Basic vTool:
-
在 vTool Settings 區域的 Recipe Management 窗格中,按一下 Open Settings 或按兩下 vTool。
隨即會開啟 OCR Basic 對話方塊。 -
擷取或開啟影像。
使用 Single Shot 按鈕來擷取即時影像,或按一下 開啟影像 用於開啟現有影像的按鈕。
載入影像後,文字讀取程序會立即開始,且結果會顯示在預覽區域中。
視窗底部會顯示辨識出的字元,單字之間以空白分隔。由於此處空間有限,您可能無法看到完整的文字。這僅用於指示已辨識出多少字元。完整文字將顯示在精靈的步驟 4 中。
有關詳細資訊,請參閱 步驟 1:初始設定.
-
在 Rectangle Settings 區域中,透過手動輸入數值來定義文字區域。
或者,您可以使用預覽區域中區域矩形的控制代碼來移動、調整大小和旋轉它,以符合您想要讀取文字的影像部分。
矩形中的箭頭必須指向文字的讀取方向。 -
在 Font Settings 區域中,設定下列選項:
- 字型類型
- 字元集
- 排除類別
-
按一下 下一頁.
第 2 步驟的 OCR Basic 對話方塊隨即開啟。
有關詳細資訊,請參閱 步驟 2:字元尺寸.
-
決定是否保持啟用用於偵測字元尺寸的預設自動模式。如果您想要手動指定尺寸,請取消勾選 Auto 選項,並輸入所需的字元寬度、高度和筆畫寬度範圍。
-
按一下 下一頁.
步驟 3,共 OCR Basic 對話方塊隨即開啟。
有關詳細資訊,請參閱 步驟 3:分割設定.
-
根據您的應用調整對比度和極性。
-
根據您的應用選擇間距選項。
-
如果您已選擇 Dot Print 字型,請依需求指定選項。
-
按一下 下一頁.
步驟 4,共 OCR Basic 對話方塊隨即開啟。
有關詳細資訊,請參閱 步驟 4:結果.
-
在分類表格與文字欄位中檢查字元辨識的結果。
在表格中,您可以展開每個位置以開啟替代的分類結果。您將會看到分類後的字元及其相應的信賴度。
如果啟用了詳細檢視選項,您可以在表格中選取一個字元,預覽區域中就會反白顯示對應字元的邊界框;反之,您也可以按一下預覽區域中的字元區域,以在表格中查看對應的字元。 -
如有需要,請輸入常規表示法 (regular expressions) 來執行單字校正。
每個單字輸入一個常規表示法。運算式之間請用單一空格分隔。 -
在 Text Recognized 欄位中檢查產生的單字。
-
按一下 Finish 以完成設定程序。
您可以在 pin data view 中檢視 OCR Basic vTool 的結果。您可以在此處選擇要顯示哪些輸出。
Inputs#
Image#
直接接收來自 Camera vTool 或輸出影像之 vTool(例如 Image Format Converter vTool)的影像。
- 資料類型:Image
- 影像格式:8 位元至 16 位元單色或彩色影像。彩色影像會在內部轉換為單色影像。
Outputs#
文字#
傳回辨識出的文字字串。
- 資料類型:String Array
Regions#
傳回辨識出文字的區域。
- 資料類型:Region Array







