跳至內容。

如何使用檢視器除錯辨識

簡介

Tesseract 具有內建顯示其內部狀態的功能,因此您可以檢視其分段和辨識結果。

建置與安裝

執行檢視器需要下列元件

如果您的路徑中有 curlmake ScrollView.jar 會將它們自動下載到 tesseract/java

所有這些 jar 檔案都需要放在單一目錄中。Tesseract 會透過環境變數 SCROLLVIEW_PATH 或具有相同名稱的編譯器定義來得知位置。

Dmitri Silaev 提供的替代下載連結位於 http://www.4shared.com/zip/FnP8RSu0/tess_debug_3_02.html。將下載的封包中的 piccolo-1.2.jarpiccolox-1.2.jarScrollView.jar 複製到 C:\Tesseract-OCR\java

在 Linux 上

在 Windows 上

未定義建置 ScrollView.jar 的建置程序。它包含在 tesseract-2.04.exe.tar.gztesseract-ocr-3.02-win32-portable.ziptesseract-ocr-setup-3.02.02.exe 封包中。將 piccolo-1.2.jarpiccolox-1.2.jar 放在相同位置 (Tesseract-OCR/java)。然後設定 SCROLLVIEW_PATH 環境變數,使其指向 java 目錄。

分段器除錯模式

若要執行分段器測試,請嘗試以下操作

tesseract phototest.tif test1 segdemo inter

您應該會看到類似這樣的內容

tesseract_debug

影像中找到的文字會以藍色矩形表示。有 3 個選單

「模式 (MODES)」設定左鍵單擊或選取操作的模式。「顯示 (DISPLAY)」變更視窗的請求顯示內容。(不會立即變更)「其他 (OTHER)」提供許多其他雜項全域動作。如果您在「編輯器影像」視窗中按一下滑鼠右鍵,您可以動態變更任何「新」設定變數的值。不過,根據您想要變更的內容,許多有用的變數都是舊樣式,無法透過這種方式變更。有一天,會有人將所有舊樣式變數更新為新樣式變數。

請注意,選單看起來相當奇怪。這是因為該工具最初設計的目的是提供建立精確度極高的 ground truth 檔案的功能,其中包含字元標籤、組成每個字元的已連結元件的相關資訊等。此功能的大部分都是多餘的,而且 10 多年來未使用過。某些宣傳的功能可能會輕易導致程式當機,但此處記載的功能應該可以運作…

若要顯示字元,請取消選取「顯示/邊界框 (DISPLAY/Bounding Boxes)」,選取「顯示/多邊形近似 (DISPLAY/Polygonal Approx)」,然後選取「其他/統一顯示 (OTHER/Uniform display)」。

若要放大,請將游標放在文字上方,然後將滑鼠滾輪朝遠離您的方向滾動 2 或 3 下。每次單擊都會將大小加倍。若要縮小,請將滑鼠滾輪朝您的方向滾動。如果您沒有滑鼠滾輪…您可能運氣不佳。Java 程式碼在這方面需要進行一些調整。

現在選取「模式/辨識文字 (MODES/Recog words)」,然後按一下文字。如果您選擇文字「code」(第二行的第二個文字),則您應該會得到類似這樣的內容

您也可能會在您啟動 tesseract 的終端機視窗中看到文字

chop_word:
6.81 -2.16 : c [63 ]a 14.38 -4.56 : o [6f ]a 14.53 -4.61 : e [65 ]a 15.15 -4.81
: ¢ [a2 ]
chop_word:
3.98 -1.11 : 0 [30 ]0 8.37 -2.33 : o [6f ]a 10.94 -3.04 : c [63 ]a 14.43 -4.01 :
 ¤ [a4 ]
chop_word:
8.24 -1.77 : d [64 ]a
chop_word:
17.58 -4.26 : e [65 ]a 23.65 -5.73 : a [61 ]a
system words:
52.17 -5.73 : c [63 ]a  : o [6f ]a  : d [64 ]a  : a [61 ]a 45.49 -4.26 : c [63 ]
a  : o [6f ]a  : d [64 ]a  : e [65 ]a
permute_characters : 45.49 -4.26 : c [63 ]a  : o [6f ]a  : d [64 ]a  : e [65 ]a

