0

如何让 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文件。我不知道该怎么做而且我还没有找到任何带有 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.
4

2 回答 2

2

使用pdfutilities.convertpdf2png并像以前对图像一样使用它。

于 2013-05-16T14:03:25.803 回答
1

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/

于 2021-03-25T16:17:10.863 回答