Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Text aus Image extrahieren (https://www.delphipraxis.net/97269-text-aus-image-extrahieren.html)

jokerfacehro 7. Aug 2007 22:23


Text aus Image extrahieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo

ich suche einen algorithmus der text aus einem bild extrahiert.
ich habe bereits folgendes programm gefunden: http://abbyy-finereader.softonic.de/

allerdings kann ich so einen algorithmus schlecht aus dem programm auslesen,
außerdem ist der sicher zu kompliziert.

es soll ein algorithmus sein der aus dem bild im anhang text extrahieren kann.


falls ihr nen link dazu habt oder zufällig nen algorithmus dafür aufm pc, bitte posten ;)

hoika 7. Aug 2007 22:34

Re: Text aus Image extrahieren
 
Hallo,

wozu brauchst du den Alg. ?
So ein Bild wird meistens verwendet, um Hackern das Leben zu erschweren ...


Heiko

jokerfacehro 7. Aug 2007 23:13

Re: Text aus Image extrahieren
 
einfach als herausforderung für mich, ich interessiere mich für sowas

will mir so nen algorithmus ma anschauen :)

Bastler 7. Aug 2007 23:19

Re: Text aus Image extrahieren
 
Würdest du den Alg. zum erstellen suchen, wäres es noch OK, aber so sehe ich da keinen Sinn drin, außer dieses Tool für Aktivitäten der von hoika genannten Personengruppe zu nutzen - und wenn dem so ist, wird es die DP sicher nicht unterstützen, möchte ich mal ganz stark annhemen.

Wenn du Algorithmen lesen wilslt, nur weil sie dich interessieren, dann gibts da bestimmt auch aufwendigere und spannenderere...

jokerfacehro 7. Aug 2007 23:23

Re: Text aus Image extrahieren
 
wenn euch das thema nicht interessiert und ihr nur verdacht auf böse dinge, wegen bots habt,
denn postet bitte nicht weiter, weil euere bisherigen posts kaum von bedeutung waren.

text aus bildern zu extrahieren is doch mega interessant, damit beschäftigen sich einige institute


Zitat:

Würdest du den Alg. zum erstellen suchen, wäres es noch OK,
das kann jeder, hab ich bereits mit PHP realisiert

negaH 7. Aug 2007 23:28

Re: Text aus Image extrahieren
 
Suche nach OCR, neuronale Netze und Schrifterkennung. Selbst hier in der DP wirst du fündig werden. Ich selbst habe schon mit neuronalen Netzen und OCR Erkennung gearbeitet. Hier in der DP wirst du auch fündig und findest Sourcecode für ein solches neuronales Netz -> Cascade Correlation Network.

Stell es dir aber nicht so einfach vor. Diese lustigen Bildchen sind so konstruiert das man eben nicht per Automatik so leicht in Text umwandeln kann. Aber es geht das kann ich garantieren. Das größte Problem ist es genügend Trainingsdaten für das NN zu bekommen, aber dann flutscht es ;)

Gruß Hagen

inherited 7. Aug 2007 23:29

Re: Text aus Image extrahieren
 
Zitat:

Zitat von jokerfacehro
damit beschäftigen sich einige institute

Und genau deshalb wirst du auch nicht einfach so einen tollen vorkekauten Algorithmus finden der das kann. Das Thema ist sehr Komplex.

fLaSh11 7. Aug 2007 23:31

Re: Text aus Image extrahieren
 
Das Problem ist, dass niemand Instituten sowas vorwirfst; du wirst leicht als (DoS-?)Hacker abgestempelt.

jokerfacehro 7. Aug 2007 23:32

Re: Text aus Image extrahieren
 
negaH danke für die Antwort, ich hatte bisher nach tetx aus bild extrahieren und sowas gesucht.
ich werd gleich ma schauen.

Zitat:

Und genau deshalb wirst du auch nicht einfach so einen tollen vorkekauten Algorithmus finden der das kann. Das Thema ist sehr Komplex.
ich habe oben geschrieben, dass ich keinen mega super algorithmus suche, schau dir das programm unter dem link an, dass hat echt was drauf und das ist bereits zu viel und einfache algorithmen gibt es bereits

jokerfacehro 7. Aug 2007 23:33

Re: Text aus Image extrahieren
 
Zitat:

Zitat von fLaSh11
Das Problem ist, dass niemand Instituten sowas vorwirfst; du wirst leicht als (DoS-?)Hacker abgestempelt.

das stimmt, wobei die hacker eigentlich die guten sind, die bösen sind die cracker ;)

jokerfacehro 7. Aug 2007 23:54

Re: Text aus Image extrahieren
 
hab schon einiges gefunden, komm so schlecht selber auf suchbegriffe wie "neuronales Netz" :D

ich hab jetz GOCR das sieht ziemlich gut aus und ist freeware.


OffTopic :

ich nutze die DP seit 2004 und muss sagen, mit das beste Delphiforum ;)
auch wenn ich manchma mit den Adminz in einen dicken disput gerate xD

jokerfacehro 8. Aug 2007 15:36

Re: Text aus Image extrahieren
 
so ich habe mich für gocr entschieden.

ich bin dabei es zu instaliieren, doch ist die install anlleitung ziemlich kurz gefasst.

Zitat:

Wie kompilieren?

gzip -cd gocr-0.38.tgz | tar xfv - # auspacken
# evl. Makefile veraendern
cd gocr-0.38 # Ordner wechseln
configure # Makefile anpassen
make # gcc/g++ sollte installiert sein
ich habe alles in nen ordner entpackt und mir auch die makefile datei angeschaut.
ich habe mir gcc-g++-4.2.0-20070501.tar.gz runtergeladen und entpackt
ich habe dann make aufgerufen und er meint Datei nicht gefunden :/

hat jemand ne idee was zu tun ist ?

Klaus01 8. Aug 2007 15:41

Re: Text aus Image extrahieren
 
Kannst Du mal bitte sagen welche Datei nicht gefunden wurde?

Hast Du gcc installiert?
Pfade zu gcc gesetzt?

Grüße
Klaus

inherited 8. Aug 2007 18:25

Re: Text aus Image extrahieren
 
Die Anleitung scheint für Linux gedacht zu sein, für windows gibt es die make.bat
Du musst gcc haben und die Path-Umgebungsvariable muss den pfad zu gcc enthalten.

Mackhack 8. Aug 2007 18:50

Re: Text aus Image extrahieren
 
Bei www.planet-quellcodes.de gabs mal n Wettbewerb um genau das zu machen.

Pr0g hat den gewonnen soweit ich weis. Kannst dich ja mal an ihn wenden!

jokerfacehro 8. Aug 2007 19:53

Re: Text aus Image extrahieren
 
danke für eure antworten, ich werde das ma reinziehen ;)

ich probiere gerade Dcr aus.
das ist freeware in delphi geschrieben und komplett source code dabei.
richtig geil.

der einzige nachteil:

ich muss das programm erst trainieren.
ich hab dem programm gerade 2vorgaben für buchstaben A gegeben und er hat ihn erkannt.

ich werde erstmal ein training für dcr machen und schauen wie hoch die fehlerrate ist.

ich muss sagen geiles programm, besonders da man einfach die units in das eigene programm einfügen kann.

das trainieren ist auch recht einfach nur zeitaufwendig.

ich stelle meine trainingsdatei hier rein, wenn die gute ergebnisse bringt.

jokerfacehro 8. Aug 2007 23:42

Re: Text aus Image extrahieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
hey, ich hab mir gerade nen algorithmus geschrieben um die nervigen punkte heraus zu filtern aus dem image code, damit die freeware den einfacher lesen kann.

der algorithmus is nicht der beste, aber ein guter ansatz ^^