system words:
52.17 -5.73 : c [63 ]a  : o [6f ]a  : d [64 ]a  : a [61 ]a 45.49 -4.26 : c [63 ]
a  : o [6f ]a  : d [64 ]a  : e [65 ]a
permute_characters : 45.49 -4.26 : c [63 ]a  : o [6f ]a  : d [64 ]a  : e [65 ]a

這一切的含義:在每個 chop_word: 後面的行是每個原始已連結元件的分類器輸出,如「編輯器影像」視窗中以不同顏色顯示的。每個分類器結果都包含一個評分、一個信賴度、一個字串、其十六進位 Unicode 表示法,以及一個表示其 ctype 的字元。評分是一個正距離數字,並根據外框長度進行縮放。信賴度是距離最近原型之間的距離,但會取負數,因此負數越大表示越差,而越接近零的數字表示越好。ctype 是「a」(小寫字母)、「A」(大寫字母)、「x」(兩者都不是的字母)和「0」(數字)。沒有 ctype 表示以上皆非。

最後一個 chop_word 後面是 permute_characters。這會顯示從分類器輸出建立字串的第一次嘗試。評分是所有字元評分的總和,而信賴度是所有字元中最差的。

在這種情況下沒有,但 improve 1 和 improve 2 會是已切分的 blob 的 2 個一半,以及對應的 permute_characters。

現在按一下「分段」視窗。您會看到 d 和 e 都變成同一種顏色,並且對應的分類器結果會出現在您的終端機上。這是相關器在實驗不同的字元分段,以查看是否可以改善結果。

再次按一下,它會實驗合併 c 和 o,然後是 o 和 d,最後是同時合併 c 和 o 以及 d 和 e。

再按一下,您會看到一個名為 FXDemo 的新視窗,顯示文字的最終分段,其中包含基線和平均線。

您現在可以回到編輯器視窗中按一下。由於 tesseract 不是可重入的,因此您一次無法辨識一個以上的文字,因此當分段器正在執行時,您無法啟動另一個;-)

分類器除錯模式

tesseract phototest.tif test1 matdemo inter

與 segdemo 相同,若要顯示字元,請取消選取「顯示/邊界框 (DISPLAY/Bounding Boxes)」,選取「顯示/多邊形近似 (DISPLAY/Polygonal Approx)」,然後選取「其他/統一顯示 (OTHER/Uniform display)」。

現在選取「模式/辨識 blob (MODES/Recog blobs)」,然後按一下字元。如果您選擇文字「code」中的字元「e」(第二行的第二個文字),則您應該會得到類似這樣的內容(您可能需要捲動視窗才能讓字元位於中心)

並且此文字應該會出現在您的終端機中

AD Matches =  e [65 ]a(8) 21.83  a [61 ]a(16) 29.38
Debugging class = e  (All Templates) ...
Best built-in template match is config 24 (21.0) (cn=0)
No AD templates for class 8 = e

Integer Matcher -------------------------------------------
Match Complete --------------------------------------------
Left-click in IntegerMatch Window to continue or right click to debug...

現在,如果您按一下滑鼠右鍵,您會看到一個小的快顯選單,其中包含 3 個項目。理論上,您可以要求它使用自適應、靜態或兩組範本來進行除錯。程式碼尚未編寫來區分不同的選單項目,而且即使編寫了,也不會產生任何影響,因為其餘程式碼保持不變。您沒有自適應範本,因為 pass1 尚未執行。在某個時間點,這將會修正,讓您可以選擇觀察在 pass1 或 pass2 中處理文字的方式。屆時才有意義。

因此,請按一下隨機選單項目,您會看到一個對話方塊文字方塊,要求您輸入要除錯的類別。它要求字元類別的字串,對於大多數拉丁語言來說,它只是一個字元,但對於其他語言(例如卡納達語)來說,它可能是一連串字元。為了讓非語言使用者更容易輸入非鍵盤字元,此方塊接受 0xdddd 作為 4 位數的十六進位 Unicode 碼。

