!include once #1015415 // GrabbedImage sclass OCRRecognizeAndTeach { BufferedImage img; ImageSurface is; L rects; // use these if not null, otherwise auto-segment L texts; ReliableSingleThread rst = new(r { reRecognize() }); *() {} *(BufferedImage img) { go(img); } void go(BufferedImage img, L rects) { this.rects = rects; go(img); } void go(BufferedImage img) { print("Recognizing"); this.img = img; texts = rec(); is = showImageWithRecognizedTexts(img, null, texts); showImageWithRecognizedTexts_makeTeachable2(img, is, texts, simpleRecognizer(), rTrigger(rst)); } L rec() { ret rects != null ? ocr_recognizeMultiLine_scored(new BWImage(img), simpleRecognizer(), rects) : ocr_recognizeMultiLine_scored(img); } void reRecognize { print("Re-recognizing..."); temp tempDisposeWindow(smallLoadingAnim()); replaceCollection(texts, rec()); is.repaint(); print("Done"); } void cleanMeUp { if (rst != null) rst.cancel(); disposeWindow(is); is = null; } }