tess4J的TessAPI1.TessPDFRendererCreate API可以不用创建物理文件就可以使用吗?

It is possible to use the TessAPI1.TessPDFRendererCreate API of tess4J without needing to create physical files?

我正在使用 Tesseract Java API (tess4J) 将 Tiff 图像转换为 PDF。

这很好用,但我不得不将源 Tiff 图像和输出 PDF 作为实际物理文件写入本地文件存储,以便使用 TessAPI1.TessPDFRendererCreate API.

请注意以下代码段中的以下内容:-

  1. 输入的Tiff原本是一个java.awt.image.BufferedImage,但我必须将它写入物理文件(sourceTiffFile是一个File对象)。

  2. 我必须为输出指定一个文件路径(pdfFullFilepath 是一个表示新 PDF 文件绝对路径的字符串)。

        try {
            ImageIO.write(bufferedImage, "tiff", sourceTiffFile);
        } catch (Exception ioe) {
            //handling code...
        }
    
        TessResultRenderer renderer = TessAPI1.TessPDFRendererCreate(pdfFullFilepath, dataPath, 0);
        TessAPI1.TessResultRendererInsert(renderer, TessAPI1.TessPDFRendererCreate(pdfFullFilepath, dataPath, 0));
        int result = TessAPI1.TessBaseAPIProcessPages(handle, sourceTiffFile.getAbsolutePath(), null, 0, renderer);
    

我真的很想避免创建物理文件,但不确定 API 是否可行。理想情况下,我想将 Tiff 作为 java.awt.image.BufferedImage 或字节数组传递,并将输出 PDF 作为字节数组接收。

一如既往地欢迎任何建议。谢谢:)

你可以传入ProcessPage API方法一个Pix,它可以从一个BufferedImage转换过来,但输出仍然是一个物理文件。 Tesseract API 规定。

https://tesseract-ocr.github.io/tessapi/4.0.0/a01625.html

http://tess4j.sourceforge.net/docs/docs-4.4/net/sourceforge/tess4j/TessAPI1.html

例如:

int result = TessAPI1.TessBaseAPIProcessPage(handle, LeptUtils.convertImageToPix(bufferedImage), page_index, "input file name", null, 0, renderer);