简体   繁体   中英

Is there any way to show tess4j progress in UI (JavaFX)?

I need to display tess4j (OCR Library ) progress in Javafx UI.

public void testOCR() {
    File file = new File("test.png");
    ITesseract instance = new Tesseract();

    try {
        String s = instance.doOCR(file);
        instance.setLanguage("fas");
        System.out.println(s);

    } catch (TesseractException e) {
        System.out.println(e.getMessage());
    }
}

You may be interested in the progressMonitor code at the tess4J repo. I think it's similar to what you're looking for.

package net.sourceforge.tess4j;

import com.sun.jna.Pointer;
import net.sourceforge.tess4j.util.LoggHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static net.sourceforge.tess4j.ITessAPI.TRUE;

class ProgressMonitor extends Thread {

ITessAPI.ETEXT_DESC monitor;
StringBuilder outputMessage = new StringBuilder();

private static final Logger logger = LoggerFactory.getLogger(new LoggHelper().toString());

public ProgressMonitor(ITessAPI.ETEXT_DESC monitor) {
    this.monitor = monitor;
}

public String getMessage() {
    return outputMessage.toString();
}

@Override
public void run() {
    try {
        while (true) {
            logger.info("ocr alive: " + (monitor.ocr_alive == TRUE));
            logger.info("progress: " + monitor.progress);
            outputMessage.append(monitor.more_to_come);
            if (monitor.progress >= 100) {
                break;
            }
            Thread.sleep(100);
        }
    } catch (Exception ioe) {
        ioe.printStackTrace();
    }
}

/**
 * Cancels OCR operation.
 */
public void cancel() {
    monitor.cancel = new ITessAPI.CANCEL_FUNC() {
        @Override
        public boolean invoke(Pointer cancel_this, int words) {
            return true;
        }
    };
}

/**
 * Resets cancel flag.
 */
public void reset() {
    monitor.cancel = null;
}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM