我想过把它放在超级用户或其他东西上,但由于我的问题与编译后发生的事情有关,我认为这是最好的。
我的系统:ubuntu 14.04
g++ 4.9
我试图在我的C ++程序中使用tesseract。
所以,经过相当的努力,我得到了tesseract安装时没有错误安装。我的问题是,在编译和运行我的程序后,我得到了看似罕见的错误:
index >= 0 && index < size_used_:Error:Assert failed:in file ../ccutil/genericvector.h, line 512
Segmentation fault (core dumped)
我能找到的关于这个错误的一点点是,它有时可能是由于缺少语言数据引起的,但根据this,我在适当的文件夹中看到了所有正确的文件。
软件版本:tesseract 3.02.02
,leptonica-1.71
,libjpeg 8d : libpng 1.2.50 : libtiff 4.0.3 : zlib 1.2.8
我的tesseract安装源:here。我从尝试tesseract 3.03开始,但在make
期间会失败。
我使用这些标志编译而没有警告:
g++ -Wall -std=c++11 alt_2.cpp -ggdb `pkg-config --cflags opencv` `pkg-config --cflags tesseract` -o alt_2 `pkg-config --libs opencv` `pkg-config --libs tesseract`
这是我使用tesseract的代码:
#include "tesseract/baseapi.h"
...
tesseract::TessBaseAPI tess;
tess.Init(NULL, lang, tesseract::OEM_DEFAULT);
tess.SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
tess.SetImage((uchar*)col0.data, col0.cols, col0.rows, 1, col0.cols);
tess.GetUTF8Text();
tess.GetUTF8Text();
是导致错误的原因。如果注释掉,则不会发生错误。 col0
是我的Mat图像。
我现在全都没有想法和耐心。所以,如果有任何善良的灵魂有这方面的经验,请帮助。
感谢阅读!
答案 0 :(得分:5)
我不想回答我自己的问题,但我确实有效。
所以,我删除了所有内容并重新安装了tesseract 3.0.3。在制作文件时我仍然收到错误
libtool: link: g++ -std=c++11 -o .libs/tesseract tesseract-
tesseractmain.o ./.libs/libtesseract.so -lrt -llept -lpthread
./.libs/libtesseract.so: undefined reference to some_leptonic_functions
问题是,尽管tesseract -v
报告了leptonica-1.71
,但还有一个由apt-get
安装的debian软件包。所以在完成sudo apt-get remove libleptonica-dev
后,make完成了没有错误,我能够完美地运行代码。
要明确的是,这需要按来源安装libleptonica和tesseract,而不是apt-get
。
我希望这有助于某人,因为这是一个令人沮丧的过程。