/** * Test of ChoiceIterator. * * @throws Exception */ @Test public void testChoiceIterator() throws Exception { logger.info("TessResultIteratorGetChoiceIterator"); String filename = String.format("%s/%s", this.testResourcesDataPath, "eurotext.tif"); File tiff = new File(filename); BufferedImage image = ImageIO.read(new FileInputStream(tiff)); // require jai-imageio lib to read TIFF ByteBuffer buf = ImageIOHelper.convertImageData(image); int bpp = image.getColorModel().getPixelSize(); int bytespp = bpp / 8; int bytespl = (int) Math.ceil(image.getWidth() * bpp / 8.0); TessAPI1.TessBaseAPIInit3(handle, datapath, language); TessAPI1.TessBaseAPISetImage( handle, buf, image.getWidth(), image.getHeight(), bytespp, bytespl); TessAPI1.TessBaseAPISetVariable(handle, "save_blob_choices", "T"); TessAPI1.TessBaseAPISetRectangle(handle, 37, 228, 548, 31); ETEXT_DESC monitor = new ETEXT_DESC(); ProgressMonitor pmo = new ProgressMonitor(monitor); pmo.start(); TessAPI1.TessBaseAPIRecognize(handle, monitor); logger.info("Message: " + pmo.getMessage()); TessResultIterator ri = TessAPI1.TessBaseAPIGetIterator(handle); int level = TessPageIteratorLevel.RIL_SYMBOL; if (ri != null) { do { Pointer symbol = TessAPI1.TessResultIteratorGetUTF8Text(ri, level); float conf = TessAPI1.TessResultIteratorConfidence(ri, level); if (symbol != null) { logger.info(String.format("symbol %s, conf: %f", symbol.getString(0), conf)); boolean indent = false; TessChoiceIterator ci = TessAPI1.TessResultIteratorGetChoiceIterator(ri); do { if (indent) { System.out.print("\t"); } System.out.print("\t- "); String choice = TessAPI1.TessChoiceIteratorGetUTF8Text(ci); logger.info( String.format("%s conf: %f", choice, TessAPI1.TessChoiceIteratorConfidence(ci))); indent = true; } while (TessAPI1.TessChoiceIteratorNext(ci) == TessAPI1.TRUE); TessAPI1.TessChoiceIteratorDelete(ci); } logger.info("---------------------------------------------"); TessAPI1.TessDeleteText(symbol); } while (TessAPI1.TessResultIteratorNext(ri, level) == TessAPI1.TRUE); } assertTrue(true); }