OCR PDF转换为文本

时间:2018-07-25 17:01:29

标签: tesseract tess4j

我正在使用Tess4J从PDF OCR中提取文本。效果很好(需要很多时间),但是它不会检测到列,也不会打印出两列中的行。 尽管如果我使用“转换”将PDF转换为tiff,然后在命令行上的tif文件上直接运行terrasect,它会根据该列生成文本。 知道如何使用JAva在Tess4J或javacpp中使其工作

以下是我的Tess4J代码

public static void main(String[] args)
{

    org.apache.log4j.PropertyConfigurator.configure("C://Projects//Library//Tess4J//log4j.properties.txt"); // sets
                                                                                                            // properties
                                                                                                            // file
                                                                                                            // for
                                                                                                            // log4j

    File image = new File("C://Users//arpit.tandon//Documents//My Received Files//SomePapers//Arlen Effect Abstract.pdf");
    // recognizeTextBlocks(image.toPath());

    Tesseract tessInst = new Tesseract();
    tessInst.setDatapath("C://Projects//Library//Tess4J");
    try
    {
        String result = tessInst.doOCR(image);
        System.out.println(result);
    }
    catch (TesseractException e)
    {
        System.err.println(e.getMessage());
    }

}

在我的javacpp代码后面加上ID

public static void main(String[] args)
{
    BytePointer outText;

    TessBaseAPI api = new TessBaseAPI();
    // Initialize tesseract-ocr with English, without specifying tessdata path
    if (api.Init("C:\\Projects\\Library\\Tess4J\\tessdata", "eng") != 0)
    {
        System.err.println("Could not initialize tesseract.");
        System.exit(1);
    }

    // Open input image with leptonica library
    PIX image = pixRead(args.length > 0 ? args[0] : "C://Users//arpit.tandon//Documents//My Received Files//SomePapers//out.tiff");
    api.SetImage(image);
    // Get OCR result
    outText = api.GetUTF8Text();
    System.out.println("OCR output:\n" + outText.getString());

    // Destroy used object and release memory
    api.End();
    outText.deallocate();
    pixDestroy(image);
}

1 个答案:

答案 0 :(得分:0)

我找到了答案。我必须设置tessInst.setPageSegMode(3); 如果您在命令行中查看tesseract的帮助部分,它会为您提供选择将哪个数字用于什么目的。