10
\$\begingroup\$

Captchas aren't meant to be machine-readable, and that's terrible. It is time to end this obvious bout of unfounded hatred for machines just trying to let you know about great deals on ṗḧ@ṛḿ4ćëüäḷṡ ƻđȺɏ.

Note: All captchas were made by using a library that has been modified so that it mostly generates images much easier than most real captchas. Don't expect code here to work well in the real world.

Your task

Make a program that translates given captchas to their text.

Default acceptable image I/O methods apply for input.
Output must be the text contained in the captcha, but other than that default acceptable general I/O methods apply.

Example

Input:

dlznuu.png

Output: dlznuu

Rules

  • Please don't just hardcode the images or image hashes or such. If anyone does this I'm going to generate another testcase folder and then everyone will be unhappy. (Hardcoding stuff like "this is how a letter looks" is allowed, but creativity is encouraged.)
  • Don't rely on the filename or anything but the actual image data for anything other than validating your output.
  • Your program must be below 50,000 bytes.
  • No using Tesseract. Come on, you thought it was gonna be that easy?

Test cases:

  • All captchas have 6 letters in them.
  • All captchas are 200 by 80 pixels.
  • All characters are lowercase.
  • All characters are in the range a-z, with no numbers or special characters.
  • All captchas fit the regex /^[a-z]{6}$/.
  • Every testcase is named [correct_result].png

6 example images for starting out.
1000 images

Scoring:

Test your program on all 1000 images provided in the tar.gz. (the gist files are just example files)
Your program's score is (amount_correct / 1000) * 100%.

\$\endgroup\$

closed as too broad by Ian Miller, NoOneIsHere, Sriotchilism O'Zaic, peter ferrie, Timtech Nov 24 '18 at 3:39

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    \$\begingroup\$ Um, / 1000 * 100 is just / 10? \$\endgroup\$ – Erik the Outgolfer Nov 3 '18 at 22:39
  • \$\begingroup\$ @EriktheOutgolfer That is maybe slightly less clear. *100 emphasizes that the score is being displayed as a percentage. \$\endgroup\$ – dylnan Nov 3 '18 at 22:59
  • \$\begingroup\$ @EriktheOutgolfer Exactly what dylnan said -- I made the conscious choice not to do that because it'd be more obvious this way, in my opinion. \$\endgroup\$ – NO_BOOT_DEVICE Nov 4 '18 at 2:12
  • 1
    \$\begingroup\$ Is there a reason you didn't just say "your program's score is the percentage correct on the 1000 test cases"? \$\endgroup\$ – Kamil Drakari Nov 4 '18 at 2:42
  • 3
    \$\begingroup\$ @KamilDrakari, even that's way more complicated than it needs to be. "Your program's score is the number of correct results from the test battery." \$\endgroup\$ – Peter Taylor Nov 23 '18 at 13:43