ViewerDebugging - kana112233/tesseract GitHub Wiki

#如何使用Viewer调试识别.

介绍

Tesseract具有显示其内部状态的内置功能,因此您可以查看其分段和识别.

##构建和安装

运行查看器需要以下组件:   

如果你的路径中存在curl,make ScrollView.jar会自动将它们下载到tesseract/java.

所有这些jar文件都需要放在一个目录中. Tesseract通过环境变量SCROLLVIEW \ _PATH或相同名称的编译器定义来学习位置.

Dmitri Silaev的替代下载链接可从http://www.4shared.com/zip/FnP8RSu0/tess_debug_3_02.html获得.

将piccolo-1.2.jar,piccolox-1.2.jar和ScrollView.jar从下载的软件包复制到C:\ Tesseract-OCR \ java.

在Linux上:

*将piccolo2d-core-3.0.jar,piccolo2d-extras-3.0.jar和jaxb-api-2.3.1.jar复制到tesseract/java.   

  • cd java    *make ScrollView.jar    *将SCROLLVIEW \ _PATH环境变量设置为指向包含所有3个jar文件的java目录.

未定义构建ScrollView.jar的构建过程. 它包含在软件包tesseract-2.04.exe.tar.gz,tesseract-ocr-3.02-win32-portable.zip和tesseract-ocr-setup-3.02.02.exe中. 将piccolo-1.2.jar和piccolox-1.2.jar放在同一位置(Tesseract-OCR/java). 然后将SCROLLVIEW \ _PATH环境变量设置为指向java目录.

##分段器调试模式

要运行分段器测试,请尝试以下操作:

tesseract phototest.tif test1 segdemo inter

你应该看到这样的东西:

