在启用 OpenCL 选项的情况下使用 Tesseract 时出现 malloc 错误
malloc error while using Tesseract with OpenCL option enabled
我在启用OpenCL选项的情况下编译了Tesseract 3.04.00。尝试使用 GetUTF8Text() 从图像中提取文本时,存在 malloc 错误,我想是内存泄漏。
我找到了之前添加的内存泄漏错误的补丁,但是,我编译的版本已经添加了补丁。我不确定为什么会发生内存泄漏。
这是我得到的输出:
[DS] Profile read from file (tesseract_opencl_profile_devices.dat).
[DS] Device[1] 1:Intel(R) Core(TM) i5-4250U CPU @ 1.30GHz score is 14049349632.000000
[DS] Device[2] 1:HD Graphics 5000 score is 14049349632.000000
[DS] Device[3] 0:(null) score is 21474836480.000000
[DS] Selected Device[2]: "HD Graphics 5000" (OpenCL)
ACP(15114,0x7fff795bf300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
以前有人遇到过这个问题吗?我该如何解决这个问题?
熟悉Tesseract,但我怀疑你提到的补丁是针对不同的问题。
查看输出详细信息,看起来您使用的是苹果计算机。请查看下面的链接,其中包含一些在Mac OS X上安装和使用Tesseract的"方法":https://ryanfb.github.io/etc/2015/03/18/experimenting_with_opencl_for_tesseract.html
希望这对解决问题有用。无论如何,错误"无法分配区域"意味着没有剩余内存空间。确实需要大量的内存(size=1125865547108352,大约 1.126 PB)。要弄清楚到底发生了什么,你应该使用 gdb 这样的分析工具分析代码(实际上错误消息说"在malloc_error_break中设置断点进行调试"),或者至少上传一个小程序可用于重现问题。
你的内存用完了。 (错误代码 = 3)"无法分配区域"表示 Malloc 尝试分配的内存多于可用内存。
也许您可以尝试将识别限制为图像的子矩形 - 在 SetImage 之后调用 SetRectangle(左、上、宽、高)。每个 SetRectangle 都会清除识别结果,以便可以使用同一图像识别多个矩形。例如
api->SetRectangle(30, 86, 590, 100);
如果没有看到您的代码,我猜您要么没有销毁对象并释放内存,要么该版本存在错误。 要检查它是否是前者,您可以使用内存泄漏检测工具/库,要检查它是否是后者,您可以调试它或只是尝试使用其他版本。
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 错误:使用 tesseract 引擎时 C++ 中的声明'typedef struct tagBLOB BLOB'冲突
- Visual Studio 2017 中的 Tesseract 3.05 构建错误
- 'tesseract/baseapi.h'错误
- MSVCR120.dll的无效参数错误(在64位窗口中构建Tesseract Lib)
- 致命错误:strtok_r.h:没有这样的文件或目录(在mingw中编译tesseract-ocr-3.01时)
- 在启用 OpenCL 选项的情况下使用 Tesseract 时出现 malloc 错误
- 编译iOS时Qt Creator Tesseract链接器错误
- 错误LNK2019无法解析外部符号Tesseract OCR c++ Using VS 2015
- Tesseract-ocr, baseapi.h致命错误:platform.h文件未找到