| Autor |
Beitrag |
luckyluke84
      
Beiträge: 54
WinXP
Lazarus
|
Verfasst: Di 06.11.07 18:40
ScreenWriting
Schreib eine Zahl mit der Maus auf eine Fläche und
das Programm erkennt es. Bei mir klappt es, ich
würd gerne wissen, ob es bei euch auch klappt.
(Hinweise im Programm beachten !)
Ladet dazu mein Demoprogramm im Anhang runter: (Größe: 0,4 MB)
Update 06. April 08
* nochmals komplett überarbeitet, damit das Programm bald auch Buchstaben erkennen kann
* erstes Beispielprogramm (Alpha-Version)
Update 02. Jan 08
Folgendes wurde verbessert:
* bessere Zahlenerkennung
* bereits Geschriebenes verschwindet nicht mehr einfach so
* kleinere Demodatei
Ich habe die eine oder andere Idee umgesetzt ohne etwas zu löschen, was nicht mehr benötigt wird.
Deshalb gibts den Quellcode erst später.
Vorsicht: Manchmal stürzt das Programm ohne Grund ab.... den Fehler konnte ich bis jetzt noch nicht finden
Gebt mir euer Feedback!
Update 12. Nov 07
Ich habe bereits mit der Beschriftung und Erklärung der Unit begonnen, sowie die Erkennungsraten
verbessert. Mein Programm erkennt bereits (93%) meiner geschriebenen Zahlen. Testet mein Demo-
programm und schaut ob ihr mit/ohne Übung auch so eine rel. hohe Erkennung erreicht. Anbei dem
Demoprogamm ist eine Bild-Datei, die zeigt welche Schreibweisen mein Programm alles "unterstützt".
Update 8. Nov 07
Ich hab wieder ein paar neue Ideen gehabt die ich natürlich gleich
umsetzen musste. Ein paar Sachen funktionieren schlechter, viele
aber besser. Schaut euch die Demo an.
Der Source-Code ist ab sofort erhältlich, leider schreibe ich mit
Lazarus, daher weiß ich nicht wieviele Ihn angucken können.
Für alle die selber ein wenig rumspielen wollen gibts die
Unit + kleines Tutorial.
Gebt mir ein wenig Feedback:
- Welche eurer Zahlen erkennt das Programm nicht?
- Werden bestimme Zahlen immer falsch erkannt?
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von luckyluke84 am So 06.04.08 17:47, insgesamt 8-mal bearbeitet
|
|
gehstock
      
Beiträge: 19
Erhaltene Danke: 2
|
Verfasst: Di 06.11.07 18:56
Nur die 4 Zickt etwas rum ansonsten klappt es prima
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 06.11.07 19:02
Er erkennt: 0 2 3 6 7 8
Mit viel Anstrengung: 1 5
Geht einfach nicht: 4 9
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Di 06.11.07 19:08
Bei mir klappt die vier 
_________________ Die Lösung ist nicht siebzehn.
|
|
luckyluke84 
      
Beiträge: 54
WinXP
Lazarus
|
Verfasst: Di 06.11.07 19:11
Yogu hat folgendes geschrieben: | Er erkennt: 0 2 3 6 7 8
Mit viel Anstrengung: 1 5
Geht einfach nicht: 4 9 |
Hi Yogu, kannst du mir mal einen ScreenShot zeigen/schicken, in dem du die Zahlen geschrieben hast,
die nicht oder nur schwer erkannt werden?
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 06.11.07 19:26
Bei der Eins darf man keinen Schlenker einbauen, das habe ich wohl gemacht. Bei der Vier muss man den richtigen Winkel treffen. Die 5 und 9 hab ich als Anhang eingefügt. Diese zwei Zahlen krieg ich einfach nicht hin.
Einloggen, um Attachments anzusehen!
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 06.11.07 19:27
Hi,
Generell eine tolle Idee, und oft funktioniert das auch. Manchmal aber auch nicht, wie im Anhang recht klar zu sehen 
Einloggen, um Attachments anzusehen!
_________________ We are, we were and will not be.
|
|
luckyluke84 
      
