2013-05-09 240 views
1

我想訓練的Tesseract(添加一個新的,只有一位數字的字體),按照這個網址的指示:http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3培訓的Tesseract - shapeclustering問題

我所做的:

  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_extractor num.dot.exp0.box
  3. 的unicharset創造了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被創建。

我做錯了什麼?任何線索,爲什麼發生這種情況?

我正在使用tesseract 3.02

回答

2

我設法找出問題所在。我應該使用echo "dot 0 0 0 0 0" > font_properties代替echo "num.dot.exp0 0 0 0 0 0" > font_properties

shapeclustering在此之後正常工作。它需要font_properties上的真實字體名稱,而不是完整的名稱(在我的情況下是「dot」)。

0

我得到同樣的問題,但通過在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