OCR PDF 到文本

OCR PDF to text

我正在使用 Tess4J 从 PDF OCR 中提取文本。它工作得很好(需要很多时间),但它不会检测列并将两列的行一起打印出来。 尽管如果我使用 "convert" 将 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 代码

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

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