Beiträge: 54
WinXP
Lazarus
|
Verfasst: Di 06.11.07 19:31
Yogu hat folgendes geschrieben: | | Bei der Eins darf man keinen Schlenker einbauen, das habe ich wohl gemacht. Bei der Vier muss man den richtigen Winkel treffen. Die 5 und 9 hab ich als Anhang eingefügt. Diese zwei Zahlen krieg ich einfach nicht hin. |
Deine Neun wird mein Programm nicht erkennen... du schreibst sie eben nicht wie in der Schule..
Ist aber kein Problem, ich kann die Schreibweise hinzufügen.
Bei der 5 bin ich mir nicht ganz sicher... du scheinst zwischendurch abzusetzen.
Die 5 wird eigentlich immer erkannt wenn man entweder rechts oben mit einem waagerechten Strich
anfängt, odeer wenn man mit einen vertikalen Strich anfängt und den waagerechten nach einmal
absetzen zieht.
Probiers mal.
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Di 06.11.07 19:44
Also ich hab das Programm mal mit einem selbstgeschriebenen Spezial-Tool getestet, und praktisch alle Zahlen werden gut erkannt wenn sie aus geraden linien bestehen (hatte ich aber auch erwartet  )
Einloggen, um Attachments anzusehen!
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
luckyluke84 
      
Beiträge: 54
WinXP
Lazarus
|
Verfasst: Di 06.11.07 19:57
Tilman hat folgendes geschrieben: | Also ich hab das Programm mal mit einem selbstgeschriebenen Spezial-Tool getestet, und praktisch alle Zahlen werden gut erkannt wenn sie aus geraden linien bestehen (hatte ich aber auch erwartet ) |
Cool... aber ich bin genauso gut wie dein Spezial Tool. Das liegt wahrscheinlich daran, dass
ich solange rumprobiert habe bis das Programm meine Schrift erkennt.
Einloggen, um Attachments anzusehen!
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Di 06.11.07 20:11
Eigentlich ist die Erkennung gar nicht so schlecht. Ich versuch mich grad selber daran, so ein OCR Programm zu schreiben.
Und "Screenwriting" ist laut Wikipedia was anderes. 
|
|
luckyluke84 
      
Beiträge: 54
WinXP
Lazarus
|
Verfasst: Di 06.11.07 20:19
Chryzler hat folgendes geschrieben: | Eigentlich ist die Erkennung gar nicht so schlecht. Ich versuch mich grad selber daran, so ein OCR Programm zu schreiben.
Und "Screenwriting" ist laut Wikipedia was anderes.  |
Du hast ja so recht  Ich habs von "auf dem Bildschirm schreiben" abgeleitet.
Das Programm "merkt" sich die Bewegungen der Maus und guckt zu welcher Zahl es
passt.
Vorerst werd ich das Programm/ die Unit nicht umbenennen. Bin aber offen für
eine bessere Bezeichnung.
|
|
chrisdrury
      
Beiträge: 184
WinXP
D5 Prof
|
Verfasst: Mi 07.11.07 16:03
Mich würde der Quellcode interessieren, wird es vielleicht eine Open-Source-Version geben?
|
|
gehstock
      
Beiträge: 19
Erhaltene Danke: 2
|
Verfasst: Mi 07.11.07 16:14
wer sagt das man nicht absetzen darf
Einloggen, um Attachments anzusehen!
|
|
luckyluke84 
      
Beiträge: 54
WinXP
Lazarus
|
Verfasst: Mi 07.11.07 17:31
chrisdrury hat folgendes geschrieben: | | Mich würde der Quellcode interessieren, wird es vielleicht eine Open-Source-Version geben? |
1.) Den Quellcode gibts für alle denen es interessiert. Noch ein wenig Gedult, er wird
gerade überarbeitet.
2.) Man sollte eigentlich nicht absetzen dürfen... Wenn's doch geht muss ich irgendwo ein Fehler gemacht
haben. Die 8 wird vielleicht erkannt... bei manchen anderen klappt das evtl. nicht.
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mi 07.11.07 18:11
Ich hab Probleme bei 2, 4, 7 und 9.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Sinspin
      
