无需写入文件系统即可将 OCR 层添加到现有 PDF

Add OCR layer to existing PDF without the need to write to file system

我正在尝试获取扫描的 PDF 文档并在顶部添加 OCR 图层。我可以获得以下代码来实现此目的:

    public void ocrFile(PDDocument pdDocument, File file) throws TesseractException, IOException {
    PDFTextStripper pdfStripper = new PDFTextStripper();
    String text = pdfStripper.getText(pdDocument);

    Tesseract instance = new Tesseract(); // JNA Interface Mapping
    File tessDataFolder = LoadLibs.extractTessResources("tessdata");
    instance.setDatapath(tessDataFolder.getAbsolutePath());

    List<RenderedFormat> list = new ArrayList<RenderedFormat>();
    list.add(RenderedFormat.PDF);

    String outputFileName = FilenameUtils.removeExtension(file.getAbsolutePath());
    instance.createDocuments(file.getAbsolutePath(), outputFileName, list);

}

这会将带有 OCR 层的 PDF 输出到磁盘上的特定位置。我正在尝试更改此设置,以便应用程序不需要将任何文件写入磁盘。我不确定这是否可以完成?

理想情况下,我想用 MultipartFile 更改 ocrFile 的文件输入,并从该方法返回它,从而不需要涉及文件系统。这可以实现吗?

不,这是不可能的。 Tesseract 的 TessResultRenderer API 输出到物理文件,因此需要 outputbase 输入参数来指定输出文件的名称。