Java 使Tess4J从PDF文件中获取图像
如何使Tess4J从PDF文件中获取图像 我正在使用OCR(Tess4J)将图像文件转换为文本。它的作品很好,我已经测试的形象,它是伟大的Java 使Tess4J从PDF文件中获取图像,java,parsing,pdf,tesseract,Java,Parsing,Pdf,Tesseract,如何使Tess4J从PDF文件中获取图像 我正在使用OCR(Tess4J)将图像文件转换为文本。它的作品很好,我已经测试的形象,它是伟大的 File imageFile = new File("D:\\HEAD2.png"); Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping // Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping
File imageFile = new File("D:\\HEAD2.png");
Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
// Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping
try {
String result = instance.doOCR(imageFile);
System.out.println(result);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
但我面临着这个问题。我会解析一个包含图像的pdf文件。我不知道该怎么做,也没有找到任何带有pdf的Tess4J示例
我用Asprise测试了这个例子,但在Tess4J上没有找到这样的例子
import com.asprise.util.pdf.PDFReader;
import com.asprise.util.ocr.OCR;
PDFReader reader = new PDFReader(new File("my.pdf"));
reader.open(); // open the file.
int pages = reader.getNumberOfPages();
for(int i=0; i < pages; i++) {
BufferedImage img = reader.getPageAsImage(i);
// recognizes both characters and barcodes
String text = new OCR().recognizeAll(image);
System.out.println("Page " + i + ": " + text);
}
reader.close(); // finally, close the file.
import com.asprise.util.pdf.PDFReader;
导入com.asprise.util.ocr.ocr;
PDFReader reader=newpdfreader(新文件(“my.pdf”);
reader.open();//打开文件。
int pages=reader.getNumberOfPages();
对于(int i=0;i
像处理图像一样使用它。Tess4j依赖于pdfbox,因此您可以使用此库。可能是这样的:
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
PDDocument document = PDDocument.load(new File("YOUR_PDF_FILE_PATH"));
PDFRenderer pdfRenderer = new PDFRenderer(document);
ITesseract tesseract = new Tesseract();
tesseract.setDatapath("tessdata");
tesseract.setLanguage("spa");
for (int page = 0; page < document.getNumberOfPages(); page++) {
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
try {
String str = tesseract.doOCR(bufferedImage);
System.out.println(str);
} catch (TesseractException ex) {
Logger.getLogger(OCR.class.getName()).log(Level.SEVERE, null, ex);
}
}
document.close();
import net.sourceforge.tess4j.ITesseract;
导入net.sourceforge.tess4j.Tesseract;
导入net.sourceforge.tess4j.TesseractException;
导入org.apache.pdfbox.pdmodel.PDDocument;
导入org.apache.pdfbox.rendering.ImageType;
导入org.apache.pdfbox.rendering.PDFRenderer;
PDDocument document=PDDocument.load(新文件(“您的PDF文件路径”);
PDFRenderer PDFRenderer=新的PDFRenderer(文件);
ITesseract tesseract=新的tesseract();
setDatapath(“tesseract”);
tesseract.setLanguage(“spa”);
对于(int page=0;page
我在这里使用的是Tessj4.5和pdf box 2.0。
你也可以查一下
.这段代码实际上很好,但在我的目录中,创建PDF文件图像的位置是。是否有必要?对于具有多个页面的大型PDF,它可能会将图像保存到磁盘以节省一些内存。我目前不知道如何绕过这一点。但是你可以在以后删除那些.pdf文件。