Beiträge: 1336
Erhaltene Danke: 119
Win 10
RIO, CE, Lazarus
|
Verfasst: Mi 07.11.07 18:56
Also, schreibe ich ne Zahl schön leserlich wird mir gesagt das ich doch bitte nicht rumkritzeln soll!
Für ne 5 wird mir 4 gesagt (wenn ich glück habe), für nahezu jede andere Zahl wird mir gesagt das diese nicht erkannt wird.
Die Dialoge kommen wann sie wollen und, falls sie das Bild überdecken löschen sie den vorhanden Inhalt so das ich nicht weiter malen kann da ich nicht mehr sehe wo ich abgesetzt habe.
Im übrigen analysiert eine Schrifterkennung nicht die Bewegung des Stifts sondern eigentlich erst das vollständige gekrakel. Und, selbst wenn, hat es nix dagegen wenn man zwischendurch mal absetzt.
Ich habe schon ettliche OCR Projekte gesehen die einfach wieder eingestellt wurden weil es wohl doch mehr Aufwand gemacht hat als sich die Entwickler anfangs gedacht haben.
Ich kann nur alle bewundern die weiter machen und zu einem Ergebnis kommen!
Ich habe sowas mal für Verkehrsschilder ausprobieren können. Allerdings hatte ich dafür ein Leistungsstarkes Programm für neuronale Netze zur Verfügung. Den SOM Simulator von David Sommer Diplomarbeit David Sommer.
Wie das ganze laufen muss ist mir im großen und ganzen bekannt.
Hat man als Wissensbasis gut trainierte neuronale Netze, dürfte man recht gute Ergenisse erzielen. Wobei die eigentliche Erkennung von so vielen Faktoren abhängt, das man selbst mit einer guten Wissensbasis über die möglichen Formen der zu erwartenden Zeichen noch einiges zu tun hat um erstmal brauchbare Bildschnipsel zu erhalten die man den Netzen vorsetzen kann.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
chrisdrury
      
Beiträge: 184
WinXP
D5 Prof
|
Verfasst: Do 08.11.07 09:31
luckyluke84 hat folgendes geschrieben: |
1.) Den Quellcode gibts für alle denen es interessiert. Noch ein wenig Gedult, er wird
gerade überarbeitet.
2.) Man sollte eigentlich nicht absetzen dürfen... Wenn's doch geht muss ich irgendwo ein Fehler gemacht
haben. Die 8 wird vielleicht erkannt... bei manchen anderen klappt das evtl. nicht. |
Na da warte ich doch gern... 
|
|
luckyluke84 
      
Beiträge: 54
WinXP
Lazarus
|
Verfasst: Fr 09.11.07 01:03
Titel: kleines Tutorial
1.) Globale Variablen festlegen und Unit einbinden
Kopiert die Datei "screenwriting.pas" in eurer Verzeichnis und bindet sie folgendermaßen ein.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| uses screenwriting;
var Form1: TForm1; MyWriting : TScreenWriting; MausGedrueckt : Boolean; |
2.) Jetzt benutzen wir ein paar Ereignisse des Formulars "Form1"
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure TForm1.FormCreate(Sender: TObject); begin MyWriting := TScreenWriting.Create; Panel1.Canvas.Pen.Width := 4; end;
procedure TForm1.FormDestroy(Sender: TObject); begin MyWriting.Free; end;
procedure TForm1.MouseDown(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Mausgedrueckt := True; Panel1.Canvas.PenPos := Point(x,y); end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin If Mausgedrueckt then begin MyWriting.AddPoint(Point(x,y)); Panel1.Canvas.LineTo(x,y); end; end;
procedure TForm1.Panel1MouseUp(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Mausgedrueckt := False;
if NOT MyWriting.IdentifyNumber then begin showmessage('Bitte schreiben Sie deutlicher!' + chr(13) + chr(13) + MyWriting.ErrorMessage); end; end; |
3.) Zu guter letzt fehlt noch eine Schaltfläche, die euer Ergebnis ausgibt
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Deine Zahl lautet: ' + MyWriting.Text); MyWriting.New; Form1.Canvas.Clear; end; |
4.) Viel Spaß beim rumprobieren.... eine bessere Erkennung ist in Arbeit. Solltet ihr
bei meinen Quellcode/Prinzip wirklich durchgucken, lass ich mir gerne helfen.
Denkt dran, das ist mein erstes "Programm"... es kann nur besser werden!
Moderiert von matze: Delphi-Tags hinzugefügt
|
|
chrisdrury
      
Beiträge: 184
WinXP
D5 Prof
|
Verfasst: Fr 09.11.07 10:07
Alles klar, danke schön!! 
|
|