這次輸入一個小寫 c,然後按一下 Enter(按一下「確定」似乎無法運作!),您應該會在終端機視窗中看到以下內容

Debugging class = 34 = c  (All Templates) ...
Best built-in template match is config  4 (22.0) (cn=1)
No AD templates for class 34 = c

Integer Matcher -------------------------------------------
Match Complete --------------------------------------------
Left-click in IntegerMatch Window to continue or right click to debug...

IntMatchWindow 應該會顯示小寫 c 非常匹配。事實上,它獲得一個介於上述 e 和 a 之間的數字,表示 c 已被類別修剪器拒絕。

在 IntMatchWindow 中,會顯示特徵和原型之間的對應關係。原型是細長的線條,而特徵是較短較粗的線條。從最佳匹配到最差匹配的顏色,會依循這個稍微隨意的順序:白色、綠色、紅色、藍色。灰線應該表示未知項目所匹配的原型類型,但它們似乎落後一個分類。正方形表示靜態分類器,並顯示正規化單位。軌道線表示自適應分類,並顯示基線、平均線、下降線和上升線的位置。

其他「模式 (MODE)」的可能性

一般而言,選取的「模式 (MODE)」將對您使用滑鼠左鍵選取或按一下的 blob 或文字執行一些動作。

「模式 (MODE)」中的「顯示 BL 正規化文字 (Show BL Norm Word)」會在獨立視窗中顯示您按一下的文字(在編輯器視窗中),並加上基線和平均線。在撰寫本文時,您必須將滑鼠移至 BlnWords 視窗上方,才能顯示任何內容。

「辨識 blob (Recog Blobs)」對於在單一 blob 上測試分類器非常有用,而無需按一下所有分段。它會將選取範圍視為「文字」,因此您可以選取一個以上的 blob,並有機會看到大部分已分類的組合。

「顯示點 (Show point)」對於取得 tesseract 座標空間中特定 blob 的座標非常有用,因此您可以將它們輸入 textord_test_x 和 textord_test_y,以找出為何某些特定 blob 從未出現在輸出中。

只有其他少數「模式 (MODEs)」會執行任何動作,包括「傾印文字 (Dump Word)」、「行間距直方圖 (Row Gaps Hist)」和「區塊間距直方圖 (Block Gaps Hist)」,所有這些都會將資訊傾印到您的終端機視窗。

其他「顯示 (Display)」模式

您可以藉由不選取「顯示/邊界框 (Display/Bounding Boxes)」並選取「顯示/多邊形近似 (Display/Polygonal Approx)」後,不選取「其他/統一顯示 (Other/Uniform Display)」,來節省一些顯示時間。相反地,您按一下的每個文字都會以新格式重新顯示

疑難排解

在大量 ScrollView: 等待伺服器… 訊息的中間收到「kill %1: no such job」訊息?您在啟動 Java 時遇到問題。在 Windows 上,錯誤訊息應該會傳送到您的終端機視窗,但在 Linux 上,您必須編輯 svutil.cpp,才能從 cmd_template 字串中移除「>/dev/null 2>&1」。

嘗試在 Linux 上執行此命令

java -Xms512m -Xmx1024m -Djava.library.path=$SCROLLVIEW_PATH -cp $SCROLLVIEW_PATH/ScrollView.jar:$SCROLLVIEW_PATH/piccolo-1.2.jar:$SCROLLVIEW_PATH/piccolox-1.2.jar com.google.scrollview.ScrollView

在 Windows 上嘗試執行此命令

java -Xms512m -Xmx1024m -Djava.library.path=%SCROLLVIEW_PATH% -cp %SCROLLVIEW_PATH%/ScrollView.jar;%SCROLLVIEW_PATH%/piccolo-1.2.jar;%SCROLLVIEW_PATH%/piccolox-1.2.jar com.google.scrollview.ScrollView

如果 java 和 SCROLLVIEW_PATH 設定一切正常,您應該會看到

Socket 已在連接埠 8461 上啟動。

否則您需要修正問題,例如:

其他您應該知道的事項

這是一個除錯工具,不是一個正式的 UI,因此,它無法很好地處理正常執行路徑以外的任何情況。問題/錯誤包括但不限於: