gpt4 book ai didi

tesseract - Tess4J: "Invalid calling convention 63"尽管版本正确

转载 作者:行者123 更新时间:2023-12-04 20:33:38 31 4
gpt4 key购买 nike

我试着做 OCR 并输出为 PDF 使用 Tess4J 和以下代码 Linux (Ubuntu 16 Xenial)。

public void testOcr() throws Exception {
File imageFile = new File("/projects/de.conradt.core/tessdata/urkunde.jpg");
ITesseract instance = new Tesseract1(); // tried both Tesseract() and Tesseract1()

// File tessDataFolder = LoadLibs.extractTessResources("tessdata"); // Maven build bundles English data
// instance.setDatapath(tessDataFolder.getParent());
instance.setDatapath("/projects/de.conradt.core/tessdata");
instance.setLanguage("deu");

try {
String result = instance.doOCR(imageFile);
System.out.println(result);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}

List<ITesseract.RenderedFormat> list = new ArrayList<ITesseract.RenderedFormat>();
list.add(ITesseract.RenderedFormat.PDF);
File pdfFile = new File("/projects/de.conradt.core/tessdata/urkunde.pdf");
instance.createDocuments(pdfFile.getAbsolutePath(), "/projects/de.conradt.core/tessdata/urkunde", list);
}

最后一行
        instance.createDocuments(pdfFile.getAbsolutePath(), "/projects/de.conradt.core/tessdata/urkunde", list);

抛出异常:
11:03:12.651 [http-nio-8080-exec-1] ERROR net.sourceforge.tess4j.Tesseract - Invalid calling convention 63                                
java.lang.IllegalArgumentException: Invalid calling convention 63
at com.sun.jna.Native.createNativeCallback(Native Method)
at com.sun.jna.CallbackReference.<init>(CallbackReference.java:239)
at com.sun.jna.CallbackReference.getFunctionPointer(CallbackReference.java:413)
at com.sun.jna.CallbackReference.getFunctionPointer(CallbackReference.java:395)
at com.sun.jna.Function.convertArgument(Function.java:541)
at com.sun.jna.Function.invoke(Function.java:305)
at com.sun.jna.Library$Handler.invoke(Library.java:236)
at com.sun.proxy.$Proxy89.gsapi_set_stdio(Unknown Source)
at org.ghost4j.Ghostscript.initialize(Ghostscript.java:323)
at net.sourceforge.tess4j.util.PdfUtilities.convertPdf2Png(PdfUtilities.java:103)
at net.sourceforge.tess4j.util.PdfUtilities.convertPdf2Tiff(PdfUtilities.java:48)
at net.sourceforge.tess4j.Tesseract.createDocuments(Tesseract.java:535)
at net.sourceforge.tess4j.Tesseract.createDocuments(Tesseract.java:507)
at de.conradt.core.Example.testOcr(Example.java:62)
at de.conradt.core.Example.ocr(Example.java:35)

我发现这是 Tess4J 的一个已知(但据称已关闭)问题:
  • https://github.com/nguyenq/tess4j/issues/35
  • https://sourceforge.net/p/tess4j/discussion/1202294/thread/2a25344c/
  • https://github.com/zippy1978/ghost4j/issues/44

  • 但我检查了我的版本以及 TESSDATA_PREFIX 环境变量。就我所见,这一切都设置正确。

    Tesseract 和 Leptonica 版本:
    $ /usr/bin/tesseract --version                                                                        
    tesseract 3.04.01
    leptonica-1.73
    libgif 5.1.2 : libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.4.4 : libopenjp2 2.1.0

    Ghostscript 版本: (这是我通过 apt-get 获得的最新版本)
    $ ghostscript -v                                                                                      
    GPL Ghostscript 9.18 (2015-10-05)
    Copyright (C) 2015 Artifex Software, Inc. All rights reserved.

    Tess4j 版本:
    3.2.1

    和 TESSDATA_PREFIX(配置文件等在/projects/de.conradt.core/tessdata 下):
    $ echo $TESSDATA_PREFIX                                                                                     
    /projects/de.conradt.core

    查看Tess4j的Release日志: http://tess4j.sourceforge.net/changelog.html ,我应该使用正确的版本堆栈。
    尤其是更改日志中的 3.2 版说:

    Version 3.2 - 15 May 2016: Revert JNA to 4.1.0 due to "Invalid calling convention 63" errors invoking GhostScript via Ghost4J on Linux



    所以我认为我应该安全使用 3.2.1。

    我是否需要手动设置有关 JNA 的任何内容?根据我的理解,这已在 3.2.0 for Linux 中明确修复。

    最佳答案

    好的,我没有在我的项目 pom 中的任何地方明确引用 JNA,我认为这都是在 Tess4J 3.2.1 及其 pom.xml 中完成的。我现在也在自己的 pom.xml 中添加了 JNA 4.1.0 作为依赖项,这似乎解决了问题。

        <dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>4.1.0</version>
    </dependency>

    关于tesseract - Tess4J: "Invalid calling convention 63"尽管版本正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40361873/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com