!7 p-subst { autoRestart(); JNavigation nav = jnavigation(); frameIcon(#1101244, showMaximizedFrame(nav)); File dataDir = javaxDataDir("Screen shots for text recognition"); for (final File f : sortFilesByDateDesc(listPNGFiles(dataDir))) { final BufferedImage img = loadBufferedImage(f); print("Recognizing: " + f.getName() + " (" + bufferedImageSizeWithStar(img) + ")"); long time = sysNow(); final L lines = ocr_recognizeMultiLine_scored(img); print(" " + (sysNow()-time) + " ms"); nav.addPage(f.getName(), func -> JComponent { final new ImageSurface is; is.specialPurposed = true; showImageWithRecognizedTexts(img, is, lines); onImageSurfaceHighlightChange(is, voidfunc(Rect r) { RecognizedText rec = findByField(lines, +r); setToolTip(is, rec == null ? null : str(rec.text)); }); imageSurfacePopupMenuWhenHighlighted_top(is, voidfunc(JPopupMenu menu, final Rect r) { final RecognizedText rec = findByField(lines, +r); addPopupMenuItem(menu, "OK: " + rec.text!, r { appendToTextFile_uniq(changeExtension(f, ".expected"), struct(ll(rec.text!, rec.r))); }); addSeparator(menu); }); ret jtabs( "Picture", jscroll(is), "Raw", jtextarea(pnlStructToString(lines)) ); }); } }