让Tess4J从PDF文件中获取图像

时间:2013-05-16 10:28:11

标签: 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

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

但我正面临着这个问题。我会解析一个包含图像的pdf文件。我不知道怎么做而且我没有找到任何例子Tess4J与pdf

我用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.

2 个答案:

答案 0 :(得分:2)

使用pdfutilities.convertpdf2png并像使用之前的图像一样使用它。

答案 1 :(得分:0)

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();

我在这里使用 Tessj4 4.5 和 pdf-box 2.0。 你也可以检查 https://colwil.com/how-to-extract-text-from-a-scanned-pdf-using-ocr-in-java/