Computer Vision ist sehr anspruchsvoll! Man konnte bisher nur sehr wenig darüber in Erfahrung bringen, wie das menschliche Gehirn graphische Informationen verarbeitet.
Man konnte zumindestens herausfinden, das es gewisse Neuronengruppen im visuellen Kortex gibt, die stark auf kontrastreiche (Balken-)Übergänge reagieren. Davon gibts dann ganz viele Neuronentypen, z.B. für verschiedene Dicken und vor allem verschiedene Rotationen. Wie man das im Gehirn verarbeitet, das weiß man nur ganz wenig.
Essentiell ist aber die Erkenntnis, dass man dann für einen Punkt die lokale Textur beschreiben kann, indem man guckt, welche Linien in welcher Dicke dominant sind. Klassischerweise drängt sich dabei die Fouriertransformation auf, da dort das Bild in die Frequenzen in alle Richtungen ermittelt wird. Wenn man dann an der Stelle das Frequenzspektrum mit einer Gaussglocke filtert, hat man eine lokale Texturbeschreibung dieser Stelle in Form von Absolut- und Phasenwerten, da die Fouriertransformation einen Real- und Imaginärteil hat. Man nennt dies auch die Gabor Wavelet Transformation.
Naja, was kann man damit machen? Du könntest z.B. für jeden Buchstaben ein Gitter darüberlegen und an jedem Knotenpunkt die Gabor Wavelet Werte für mehrere Rotationen und Dicken (= größere Sinuswellen) speichern. Wenn du mehrere Bilder des Buchstabens so samplest, hast du für jeden Knotenpunkt ein Trainingsbeispiel eines lokalen Texturmerkmals eines "E" z.B. an dieser Stelle. Das musst du dann statistisch Mitteln (maximum likelihood, z.B.).
Wenn du dann dein Blatt Papier scannst, gehst du dann für jeden Buchstaben deines Alphabets mit deinem Texturmodell über das Bild und versuchst die Stellen zu finden, wo die größte Ähnlichkeit besteht. Ab nem Threshold (den du dann z.B. das Bayes-Theorem lernen kannst in deiner Trainingsphase) kannst du dann sicher sein, das an der Stelle dein Buchstabe steht.
Das ist eigentlich eine sehr stabile Methode, um Texturmodelle auf arbiträre Grafiken zu matchen. Das Schöne an Gabor Wavelets ist aber auch, dass du für ein solch gespeichertes Modell eine beliebige Rotation berechnen kannst, du drehst also das Modell, so kannst du auch bei einem schief gescannedten Blatt Papier deine Buchstaben noch erkennen.
Wahrscheinlich gibts im Rahmen OCR bessere Verfahren. Die Landschaft an erfolgreichen Methoden in der Computer Vision ist sehr sehr groß.
Ich erzähle hier nur von der GWT, weil ich weiß, das sie sehr stabil bei der Gesichtserkennung funktioniert und auch nicht so schwer zu programmieren ist. Aber einer der Vorredner hier hat schon recht, es ist schwer in sowas reinzufinden, wenn man sich noch nie mit sowas auseinander gesetzt hat.
Neuronale Netze sind m.E. nach nicht für diesen Zweck geeignet, da sichergestellt werden müsste, dass die Eingabe normalisiert ist. Also der Ausschnitt des Buchstabens müsste hinreichend bestimmt werden. Selbst wenn der Buchstabe kursiv, unterstrichen oder vielleicht fett wäre, gäbe es schon massive Probleme. Neuronale Netze versuchen eine mathematische Funktion zu modellieren und wenn - wie in diesem Fall - eine binäre Entscheidung zu treffen, ob das ein E oder eben kein E ist, ist es schon schwierig, vor allem, da das neuronale Netz nicht den geometrischen Zusammenhang eines Buchstabens lernen kann (NN können natürlich auch mehrere Outputs mit reelen Werten haben!).
Gabor Wavelets können auch auf beliebige Graphen gelernt werden, wobei dann die Deformation der Kanten auch in die Modell- und hinterher in der Ähnlichkeitsberechnung mit eingehen kann. Bei einem solchen Verfahren redet man dann auch vom Elastic Bunchgraph Matching.
So genug gefaselt. Ich bin was die Thematik angeht etwas vorbelastet, deshalb gebe ich gerne meinen Senf dazu

Was das mit einem Dateiformat zu tun hat --- das weiß ich aber auch nicht!!!