static int ocr_recognizeMultiLine_scored_maxPixels = 100000; static L ocr_recognizeMultiLine_scored(RGBImage img) { BWImage bw = new BWImage(img); img = null; ret ocr_recognizeMultiLine_scored(bw); } static L ocr_recognizeMultiLine_scored(BufferedImage img) { BWImage bw = new BWImage(img); img = null; ret ocr_recognizeMultiLine_scored(bw); } static L ocr_recognizeMultiLine_scored(BWImage bw) { SimpleRecognizer sr = filledSimpleRecognizer_cached(); enableFullSearchInSimpleRecognizer(sr); ret ocr_recognizeMultiLine_scored(bw, sr); } static L ocr_recognizeMultiLine_scored(final BWImage bw, final SimpleRecognizer sr) { final L rects = dropRectsLargerThan(ocr_recognizeMultiLine_scored_maxPixels, autoSegment(bw)); /*new L lines; for (Rect r : rects) lines.add(RecognizedText(r, sr.recognizeScored(bw.clip(r)))); ret lines;*/ ret parallelMap2(rects, func(Rect r) -> RecognizedText { print(sysNow() + " " + currentThreadID() + rectPixels(r)); ret RecognizedText(r, sr.recognizeScored(bw.clip(r))); }); }