【发布时间】:2018-02-25 11:47:22
【问题描述】:
我正在使用 Apache Tika Parser 将 PDF 文件解析为文本。某些 PDF 可能包含扫描的文档。 Apache Tika 使用 Tesseract 将文本识别为图像。但是 Tesseract 没有 jar 库,用户应该将 Tesseract 作为独立的应用程序安装在操作系统中。 如何在不安装 Tesseract 的情况下使用 Apache Tika 的 Tesseract? 我尝试将 tesseract 文件夹添加到类路径并配置如下:
TesseractOCRConfig config = new TesseractOCRConfig();
config.setTesseractPath("tesseract");
config.setTessdataPath("tesseract/tessdata");
PDFParserConfig pdfConfig = new PDFParserConfig();
pdfConfig.setOcrStrategy(PDFParserConfig.OCR_STRATEGY.OCR_AND_TEXT_EXTRACTION);
ParseContext parseContext = new ParseContext();
parseContext.set(PDFParserConfig.class, pdfConfig);
但我得到了:
org.apache.commons.io.IOExceptionWithCause: Unable to end a page
at org.apache.tika.parser.pdf.AbstractPDF2XHTML.endPage(AbstractPDF2XHTML.java:428)
at org.apache.tika.parser.pdf.PDF2XHTML.endPage(PDF2XHTML.java:162)
at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:393)
at org.apache.tika.parser.pdf.PDF2XHTML.processPage(PDF2XHTML.java:147)
at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:319)
at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:266)
at org.apache.tika.parser.pdf.PDF2XHTML.process(PDF2XHTML.java:117)
... 43 common frames omitted
Caused by: org.apache.tika.exception.TikaException: Tesseract is not available. Please set the OCR_STRATEGY to NO_OCR or configure Tesseract correctly
at org.apache.tika.parser.pdf.AbstractPDF2XHTML.doOCROnCurrentPage(AbstractPDF2XHTML.java:321)
at org.apache.tika.parser.pdf.AbstractPDF2XHTML.endPage(AbstractPDF2XHTML.java:418)
... 49 common frames omitted
我还尝试使用消耗 File 的 tess4j 库,但我需要从 InputStream 解析而不缓存到硬盘中。 谁能帮我配置 Apache Tika 和 Tesseract?
【问题讨论】:
-
Tess4J 可以消费
BufferedImage,所以从你的InputStream:BufferedImage image = ImageIO.read(inputStream); -
@nguyenq 好主意,谢谢,但我收到了
java.lang.IllegalArgumentException: image == null的 pdf 文件 -
PDF 是一种文档格式,而不是图像。您需要先转换它。
标签: java ocr tesseract apache-tika