der algorithmus entfernt alleinstehende, schwarze pixel, sodass fast nur der text übrig bleibt.
das genial ist, invertiert man das bild, sodass der hintergrund schwarz und der text weiß ist, füllt er die buchstaben auf, sodass diese besser lesbar werden :D

der algorithmus selber ist verblüffend einfach:

- erst mach ich das bild in schwarz +weiß
- dann durchsuche ich das bild nach schwarzen pixeln, ist einer schwarz suche ich alle umliegenden pixel ab, wenn weniger als 2 pixel um den umliegenden schwarzen pixel schwarz sind, ist es zu mehr als 90% ein
alleinstehender pixel

dann werden die pixel weiß gemacht fertig ^^

hier der algorithmus :
Delphi-Quellcode:
const schwellwert = $00AAAAAA; //der schwellwert um zwischen s/w zu unterscheiden $00BBGGRR

procedure pixelremover;
var i,j,k:integer; //zähler variablen
    count1:integer; //zähler für die im umkreis liegenden schwarzen pixel
    blpix,blindpix:TPoint; //blpix ist der im umkreis liegende schwarze pixel
                           //blindpixel um den pixel als undefiniert zu setzen
    arround_pix:array[0..7] of TPoint;//die acht pixel die einen umgeben
begin
blindpix.X:=-1;
blindpix.Y:=-1;

for i:=0 to Image1.Picture.Width-1 do //bild in 1bit format bringen
 for j:=0 to Image1.Picture.Height-1 do
  if Image1.Canvas.Pixels[i,j]>Integer(schwellwert) then
   Image1.Canvas.Pixels[i,j]:=clWhite
  else
    Image1.Canvas.Pixels[i,j]:=clBlack;


for j:=0 to Image1.Picture.Height-1 do //bild nach schwarzen pixel absuchen
 for i:=0 to Image1.Picture.Width-1 do

  if Image1.Canvas.Pixels[i,j]=clBlack then begin //einer gefunden -> umliegende pixel definieren
   count1:=0;
   arround_pix[0].X:=i-1;//links oben
   arround_pix[0].X:=j-1;

   arround_pix[1].X:=i; //mitte oben
   arround_pix[1].Y:=j-1;

   arround_pix[2].X:=i+1;//rechts oben
   arround_pix[2].Y:=j-1;

   arround_pix[3].X:=i-1;//links mitte
   arround_pix[3].Y:=j;

   arround_pix[4].X:=i+1;//rechts mitte
   arround_pix[4].Y:=j;

   arround_pix[5].X:=i-1;//links unten
   arround_pix[5].Y:=j+1;

   arround_pix[6].X:=i;//mitte unten
   arround_pix[6].Y:=j+1;

   arround_pix[7].X:=i+1;//rechts unten
   arround_pix[7].Y:=j+1;


   if (i<1) then                       //check ob pixel definiert sind, ansonsten ausblenden
    for k:=0 to 3 do
     arround_pix[k]:=blindpix;

   if (j<1) then begin
     arround_pix[0]:=blindpix;
     arround_pix[3]:=blindpix;
     arround_pix[5]:=blindpix;
   end;

   if (i>Image1.Picture.Width) then
    for k:=5 to 7 do
     arround_pix[k]:=blindpix;

   if (j>Image1.Picture.Height) then begin
     arround_pix[2]:=blindpix;
     arround_pix[4]:=blindpix;
     arround_pix[7]:=blindpix;
   end;

  for k:=0 to 7 do                           //umliegende pixel auf farbe testen
                                              //bei schwarz count1+1
   if (arround_pix[k].X>-1)AND(arround_pix[k].Y>-1) then
    if Image1.Canvas.Pixels[arround_pix[k].X,arround_pix[k].Y]<Integer(schwellwert) then begin
     inc(count1);
     blpix:=arround_pix[k];
    end;

  if count1<2 then begin                    
   Image1.Canvas.Pixels[i,j]:=clWhite;         //pixel weiß machen
   Image1.Canvas.Pixels[blpix.X,blpix.Y]:=clWhite; // und den eventuell umliegenden schwarzen pixel auch
  end;

 end;
 Image1.Picture.SaveToFile('bsp.bmp'); //speichern ^^
end;
hier noch ein paar bilder

edit: mit alleinstehenden pixeln meine ich auch pixelgruppen die aus 2 pixeln bestehen

jokerfacehro 9. Aug 2007 01:37

Re: Text aus Image extrahieren
 
Liste der Anhänge anzeigen (Anzahl: 4)
ich hab den algorithmus jetzt weiterentwickelt, ich sitz jetz insgesamt 3 stunden dran und das ergebnis ist unglaublich schaut euch die bilder im anhang an, ihr könnt es nachtesten, indem ihr die originialbilder nehmt, sie durch meinen algorithmus jagt.

dieser algorithmus ist fast genauso einfach:

-natürlich wieder die 1bit umwandlung
-dann werden wieder schwarze pixel gesucht. es dürfen maximal 2 pixel direkt an dem pixel hängen damit es abgecheckt wird, ob es ein alleinstehendes pixelchen ist.bei der früheren version war es 1er.

-jetzt wird der pixel direkt weiß gemacht und die umliegenden schwarzen pixel werden auch nochmal gecheckt wieviel schwarze pixel sich in deren umgebung befinden.

-sind weniger als 4 pixel in der umgebung von den pixeln, werden alle bisherigen pixel weiß gemacht

hier wieder der algorithmus:

edit: änderung am quelltext
es ist total misteriös, die variable blackpix ist total nutzlos im programm, doch kommentiere ich die
zeile blackpix:=blindpix; aus kommt ein schlechteres ergebnis bei raus xD
edit2: hat sich erledit :D
Delphi-Quellcode:

type TArrPix = record        //typ zur rückgabe der schwarzen pixel in der umgebung des einen pixel
                count:integer;
                blackpixels:array[0..7] of TPoint;
             end;

const schwellwert = $00AAAAAA; //schwellwert für s/w erkennung
      //edit: /an diesen beiden konstanten rumspielen um optimale ergebnisse zu erhalten
      anzahl_max_black1 = 2;  //selektierung von pixelgruppen, je höher desto mehr pixel werden durchsucht
      anzahl_max_black2 = 3;      //überprüfung ob zum text zugehörig, je höher desto mehr pixel der
//selektierten pixelgruppen werden weiß gemacht

procedure pixelremover;
var i,j,k,l:integer;           //zählervariablen
    arround_pix:array[0..7] of TPoint;  
    get_pix,get_pix2:TArrPix;  //get_pix variable in der alle schwarzen pixel im umkreis des pixel stehen
                                //get_pix2 darin stehen alle schwarzen pixel im ukreis des pixels,
                                //welches im umkreis des ausgangspixels und schwarz ist
    get_pix_arr:array[0..7] of array[0..7] of TPoint; //darin werden alle umliegenden schwarzen pixel gespeichert
                                                      //der schwarzen pixel die im umkreis des ausgangspixels und schwarz sind
    get_white:boolean;         //boolean um zu checken ob die pixeln weiß gemalt werden sollen
begin

blindpix.X:=-1;
blindpix.Y:=-1;


 for i:=0 to Image1.Picture.Width-1 do          //1 bit konvertierung
 for j:=0 to Image1.Picture.Height-1 do
  if Image1.Canvas.Pixels[i,j]>Integer(schwellwert) then
   Image1.Canvas.Pixels[i,j]:=clWhite
  else
    Image1.Canvas.Pixels[i,j]:=clBlack;

