首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从pdf文件中提取文本和包含文本的图像

从pdf文件中提取文本和包含文本的图像
EN

Stack Overflow用户
提问于 2019-07-19 13:05:50
回答 1查看 67关注 0票数 0

我正在从pdf文件中提取文本,该文件具有行文本和一些具有文本的图像报告。我应该使用哪种OCR技术来提取行文本和图像中的文本。我已经尝试了一些OCR技术,要么是做OCR,要么是从pdf中读取文本。我需要一次完成这两个任务。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-01-10 19:14:37

代码语言:javascript
复制
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ContentsExtraction {
    private static void extractFromFile(final Parser parser, final String fileName)throws IOException,SAXException,TikaException {
        long start =System.currentTimeMillis();
        BodyContentHandler handler=new BodyContentHandler(10000000);
        Metadata metaData=new Metadata();
        FileInputStream content=new FileInputStream(fileName);
        parser.parse(content,handler,metaData,new ParseContext());
        System.out.println("\n\n File content : "+handler.toString());
    }

    private static void extract(final String fileName,final String writePath)throws IOException{
        File image=new File(fileName);
        Tesseract tessInst=new Tesseract();
        try{
            tessInst.setDatapath("./tessdata");
            String result = tessInst.doOCR(image);
            System.out.println(result);

        }catch (TesseractException e){
            System.err.println(e.getMessage());
        }
    }
    public static void main(String[] args)throws IOException,SAXException,TikaException {
        String path="input.pdf";
        String writePathImage=null;
        String[] ext=path.split("\\.");
        Parser parser=new AutoDetectParser();
        if(ext[1].equalsIgnoreCase("png")||ext[1].equalsIgnoreCase("jpg")||ext[1].equalsIgnoreCase("pdf"))
        {
            writePathImage="output.txt";
            extractFromFile(parser,path);
            extractPdfImage(path,writePathImage);


        }else
        {
            extractFromFile(parser,path);

        }
        System.out.println("Processing Completed");
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57105835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档