【问题标题】:It is possible to use the TessAPI1.TessPDFRendererCreate API of tess4J without needing to create physical files?可以使用tess4J的TessAPI1.TessPDFRendererCreate API而不需要创建物理文件吗?
【发布时间】:2020-07-29 14:34:28
【问题描述】:

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

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

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

  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 作为字节数组接收。

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

【问题讨论】:

    标签: java pdf-generation bufferedimage tess4j leptonica


    【解决方案1】:

    您可以在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);
    

    【讨论】:

    • 非常感谢这个解决方案。你介意再澄清一点吗?您是否建议我调用 TessBaseAPI.ProcessPage(...) 方法并将图像的 Pix 传递给该调用?
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 2018-05-17
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多