Libraryless. Click here for Pure Java version (3093L/19K/65K).
!752 static new Highest<S> highest; sclass Infos { Map<BWImage, S> chars; bool debug; } static interface Algorithm { S recognizeWord(BWImage img, Infos infos); } static Infos infos; static Map<BWImage, S> words; p { load("highest"); } please include function charRangeToChar. // returns true when happy with the sucking package static bool suck(S desc, Algorithm algorithm) { print("Best score: " + highest.score); if (highest.update(desc, scoreAlgorithm(algorithm))) { save("highest"); true; } false; } static synchronized double scoreAlgorithm(Algorithm algorithm) { if (infos == null) { infos = new Infos; infos.chars = mapValues("charRangeToChar", loadGlyphSheet("#1004645")); } if (words == null) words = loadGlyphSheet("#1004649"); printStructure(values(words)); double score = 0, total = 0; for (BWImage img : keys(words)) { infos.debug = false; S w; try { w = algorithm.recognizeWord(img, infos); } catch e { w = exceptionToStringShort(e); silentException(e); } S real = words.get(img); print(real + " => " + w); ++total; if (eq(real, w)) { ++score; print(" ok!"); } else { print(" oops..."); if (l(real) != 0) { int lev = leven(real, w); double s = max(0, 1-lev/(double) l(real)); print("score: " + s + " (lev: " + lev + ")"); score += s; } // Do it again for debug output (could be skipped if needed) infos.debug = true; try { algorithm.recognizeWord(img, infos); } catch {} } } print(); print("SCORE: " + formatDouble(score, 1) + "/" + formatDouble(total, 1)); if (lastSilentException() != null) printStackTrace(lastSilentException()); ret score*100/total; }
Began life as a copy of #1004646
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1004654 |
Snippet name: | Algorithm Sucker - Recognizing "Ticketing" (works) |
Eternal ID of this version: | #1004654/1 |
Text MD5: | 92b2cd8557a2db52ff3ba209a7bda9a8 |
Transpilation MD5: | edcf699aa979d7f5f3711744757fe10d |
Author: | stefan |
Category: | javax / images |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2016-08-26 00:21:50 |
Source code size: | 1907 bytes / 85 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 593 / 947 |
Referenced in: | #1004664 - Test Waking The Sucker (WORKS) #1004698 - Algo Sucker [Predict "Maude Primer"] |