for j:=0 to Image1.Picture.Height-1 do
 for i:=0 to Image1.Picture.Width-1 do


  if Image1.Canvas.Pixels[i,j]=clBlack then begin //check ob pixel schwarz --->
   get_pix:=get_arr_blpixels(i,j,Image1.Picture.Width,Image1.Picture.Height); //alle schwarzen pixel im umkreis des schwarzen pixels erhalten
   get_white:=true;          //standardwert für get_white setzen

   if get_pix.count<=anzahl_max_black1 then begin //check wieviel pixel im umkreis des pixels schwarz sind
   
    for k:=0 to 7 do
     if (get_pix.blackpixels[k].X>-1)AND(get_pix.blackpixels[k].Y>-1) then begin
      get_pix2:=get_arr_blpixels(get_pix.blackpixels[k].X,get_pix.blackpixels[k].Y,Image1.Picture.Width,Image1.Picture.Height);
// // abfragen wieviele und welche schwarze pixel im umkreis der schwarzen pixel des ausgangspixels sind
      for l:=0 to 7 do //alle schwarzen pixel in ein array speichern (insgesamt 64)
       get_pix_arr[k,l]:=get_pix2.blackpixels[l];
      if get_pix2.count>anzahl_max_black2 then begin  //-1 ---3 //check wieviele schwarze bits im umkreis sein müssen damit die pixel als text anerkannt werden
       get_white:=false; //sind es mehr als 3 schwarze pixel im umkreis, dann nix weißmachen
       break;
      end;
    end;
    Image1.Canvas.Pixels[i,j]:=clWhite; //den ausgangspixel weiß machen, ganz wichtig !!!!!
    if get_white then begin //alle restlichen 72 pixel weiß machen
     
     for k:=0 to 7 do begin
      Image1.Canvas.Pixels[get_pix.blackpixels[k].X,get_pix.blackpixels[k].Y]:=clWhite;
      for l:=0 to 7 do
       Image1.Canvas.Pixels[get_pix_arr[k,l].X,get_pix_arr[k,l].Y]:=clWhite;
      end;
   end;
  end;
 end;

 Image1.Picture.SaveToFile('bsp.bmp');
end;

function TForm1.get_arr_blpixels(x,y,width,height:integer):TArrPix; //funktion zum suchen der schwarzen pixel im umkreis
var count,i,j,k:integer;
    arround_pix,black_pix:array[0..7] of TPoint;
    blindpix,blackpix:TPoint;           //zum ausblenden nicht definierter pixel
begin
count:=0;
blindpix.X:=-1;
blindpix.Y:=-1;


 blackpix:=blindpix;


i:=x;
j:=y;

count:=0;
arround_pix[0].X:=i-1;//links oben
arround_pix[0].X:=j-1;

arround_pix[1].X:=i; //mitte oben
arround_pix[1].Y:=j-1;

arround_pix[2].X:=i+1;//rechts oben
arround_pix[2].Y:=j-1;

arround_pix[3].X:=i-1;//links mitte
arround_pix[3].Y:=j;

arround_pix[4].X:=i+1;//rechts mitte
arround_pix[4].Y:=j;

arround_pix[5].X:=i-1;//links unten
arround_pix[5].Y:=j+1;

arround_pix[6].X:=i;//mitte unten
arround_pix[6].Y:=j+1;

arround_pix[7].X:=i+1;//rechts unten
arround_pix[7].Y:=j+1;


   if (i<1) then
    for k:=0 to 3 do
     arround_pix[k]:=blindpix;

   if (j<1) then begin
     arround_pix[0]:=blindpix;
     arround_pix[3]:=blindpix;
     arround_pix[5]:=blindpix;
   end;

   if (i>Image1.Picture.Width) then
    for k:=5 to 7 do
     arround_pix[k]:=blindpix;

   if (j>Image1.Picture.Height) then begin
     arround_pix[2]:=blindpix;
     arround_pix[4]:=blindpix;
     arround_pix[7]:=blindpix;
   end;

  for k:=0 to 7 do
   if (arround_pix[k].X>-1)AND(arround_pix[k].Y>-1) then
    if Image1.Canvas.Pixels[arround_pix[k].X,arround_pix[k].Y]<Integer($00999999) then begin
     inc(count);
     black_pix[k]:=arround_pix[k];
    end;


  Result.count:=count;
  for k:=0 to 7 do
  Result.blackpixels[k]:=black_pix[k];
 end;
