[UPDATE: Ich habe doch noch weitergearbeitet und die Verzerrungen des Scans entfernt, der Text ist jetzt vollständig abrufbar]
Wie mehrere Leute in ihren Blogs berichten (Blog1, Blog2, Blog3, Blog4) erhalten viele Leute zur Zeit Lochkarten in Holzboxen zugeschickt. Dazu eine auf Schreibmaschine gedruckte Anweisung die "anderen Leute" zu finden um die Karten zu decodieren.
Ich habe zwar keine dieser Karten erhalten, aber einer der Blogger war so freundlich uns allen einen Scan zur Verfügung zu stellen:
Ein kurzes Googeln ergab folgende Seite Doug Jones's punched card codes. Da ich natürlich nicht manuell die Karten dekodieren wollte, schrieb ich in .NET ein kleines Programm.
Schritt 1: PSP7 nehmen, Bild nach Grayscale, Histogramm Anpassungen, und Contour Trace. Danach die nicht benötigten Stellen ausschneiden
Schritt 2: Nach 8bit Indexed Bitmap konvertieren und einige Farben zur Palette hinzufügen
Schritt 3: Im .NET Programm das Raster ermitteln:
Wie man sieht stimmt das ermittelte Raster ab der 30sten Spalte nicht mehr 100%ig, deswegen decodieren wir im ersten Schritt auch nur die ersten 30 Buchstaben.
Schritt 4: Programm die Bounding Boxen nach markierungen scannen lassen:
Man sieht hier auch schon zwei Scanfehler, in den hinteren Reihen wurden zwei Boxen falsch erkannt. Dies könnte ich noch korrigieren, ist aber nicht notwendig wie man gleich sieht. [UPDATE: Ich habe doch noch weitergearbeitet und die Verzerrungen des Scans entfernt, der Text ist jetzt vollständig abrufbar]
Schritt 5: Boxen in ushort Array überführen, die ersten beiden Zeilen sind Bits 12 und 11, die restlichen 0-9
Schritt 6: Die Textbeschreibung von Doug's Seite textuell parsen und ebenso in ushort Array überführen, dabei eine Character-Map aufbauen
Schritt 7: Ausgabe: UHGVFWKHQNJLADSWHHKHHETHUILGHQIWGYNAWIMJBAXZCNLKIOPXLEMVGLPBLNRMXJ
Wie man sieht ergibt dies rein GAR NIX. Ein manueller Decodierversuch der ersten 4 Buchstaben kam leider zu exakt denselben Ergebnis, also hat das Program keinen Fehler gemacht.
Einer der Blogger berichtete von einer ähnlichen Zeichenkette (er hatte jedoch eine leicht andere Karte).
Was wohl das Geheimnis hinter diesen Karten ist? Eventuell muss man nur die gemeinsamen Löcher betrachten? Tja... virales Marketing eben.
Wer will kann mir ja seine Karte scannen und schicken, ich lese sie dann auch im Programm ein!
Labels: Image Recognition