docs: @Override
      public List<Rectangle> getSegmentedRegions(BufferedImage bi, int pageIteratorLevel) throws TesseractException {
          init();
          setTessVariables();
  
          try {
              List<Rectangle> list = new ArrayList<Rectangle>();
              setImage(bi, null);
  
              Boxa boxes = TessBaseAPIGetComponentImages(handle, pageIteratorLevel, TRUE, null, null);
              int boxCount = Leptonica1.boxaGetCount(boxes);
              for (int i = 0; i < boxCount; i++) {
                  Box box = Leptonica1.boxaGetBox(boxes, i, L_CLONE);
                  if (box == null) {
                      continue;
                  }
                  list.add(new Rectangle(box.x, box.y, box.w, box.h));
                  PointerByReference pRef = new PointerByReference();
                  pRef.setValue(box.getPointer());
                  Leptonica1.boxDestroy(pRef);
              }
  
              PointerByReference pRef = new PointerByReference();
              pRef.setValue(boxes.getPointer());
              Leptonica1.boxaDestroy(pRef);
  
              return list;
          } catch (IOException ioe) {
              // skip the problematic image
              logger.warn(ioe.getMessage(), ioe);
              throw new TesseractException(ioe);
          } finally {
              dispose();
          }
      }