und hier wieder bilder

jokerfacehro 9. Aug 2007 01:48

Re: Text aus Image extrahieren
 
Liste der Anhänge anzeigen (Anzahl: 4)
hier kommen weitere bilder :D

edit: wenn ihr diesen algorithmus auch andersum einsetzt, also bild invertieren so dass der hintergrund schwarz und die schrift weiß ist, dann den algorithmus nehmt, verbessert mand amit die schrift, danach das bild wieder invertieren und wieder den anlgorithmus verwenden um die punkte und linien rauszubekommen ^^

edit2: kleine änderung im quelltext

es gibt nur 2 parameter zur steuerung.

1.die anzahl der nötigen umliegenden schwarzen pixel um einen als alleinstehend zu identifizieren.
2. die anzahl der nötigen umliegenden schwarzen pixel um die gesamte pixelgruppe als mitglied zum text zu identifizieren

ich mach die ma als konstanen rein, denn kann man damit besser experimentieren.

die werte die ich verwende bringen mir fast durchgehend optimale ergebnisse ^^

jokerfacehro 9. Aug 2007 03:43

Re: Text aus Image extrahieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
hier ein perfektes ergebnis

jokerfacehro 9. Aug 2007 03:48

Re: Text aus Image extrahieren
 
bitte probiert den algorithmus aus und compiliert es einmal mit der zeile
Delphi-Quellcode:
blackpix:=blindpix;
und einmal ohne.

kommt bei euch ohne die zeile auch ein schlechteres ergebnis raus?

ich habe keine ahnugn warum, die variable wird garnicht bentuzt, trotzdem hat sie so einen großen einfluss auf das programm, als wenn mich delphi verarschen möchte :D

ich habe meinen gesamten quelltext, is ja nicht viel, nach dem variablen namen durchsucht, erkommt wirklich nur in der deklaration und in er einen zeile vor

PS: zuerst verbessere ich die schrift dann nehme ich den ganzen salat raus.
ich mache es ab jetzt immer so, weil es eigentlich immer eine bessere lesbarkeit für ocr software da ist.

jokerfacehro 9. Aug 2007 05:00

Re: Text aus Image extrahieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
lag wohl daran dass er die units nicht neu compiliert hat lol

hier jetzt eine fertige exe

BullsEye 2. Okt 2007 06:07

Re: Text aus Image extrahieren
 
hi,
i weiß gar net, was ihr alle habt. sicherlich kann es einem "bot" dienen. Aber man muss ja net immer gleich das böse in einem erwarten oder!? I persönlich versuche sowas auch, wobei mir dieser thread sicherlich hilfe gibt. aber net weil i nen "bot" wo auch immer für machen will, sondern weils mich einfach interessiert.

Matze 2. Okt 2007 07:15

Re: Text aus Image extrahieren
 
@jokerfacehro: Es freut mich, dass du so eifrig damit herumspielst, doch bitte editiere deine Beiträge doch zukünftig. 9 Beiträge hintereinander innerhalb von rund 9 Stunden sind zu viel. Bevor ein Beitrag zu lange wird, ist das meiner Meinung nach in Ordnung oder wenn der letzte deiner Beiträge älter als 24 Stunden ist. ;)

Florian H 2. Okt 2007 08:03

Re: Text aus Image extrahieren
 
Joah, diese Postingwelle war doch ein bissl zu viel, auch wenn ich deinen Enthusiasmus voll verstehen kann, ging mir genauso, als ich mich damit beschäftigt habe [nein, ich wollte auch nix "hacken"]..

brinkee 4. Okt 2007 11:58

Re: Text aus Image extrahieren
 
Mahlzeit,

also für das eine Captcha, was Du dort gezeigt hast, ist deine Lösung sehr schön. Aber was machst Du, wenn plötzlich ein ganz anderes Störbild die OCR mit nem neuronalen Netz hindert?