![tesseract_debug(https://github.com/tesseract-ocr/tesseract/wiki/tesseract_debug.png)

在图像中找到的单词表示为蓝色矩形. 有3个菜单:

MODES设置左键单击或选择的模式.

DISPLAY更改窗口请求的显示内容. (不是立即)

OTHER提供了一堆杂项全局操作.

如果右键单击“编辑器图像”窗口,则可以动态更改任何“新”配置变量的值. 根据您想要改变的内容,许多有用的变量都是旧样式,不能以这种方式更改. 有一天,有人会将所有旧样式变量更新为新变量.

请注意,菜单看起来很奇怪. 这是因为该工具最初设计用于提供创建地面文件的功能,在字符上标签的详细信息,构成每个字符的连接组件的信息等.大多数此功能是多余的并且尚未使用 超过10年. 广告中的一些功能很容易导致程序崩溃,但此处记录的功能应该有效...

要显示字符,请取消选择DISPLAY/Bounding Boxes,选择DISPLAY/Polygonal Approx,然后选择OTHER/Uniform display.

要放大,请将光标放在单词上,然后将鼠标滚轮从您身上滚动2或3次. 每次点击都会使大小翻倍. 要缩小滚动鼠标滚轮朝向您. 如果你还没有鼠标滚轮......你可能会失去运气. Java代码需要在这方面做一些工作.

现在选择MODES/Recog单词并单击一个单词. 如果您选择单词'code'(第二行的第二个单词),那么您应该得到这样的结果:

You may also notice text in your terminal window where you started 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',对于不是,而对于数字为'0'的字母为'x'. 缺少ctype意味着没有上述内容.

最后一次切\ _word后,是一个permute \ _characters. 这显示了从分类器输出构建单词字符串的第一次尝试. 评级是所有角色评级的总和,置信度是所有角色中最差的.

在这种情况下没有一个,但是改进1和改进2将是切碎的blob的两半,以及相应的permute \ _characters.

现在单击Segmentation窗口. 您将看到d和e成为一种颜色,并且相应的分类器结果将显示在您的终端上. 这是试验不同字符分割的关联器,以查看它是否可以改善结果.

再次点击它实验加入c和o,然后是o和d,最后是d和e同时加入c和o.

再点击一下,就会给你一个名为FXDemo的新窗口,显示最后一个分段,其中包含该单词的基线和平均线:

您现在可以在编辑器窗口中单击了. 因为tesseract不是可重入的,所以你不能一次识别多个单词,所以当segmenter运行时,你无法启动另一个;-)

##分类器调试模式

tesseract phototest.tif test1 matdemo inter

As with segdemo, to show the characters, deselect DISPLAY/Bounding Boxes, select DISPLAY/Polygonal Approx and then select OTHER/Uniform display.

现在选择MODES/Recog blobs并单击一个字符. 如果你在“代码”这个词中选择单词“e”(第二行的第二个单词)那么你应该得到这样的东西(你可能需要滚动窗口才能得到中心的角色):

and this text should appear in your terminal:

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...

Now if you right-click, you get a small pop-up menu with 3 items in it. In theory, you could ask it to debug using adaptive, static, or both sets of templates. The code to tell the difference between the different menu items isn't written yet, and if it did, it wouldn't make any difference as the rest of the code stands. You have no adaptive templates because pass1 hasn't run yet. At some point this will get fixed so that you can choose between observing a word as it is processed in pass1 or in pass2. Then it will make sense.

因此,单击随机菜单项,您会看到一个对话框文本框,要求您输入要调试的类. 它要求字符类的字符串,对于大多数拉丁语言来说只是一个字符,但对于其他语言,例如卡纳达语,可能是整个字符序列. 为了使非语言扬声器更容易输入非键盘字符,此框接受0xdddd作为4位十六进制Unicode代码.

这次输入一个小写的c然后输入(单击OK似乎不起作用!),你应该在你的终端窗口中得到这个:

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将使用您选择的blob或单词或使用鼠标左键单击来执行某些操作.

MODE Show BL Norm Word将在单独的窗口中显示左键单击(在编辑器窗口中)的工作,其中添加了基线和meanline. 在撰写本文时,您必须将鼠标移动到BlnWords窗口以使其显示任何内容.

Recog Blobs可用于在单个blob上测试分类器,而无需单击所有分段. 它会将选择视为“单词”,因此您可以选择多个blob,并有机会看到大多数组合分类.

显示点对于获取tesseract坐标空间中特定blob的坐标非常有用,因此您可以将它们输入到textord \ _test \ __x和textord \ _test \ _y中,以找出某些特定blob从未进入输出的原因.

关于执行任何操作的唯一其他MODE是Dump Word,Row Gaps Hist和Block Gaps Hist,所有这些都将信息转储到您的终端窗口.

##其他显示模式

取消选择“显示/边界框”并选择“显示/多边形约”后,可以通过不选择“其他/均匀显示”来节省一些显示时间. 相反,您单击的每个单词都将以新格式重新显示

故障排除

在一堆ScrollView中间获取消息“kill%1:no such job”:等待服务器...消息? 启动Java时遇到问题. 在Windows上,错误消息应该显示在终端窗口中,但在Linux上,您必须编辑svutil.cpp以从cmd \ _template字符串中删除“>/dev/null 2>&1”.

Try to run this command on 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

On Windows try this:

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开始

否则你需要解决问题,例如:    *未安装java运行时   

  • java不在路径中   
  • SCROLLVIEW \ _PATH包含空格或非ASCII字符

##你应该知道的其他事情

这是一个调试工具,而不是一个合适的UI,因此,它不能很好地处理正常执行路径之外的任何事情. 问题/错误包括但不限于:

*如果您关闭其中一个辅助窗口,它将永远不会重新启动tesseract.   

  • Java查看器进程现在大部分时间都正确终止. 如果Tesseract看起来像你期望观众出现时挂起,可能是因为你有一个流氓java进程,你必须手动杀死.    *您仍然无法一次使用新查看器运行多个Tesseract.    *此处显示的演示模式并不完全重现Tesseract中的内容,因为不会再现2遍自然和自适应分类器.