static int ocr_recognizeMultiLine_scored_maxPixels = 100000; sbool ocr_recognizeMultiLine_scored_filterByMinScore; static int ocr_recognizeMultiLine_scored_g = 3; 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) { ret ocr_recognizeMultiLine_scored(bw, sr, autoSegment(bw, ocr_recognizeMultiLine_scored_g)); } static L ocr_recognizeMultiLine_scored(final BWImage bw, L _rects) { ret ocr_recognizeMultiLine_scored(bw, simpleRecognizer(), _rects); } static L ocr_recognizeMultiLine_scored(final RGBImage rgb, L _rects) { ret ocr_recognizeMultiLine_scored(new BWImage(rgb), _rects); } static L ocr_recognizeMultiLine_scored(BufferedImage img, L _rects) { ret ocr_recognizeMultiLine_scored(new BWImage(img), _rects); } static L ocr_recognizeMultiLine_scored(final BWImage bw, final SimpleRecognizer sr, L _rects) { final L rects = dropRectsLargerThan(ocr_recognizeMultiLine_scored_maxPixels, _rects); /*new L lines; for (Rect r : rects) lines.add(RecognizedText(r, sr.recognizeScored(bw.clip(r)))); ret lines;*/ L l = parallelMap2(rects, func(Rect r) -> RecognizedText { //print(sysNow() + " " + currentThreadID() + rectPixels(r)); ret RecognizedText(r, sr.recognizeScored(bw.clip(r))); }); if (ocr_recognizeMultiLine_scored_filterByMinScore) l = ocr_filterByMinScore(l); else ocr_clearLinesBelowMinScore(l); ret l; }