Hier zum Beispiel, beim StudiVZ, musst Du verschieden Schriftarten erkennen - ein komplett anderer Ansatz:

http://www.markusbrinkmann.net/images/captcha1.jpg

Und wenn ich mir sowas angucke, dann will ich nicht wissen, wieviele tausend Aufarbeitungsschritte nötig sind, um meinem NN sowas zumuten zu können.

http://www.mondoblog.it/wp-content/u...12/captcha.jpg

Es ist auf jeden Fall möglich, für eine bestimmte Website mit einem bestimmten Captcha-Format eine Lösung für diese Probleme zu entwickeln. Bösewichte ;) wie die Entwickler des HoeBOT, einem StudiVZ-Crawler, können das ganz gut. Aber wenn man so etwas universell einsetzbar machen will: gute Nacht.

Nimm Dir doch lieber ein schöneres Projekt vor. Stell eine kleine Webcam an den Straßenrand und suche in deren Bild nach Nummernschildern. Ist garnicht so schwer... Und dann nimmst Du eine NN um das Nummernschild zu lesen. Objekt- und Schrifterkennung in realen Umgebungen machen tausendfach mehr Spaß, als einfach nur Captchas auszulesen.... Soll keine Standpauke sein, nur ein kleiner Anreiz :D

LG,
Markus

jokerfacehro 12. Okt 2007 18:25

Re: Text aus Image extrahieren
 
hey bin am wieder on in der DP ^^

ich hatte Sommerferien und viel Zeit, zur Zeit sammle ich image codes für das Training, habe fast 100 bilde rzusammen worin jeweils 6 buchstaben stehen, die zerteile ich und drehe die buchstaben und gebe sie dann ein ^^

wenn ich noch en paar hundetr gesammelt habe, fange ich mit dem training an. ma schaun was draus ^^

ich ahbe imemr viele projekte gleichzeitig laufen, weshalb ich immer hin und herspringe.
meistens bringt die ruhe zwischendurch mehr durchsicht in dem thema und man kann neue ideen reinbringen.

dieses thema ist nur ein ansatz von und ich gebe euch, recht es gibt keinen universalen ansatz, NNs sind immer für spezialisierte Sachen. man müsste füür jeden image code verification typen eine eigene erkennungssoftware basteln, wobei weniger die zu verwendenden NNs das problem sind, sondern eher die benötigten trainingsdaten.

ich werde mindestens 500 bilder brauchen am besten 1000 und das training kann denn stunden bis tage laufen xD

das ist ein relativ geringer aufwand, je mehr variable größen wie schriftgröße, farbe und schriftart ins spiel kommen wird es schwieriger weil es noch mehr zu ebachtenden möglichkeiten gibt, am besten man hat jeden code der auftauchen aknn bereits im training, dann kann man davon ausgehen, wenn alle paramter im training richtig konfiguriert sind, dass der code richtig interpretiert wird.

bei mir wären das: 6zeichen pro code und von a-z A-Z 0-9 das heißt 64^5 möglichkeiten.

da man solche datenmengen schlecht bewältigen kann, ist die auswahl der richtigen trainingsdaten und die optimale konfiguration der parameter wichtig. WICHTIG ist: trainiert mein zeichen z.B. ein "U" und man weiß dass das zu erkennende "U" später unleserlich sein kann, sollte man das trainings "U" auch etwas unlerserlich machen, damit das NN nicht direkt nach dem "U" sucht, sondern nach besonderheiten in der struktur des "U"s um es variabler zu machen.

OCR ist was tolles und hat zukunft, wir stecken in den kindershcuhen und es gibt viel zu entdecken, aber zwischendurch ne pause einlegen und sich ins gedächtnis rufen welchen zweck das ganze später hat ;)

negaH 13. Okt 2007 13:18

Re: Text aus Image extrahieren
 
