我们正在尝试使用Tesseract和Tess4j进行文字提取。
在连续使用tesseract一段时间后,我们注意到应用程序使用的RAM逐渐增加,在此期间,堆内存仍然是空闲的。我们使用jconsole监控堆外内存。堆外内存似乎也很正常。但应用程序的RAM RSS内存却在不断增加
我猜问题是在OCR的内存分配过程中由tesseract造成的内存泄漏,我不确定。任何进一步的想法,请与我们分享



发布于 2021-08-19 21:00:01
前几天我也遇到了同样的问题。我删除了tess4j并使用Tika 1.27 + tesseract解决了这个问题。我使用Executor服务一次运行3个线程,这使内存保持在有限的范围内。
byte fileBytes[] ; // image bytes
Future<String> future = executorService.submit(() -> {
TesseractOCRConfig config = new TesseractOCRConfig();
config.setLanguage("kor+eng");
config.setEnableImageProcessing(1);
config.setPreserveInterwordSpacing(true);
ParseContext context = new ParseContext();
context.set(TesseractOCRConfig.class, config);
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
parser.parse(new ByteArrayInputStream(fileBytes), handler, metadata, context);
return handler.toString();
});
fileBody = future.get(120, TimeUnit.SECONDS);https://stackoverflow.com/questions/61781199
复制相似问题