Java 使用Apache Tika+;提取扫描PDF的速度较慢;特塞拉特
从中,它可以很好地扫描文档。但问题是,它占用了太多的时间和CPU利用率 在我的例子中,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
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版本、配置和操作系统