如何从包含文本和图像的PDF文件中提取内容?

时间:2015-07-08 20:19:09

标签: java pdf tesseract pdfbox apache-tika

我有一个pdf文件,它有两种类型的页面,普通文本页面和来自扫描文档的页面。可以使用PDFBox或Tika轻松提取文本内容。但是这些库不能进行OCR,我需要像Tess4J这样的东西。但是,我如何将Tess4J和PDFBox(或Tika)结合在一起,以便从文本和扫描页面中提取所有内容?

EDITED:------ 我发现了一个如下解决方案,但效果不佳

for(PDPage page:pages){

        PDPropertyList pageFonts = page.getResources().getProperties();
        Map<String,PDXObjectImage> img = page.getResources().getImages();

        Set<String> keys = img.keySet();
        Iterator iter = keys.iterator();

        while(iter.hasNext()){

            String k = (String) iter.next();
            System.out.println(k);              
            PDXObjectImage ci = img.get(k);

            ci.write2file(k);

            File imageFile = new File(k+".jpg");
            Tesseract instance = Tesseract.getInstance();


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

问题是尽管保存的图像具有良好的质量,但Tess4J在它们上运行不好并且大多数都是无意义的。然而,如果首先将pdf传递给它,Tess4J能够非常好地对它们进行OCR。

总之,通过PdfBox提取图像会影响OCR过程的质量,有谁知道为什么?

0 个答案:

没有答案