Я хотел бы использовать команду 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
существует в моей библиотеке затмений с соответствующими методами.
Я уже гарантирую всевнешние библиотеки включены в мой путь сборки в eclipse