培训的Tesseract - shapeclustering问题(Training tesser

2019-10-18 03:07发布

我想训练的Tesseract(添加一个新的,只有一位数字的字体)按照指示在这里找到: http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3

我做了什么:

  1. 创建与示例文本PDF格式,转换为TIF,跑tesseract num.dot.exp0.tif num.dot.exp0 batch.nochop makebox digits 。 然后编辑生成的文件盒,修正错误的检测
  2. 冉培训模式的Tesseract: tesseract num.dot.exp0.tif num.dot.exp0 nobatch box.train并提取与unicharset unicharset_extractor num.dot.exp0.box
  3. 创建font_properties文件: echo "num.dot.exp0 0 0 0 0 0" > font_properties

被确定到目前为止,.box的和unicharset文件是正确的,产生的一切num.dot.exp0.tr。

然后我跑shapeclustering -F font_properties -U unicharset num.dot.exp0.tr并得到了以下错误:


    Reading num.dot.exp0.tr ...

    *** glibc detected *** shapeclustering: double free or corruption (!prev): 0x098c52e0 ***
    ======= Backtrace: =========
    /lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0x82eee2]
    /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0x77d51f]
    /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdaPv+0x1b)[0x77d57b]
    shapeclustering(_ZN13GenericVectorIiE5clearEv+0x8b)[0x8050949]
    shapeclustering(_ZN13GenericVectorIiED1Ev+0x2b)[0x805056b]
    /usr/lib/libtesseract.so.3(_ZN9tesseract17TrainingSampleSet14SetupFontIdMapEv+0x137)[0x488699]
    /usr/lib/libtesseract.so.3(_ZN9tesseract17TrainingSampleSet22OrganizeByFontAndClassEv+0x22)[0x48823c]
    /usr/lib/libtesseract.so.3(_ZN9tesseract13MasterTrainer24ReplaceFragmentedSamplesEv+0x1d7)[0x477ebd]
    /usr/lib/libtesseract.so.3(_ZN9tesseract13MasterTrainer15PostLoadCleanupEv+0x47)[0x47587b]
    shapeclustering[0x804e2b9]
    shapeclustering(main+0x5f)[0x804cb13]
    /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7d24d3]
    shapeclustering[0x804ca21]
    (...)
    00cba000-00cc1000 rw-p 0039c000 08:01 4465015    /usr/lib/libtesseract.so.3.0.2
    00cc1000-00d5c000 rw-p 00000000 00:00 0 
    00ef8000-00f22000 r-xp 00000000 08:01 4211867    /lib/i386-linux-gnu/libm-2.15.so
    00f22000-00f23000 r--p 00029000 08:01 4211867    /lib/i386-linux-gnu/libm-2.15.so
    00f23000-00f24000 rw-p 0002a000 08:01 4211867    /lib/i386-linux-gnu/libm-2.15.so
    08048000-08056000 r-xp 00000000 08:01 4464615    /usr/bin/shapeclustering
    08056000-08057000 r--p 0000d000 08:01 4464615    /usr/bin/shapeclustering
    08057000-08058000 rw-p 0000e000 08:01 4464615    /usr/bin/shapeclustering
    093c5000-094cf000 rw-p 00000000 00:00 0          [heap]
    b779a000-b77a0000 rw-p 00000000 00:00 0 
    b77b6000-b77ba000 rw-p 00000000 00:00 0 
    bfb6c000-bfb8d000 rw-p 00000000 00:00 0          [stack]
    Aborted (core dumped)

然后是创建一个空的shapetable。

难道我做错了什么? 任何线索,为什么发生这种情况?

我使用的是3.02的Tesseract

Answer 1:

我设法找出问题。 我应该使用echo "dot 0 0 0 0 0" > font_properties而不是echo "num.dot.exp0 0 0 0 0 0" > font_properties

shapeclustering后工作正常。 它需要在font_properties真正的字体名称,而不是完整的名称(“点”,在我的情况)。



Answer 2:

我被font_properties文件验证字体的名称应该是相同eng.Imagefile.tr得到同样的问题,但发现解决方案。

echo "NewFont 0 0 0 0 0" > font_properties
shapeclustering -F font_properties -U unicharset eng.Imagefile.tr
mftraining -F font_properties -U unicharset -O eng.unicharset eng.Imagefile.tr


文章来源: Training tesseract - shapeclustering issue
标签: ocr tesseract