使用Tesseract进行OCR会在GetUTF8Text方法上造成内存泄漏

时间:2012-05-29 20:46:45

标签: iphone c++ ios ocr tesseract

我正在使用tesseract OCR进行名片阅读。 我有内存泄漏,我无法解决它,我不知道如何。

在我的代码中......

tesseract->Recognize(NULL); 
char* utf8Text = tesseract->GetUTF8Text();

GetUTF8Text()方法给出了内存泄漏。 这是记录内存泄漏工具:

tesseract::TessBaseAPI::GetUTF8Text()
operator new[](unsigned long) libstdc++.6.dylib
operator new(unsigned long) libstdc++.6.dylib
malloc libsystem_c.dylib

一些内存泄漏后,应用程序崩溃了。 GetUTF8Text位于baseapi.h文件中。我认为tessea是由c ++编写的。我不知道c ++。 有人可以帮忙吗?或者任何人都有干净的tesseract?

2 个答案:

答案 0 :(得分:3)

来自Tesseract文档:

  

识别的文本作为char *返回,编码为UTF8和   必须使用delete []运算符释放。

换句话说:你有责任释放记忆,所以它是你的泄漏,而不是Tesseracts。

答案 1 :(得分:3)

根据我在baseapi.h中找到的文件。

/**
 * The recognized text is returned as a char* which is coded
 * as UTF8 and must be freed with the delete [] operator.
 */
char* GetUTF8Text();

完成后,您需要delete [] utf8text

tesseract->Recognize(NULL); 
char* utf8Text = tesseract->GetUTF8Text();
... //use utf8Text or copy if necessary
delete [] utf8text;