Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Apache Tika+;提取扫描PDF的速度较慢;特塞拉特_Java_Performance_Ocr_Tesseract_Apache Tika - Fatal编程技术网

Java 使用Apache Tika+;提取扫描PDF的速度较慢;特塞拉特

Java 使用Apache Tika+;提取扫描PDF的速度较慢;特塞拉特,java,performance,ocr,tesseract,apache-tika,Java,Performance,Ocr,Tesseract,Apache Tika,从中,它可以很好地扫描文档。但问题是,它占用了太多的时间和CPU利用率 在我的例子中,15MB文件有23页大约需要~4.5分钟,这太高了。请在下面找到我的工作代码 Parser parser = new AutoDetectParser(); BodyContentHandler handler = new BodyContentHandler(Integer.MAX_VALUE); TesseractOCRConfig config = new TesseractOCRConfig(); P

从中,它可以很好地扫描文档。但问题是,它占用了太多的时间和CPU利用率

在我的例子中,
15MB
文件有
23页
大约需要
~4.5分钟
,这太高了。请在下面找到我的工作代码

Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler(Integer.MAX_VALUE);

TesseractOCRConfig config = new TesseractOCRConfig();
PDFParserConfig pdfConfig = new PDFParserConfig();
pdfConfig.setExtractInlineImages(true);

ParseContext parseContext = new ParseContext();
parseContext.set(TesseractOCRConfig.class, config);
parseContext.set(PDFParserConfig.class, pdfConfig);
//need to add this to make sure recursive parsing happens!
parseContext.set(Parser.class, parser);

Metadata metadata = new Metadata();
parser.parse(inputStream, handler, metadata, parseContext);
String content = handler.toString();

如何使其更优化/更快?有什么建议吗?

正如@Gagravarr在评论中提到的,这不是
Tika
慢,因为
teseract
是一个CPU消耗过程


为了处理它,我在另一台服务器上使用
FIFO
方法分离了这个过程。这样一次只处理一个文件。

如果关闭Tesseract OCR,它的速度会快多少?是的,没有它,速度会非常快,但不会从扫描PDF中提取文本。我以前在没有tesseract的情况下实现过<代码>AutoDetectParser=新的AutoDetectParser();parser.parse(流、处理程序、新元数据()、新ParseContext());字符串内容=handler.toString()听起来你的问题不是Tika,而是如何让Tesseract正常运行,这可能取决于你的Tesseract版本、配置和操作系统