Я просто очень расстроен. У меня есть личный проект, который мне дал мой папа, чтобы я мог помочь его компании по-своему. Я пытаюсь использовать Tesseract API для чтения слов из изображений. Я никогда не делал ничего подобного добавлению библиотеки или чего-либо технического, поэтому следовал этим инструкциям, чтобы выручить меня:
https://tphangout.com/how-to-use-the-tesseract-api-to-perform-ocr-in-your-java-code/
https://dzone.com/articles/reading-text-from-images-using-java-1
Я следовал этим инструкциям к письму, за исключением одной части (шаг 7; они просят поместить файл liblept.dll; после того, как я извлек Tess4j, я не смог найти этот конкретный файл .dll). У меня продолжает появляться ошибка.
Я уже удалил свой проект Netbeans и повторил попытку установки и выполнил те же действия. Я также даже подумал, что это может быть тип файла изображения, поэтому я переключился между tiff, png и jpg. Ничего.
Класс ImageReader
import java.io.*;
//import java.util.*;
import net.sourceforge.tess4j.*;
public class ImageReader {
String filePath;
public ImageReader(String s) {
filePath = s;
}
public String getImageReadings() {
File imageFile = new File(filePath);
Tesseract instance = new Tesseract();
try {
String result = instance.doOCR(imageFile);
return result;
}
catch (TesseractException e) {
System.err.println(e.getMessage());
return "Error while reading image";
}
}
}
Я ожидал, что он выдаст Hello, когда он прочитает png, который я создал, набрав в нем Hello. Но это просто дало мне эту ошибку:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'libtesseract3051': Native library (win32-x86-64/libtesseract3051.dll) not found in resource path ([file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/commons-beanutils-1.9.2.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/commons-io-2.6.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/commons-logging-1.2.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/fontbox-2.0.9.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/ghost4j-1.0.1.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/hamcrest-core-1.3.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/itext-2.1.7.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/jai-imageio-core-1.4.0.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/jbig2-imageio-3.0.0.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/jboss-vfs-3.2.12.Final.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/jcl-over-slf4j-1.7.25.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/jna-4.1.0.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/jul-to-slf4j-1.7.25.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/junit-4.12.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/lept4j-1.6.4.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/log4j-1.2.17.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/log4j-over-slf4j-1.7.25.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/logback-classic-1.2.3.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/logback-core-1.2.3.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/pdfbox-2.0.9.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/pdfbox-tools-2.0.9.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/slf4j-api-1.7.25.jar, file:/C:/Users/kakas/OneDrive/Documents/Tess4J/lib/xmlgraphics-commons-1.5.jar, file:/C:/Users/kakas/OneDrive/Documents/NetBeansProjects/PDFSorter/build/classes/])
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:271)
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:379)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:292)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:224)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:208)
at pdfsorter.ImageReader.getImageReadings(ImageReader.java:25)
at pdfsorter.PDFSorter.main(PDFSorter.java:19)
Я немного растерялся из-за того, что делать, потому что до сих пор я только занимался мини-проектами, такими как создание калькулятора. Я думаю, что это проблема с файлом DLL, которую я не смог найти, но я не уверен. Также только недавнее обновление, по какой-то причине оно выдает другую ошибку с другим png из того же места. Вторая ошибка ниже:
[main] ERROR net.sourceforge.tess4j.Tesseract - I/O error reading PNG header!
javax.imageio.IIOException: I/O error reading PNG header!
javax.imageio.IIOException: I/O error reading PNG header!
at com.sun.imageio.plugins.png.PNGImageReader.readHeader(PNGImageReader.java:315)
at com.sun.imageio.plugins.png.PNGImageReader.readMetadata(PNGImageReader.java:654)
at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1256)
at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1614)
at javax.imageio.ImageReader.readAll(ImageReader.java:1066)
at net.sourceforge.tess4j.util.ImageIOHelper.getIIOImageList(ImageIOHelper.java:395)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:224)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:208)
at pdfsorter.ImageReader.getImageReadings(ImageReader.java:25)
at pdfsorter.PDFSorter.main(PDFSorter.java:19)
Caused by: javax.imageio.IIOException: Bad PNG signature!
at com.sun.imageio.plugins.png.PNGImageReader.readHeader(PNGImageReader.java:242)
... 9 common frames omitted
Я не уверен, как я могу опубликовать png-файлы, которые я использовал, потому что они находятся на моем локальном диске, но я посмотрю, что я могу сделать.