Naja ich sag's mal so: wer von Euch hat Probleme alle obigen Codes zu erkennen ? Fast keiner nehme ich an, ergo wird es auch eine technologische Möglichkeit geben das Computer das genausogut können. Nur mal als Gedankenansatz, das die Behauptung, das sowas niemals per Computer geht weil diese immer erst darauf trainiert werden müssten, widerlegt. Wir sind ja auch in der Lage neue Codes sofort zu erkennen, und in beiden Fällen handelt es sich um Neuronale Netze. Die Frage ist also nur, welches NN benötigen wir und welche Rechenpower ist dafür nötig. Wenn man sich so einige neue Netzwerke so anschaut dann ist deren Leistungsfähigkeit sehr erstaunlich. Zb. wurde erst kürzlich ein NN vorgestellt das gerademal 11 Neuronen enthält und bei der Objekterkennung aus Videokameras erstaunliches leistet.

Gruß Hagen

brinkee 13. Okt 2007 14:03

Re: Text aus Image extrahieren
 
Ja, sicherlich. Es ist immer eine Frage, welche Informationen man aus einem komplexen Datensystem extrapolieren kann. Natürlich ist es mit unserem neuralen Netzwerk im Hirn ein Leichtes, sechs Zeichen aus einem Kasten zu lesen. Wir sind es ja auch nicht gewohnt, immer nur bei diffusem Licht schwarzen Text auf weißem Grund zu lesen. War könnte da noch die Bild-Zeitung entschlüsseln. Allerdings ist es eine Frage des vorausgesetzten Modells, wie leistungsfähig ein Netz wirklich sein kann. Man sollte nicht glauben, dass man mit einem effen Backpropagation-System und einer großen Anzahl von Trainingsdaten alles erreichen kann. In dem Captcha auf meiner Homepage zum Beispiel (markusbrinkmann.net/guestbook.php) wird der Text in dem immer gleich groß bleibenden Bild immer an einer anderen Stelle angezeigt. Auch die Bildgröße könnte ich noch variieren. Und da reicht es nicht, viele Trainingsdaten zu haben. Ich habe mal einen Versuch mit meinem NN gemacht (einfachste Backpropagation, Link: hier) und dabei festgestellt, dass die Position logischerweise eine enorme Rolle spielt. Man sollte nicht erwarte, dass so ein Netzwerk für einen zaubert.
Also mein Tipp: vorher die Buchstaben einzeln freistellen und dann kannst Du es mit Backpropagation versuchen. Ansonsten wirst Du mehrere Zwischenschichten brauchen.

LG, Markus

jokerfacehro 13. Okt 2007 17:01

Re: Text aus Image extrahieren
 
hallo,


danke für eure antworten

Zitat:

Nur mal als Gedankenansatz, das die Behauptung, das sowas niemals per Computer geht weil diese immer erst darauf trainiert werden müssten, widerlegt.
ich wollte deutlich machen, dass die traininigsdaten eine wichtige rolle für das NNs spielen.
die art des NNs ist mindestens genauso wichtig, da gebe ich dir recht ;)

Delphi-Quellcode:
Auch die Bildgröße könnte ich noch variieren. Und da reicht es nicht, viele Trainingsdaten zu haben. Ich habe mal einen Versuch mit meinem NN gemacht (einfachste Backpropagation, Link: hier) und dabei festgestellt, dass die Position logischerweise eine enorme Rolle spielt. Man sollte nicht erwarte, dass so ein Netzwerk für einen zaubert.
man bräcuhte mehrere erkennungsfunktionen, einmal eine zur bestimmung der position des textes,
dann die erkennung der drehung des gesamten textes, dann die einzelnen buchstaben, schriftgröße, schriftart etc.

brinkee 13. Okt 2007 17:10

Re: Text aus Image extrahieren
 
Jap, genau. Da ich weiß, wie mein Captcha funktioniert kann ich die Daten gut extrapolieren. Aber wenn Du es nicht weißt, wird es schwierig. Und ohne NN-lose Vorarbeiten inklusive Vektorisierung etc. kannst Du das voll vergessen.

LG, Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz