2016-10-18 9 views

답변

1

tess4J 레포의 progressMonitor 코드에 관심이있을 수 있습니다. 나는 그것이 당신이 찾고있는 것과 비슷하다고 생각합니다.

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

}