Невозможно запустить скрипт Java для запуска tesseract: "java.lang.UnsatisfiedLinkError" в оболочке cmd - PullRequest
0 голосов
/ 16 октября 2018

Я хотел бы использовать команду tesseract для циклического просмотра около 30 650 отчетов в иностранной валюте и извлечения текста.Основная цель - извлечь текст и добавить его в файл.Я уже написал программу на VBA, чтобы делать другие вещи в Excel, но я хотел бы, чтобы Java выполнял некоторые тяжелые работы.

Я получил скрипт для успешной работы в Eclipse .Мой проект - это нездоровый проект.Я получен из репозитория Jcentre ().

Я использую eclipse, чтобы превратить скрипт в работающий jar со всеми зависимостями.Я запустил скрипт в командной строке следующим образом:

java  -jar "C:\Users\repzero\Desktop\ocr_scanner.jar"

Когда я запустил jar в командной строке, результат будет ниже

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.UnsatisfiedLinkError: The specified module could not be fou
nd.

        at com.sun.jna.Native.open(Native Method)
        at com.sun.jna.Native.open(Native.java:1759)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
        at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
        at com.sun.jna.Library$Handler.<init>(Library.java:147)
        at com.sun.jna.Native.loadLibrary(Native.java:412)
        at com.sun.jna.Native.loadLibrary(Native.java:391)
        at net.sourceforge.tess4j.util.LoadLibs.getTessAPIInstance(LoadLibs.java
:81)
        at net.sourceforge.tess4j.TessAPI.<clinit>(TessAPI.java:42)
        at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:367)
        at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:280)
        at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:212)
        at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:196)
        at TextExtractor.main(TextExtractor.java:27)

Коды java ниже

import java.io.*;
import net.sourceforge.tess4j.*;
public class TextExtractor {
    public static void main(String[] args) throws Exception{
        String absolute_input_file_path="";
        String absolute_output_file_path="";
        String result="";       
        System.out.println("Executing");

        absolute_input_file_path="C:\\Users\\repzero\\Documents\\currency1.pdf";
        absolute_output_file_path="C:\\Users\\repzero\\Desktop\\wow.txt";
        System.out.print(absolute_input_file_path);
        File input_file_obj=new File(absolute_input_file_path);
        File output_file_obj=new File(absolute_output_file_path);
        if(input_file_obj.exists() && !input_file_obj.isDirectory())
        {
            File imageFile = new File("C:\\Users\\repzero\\Documents\\job letter.pdf");
            ITesseract instance = new Tesseract(); //

            try {

            result = instance.doOCR(imageFile);
            System.out.println(result);

            } catch (TesseractException e) {
            //System.err.println(e.getMessage());
            }
            if(output_file_obj.isFile())
            {
            FileWriter writer=new FileWriter(output_file_obj,true); 
            writer.write(result);
            writer.close();         
            }
            else 
            {
                FileWriter writer=new FileWriter(output_file_obj,false);    
                writer.write(result);
                writer.close();                     
            }
        } // end if input file exist
        else {
            System.out.println("Error:Input file name does not exists or it's a directory");
        }

    }

}

Вопрос

Мои java-мышцы слабы. Почему я получаю это исключение в оболочке cmd, но код успешно выполняется в затмении?

Я уже проверил, что com.sun.jna.Native существует в моей библиотеке затмений с соответствующими методами.

enter image description here

Я уже гарантирую всевнешние библиотеки включены в мой путь сборки в eclipse

enter image description here

...