Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OCR für Delphi... (https://www.delphipraxis.net/79040-ocr-fuer-delphi.html)

FriFra 15. Okt 2006 12:20


OCR für Delphi...
 
Gibt es irgendwo eine preiswerte OCR Software, welche man entweder über die Einindung einer dll oder ein Commandline-Tool innerhalb seiner Delphi Applikation nutzen kann?
Ich suche eine einfach zu implementierende Möglichkeit Grafiken in Text zu konviertieren, ohne den Umweg einer GUI. Leider haben alle Lösungen die ich gefunden habe und die auch einigermaßen funktionieren eine GUI, aber keine dokumentierte Schnittstelle für Drittsoftware :? ...

Optimal wäre eine OCR-Software, wo man direkt die redistributable Trialversion mitgeben und am Ende noch über ein Affiliate Programm von den generierten Verkäufen partizipieren kann.

An eine brauchbare Freeware Lösung glaube ich ehrlich gesagt nicht ;) ... wäre natürlich schön, wenn es das auch gäbe ;)

Eichhoernchen 15. Okt 2006 12:45

Re: OCR für Delphi...
 
Also, das Beste ist es sicher nicht, aber jenachdem was du für einen Text hast kann dir vielleicht gocr helfen.

Sonst hab ich letzens was ganz nettes gefunden: dcr

Sonst weiß ich nicht, wie Preiswert es sein soll, mit dem Abbyy Finereader kannst du auch Text mit deinem Programm erkennen, die haben da nen Commandline Tool bei (FineOCR.exe), das kannst du ansteuern... nur die Übergabe ist schwer, weil das einzige was das Cmd Tool gut kann ist den Text über die Zwischenablage zu übergeben und das ist nicht wirklich ne schöne Lösung. Kannst dir ja mal die Trailversion davon runterladen und testen.

Garfield 15. Okt 2006 12:51

Re: OCR für Delphi...
 
Ich habe mich bisher kaum mit diesem Thema beschäftigt, aber es scheint etliche Angebote in verschiedenen Preisklassen zu geben. Zum Beispiel:

rerecognition
Es gibt eine DLL und der Preis ab 140 € ist von der Geschwindigkeit abhängig.

Asprise
Es gibt ein SDK und in 998 US$ für einen Entwickler sind 10 Endbenutzerlizenzen enthalten.

Abbyy
Die FineReader 8.0 Engine gibt es als COM-Komponente. Preise allerdings nur auf Nachfrage.

FriFra 15. Okt 2006 17:17

Re: OCR für Delphi...
 
Hast Du mit gocr schonmal eine Bilddatei verarbeitet? Ich hab es nicht hinbekommen... Das Kommandozeilen Tool lieferte mir immer nur unbrauchbare Fehlermeldungen und eine brauchbare Dokumentation gibt es nicht.

DCR Teste ich gerade ;)

Eichhoernchen 15. Okt 2006 17:37

Re: OCR für Delphi...
 
gocr ist doch einfach, du musst das Bild nur in ein s/w bild umwandeln und dann als pcx speichern und schon solltest du in nem cmd durch
Code:
gocr.exe BILDNAME.pcx
das resultat lesen können.
Es gibt Units mit Klassen um Bitmaps in pcx umzuwandeln

FriFra 15. Okt 2006 18:32

Re: OCR für Delphi...
 
Zitat:

Zitat von Eichhoernchen
gocr ist doch einfach, du musst das Bild nur in ein s/w bild umwandeln und dann als pcx speichern und schon solltest du in nem cmd durch
Code:
gocr.exe BILDNAME.pcx
das resultat lesen können.
Es gibt Units mit Klassen um Bitmaps in pcx umzuwandeln

einfach? Wie bitte mach ich denn aus einem bmp ein s/w pcx? es ist alles andere als trivial aus einem normalen bitmap ein s/w pcx zum machen... mal davon abgesehen, dass die genannte pcx-unit bei mir nur müll produziert...
Testcode:
Delphi-Quellcode:
var
bmp:TBitmap;
pcx:TPCXimage;
begin
bmp:=TBitmap.Create;
pcx:=TPCXimage.Create;

bmp.Assign(Form1.GetFormImage);
bmp.SaveToFile('test.bmp');
pcx.Assign(bmp);
pcx.SaveToFile('test.pcx');
Ich will weder ein Grafikprogramm schreiben, noch eine ocr software neu erfinden... ich will einfach nur ein bild an ein externes programm übergeben und text zurück bekommen...
Ich weiss voher doch nicht, ob der Hintergrund weiss gelb oder blau ist, auch kenne ich die Schriftfarbe nicht, DAS ist aufgabe der OCR Software die schrift in der grafik zu finden

Eichhoernchen 15. Okt 2006 18:46

Re: OCR für Delphi...
 
naja, wenn du so ein Luxus willst, kannst du nicht erwarten, dass es Freeware tut.
Du könntst ja mal sagen, wie die Bilder aufgebaut sind.
Ich denke mal der Hintergrund sollte kein Problem sein, die Farbe feststellen (wenn es einfarbig ist).
Ich denke man kann auch einfach nen paar Algorithmen schreiben, die den Text sozusagen ausschneidet und dann kansnt du es in ein schwarz weiß umwandeln.

Dein Code produziert wahrscheinlich müll, da die Bitmap nicht schwarz weiß ist, also auch das falsche pixelformat vermute ich mal.
Du musst mal auf pf1bit stellen, dann ist es wirklich schwarz weiß, also 2 farbig, so mache ich das bei meinem Programmen, die gocr nutzen, da ich vorher den Text durch ein paar Grafikalgorithmen ausschneiden kann. Ich habe auch immer nur Bilder, bei denen ich recht gut bestimmmen kann, welche Farbe was hat, dann ist es kein Problem Dinge freizustellen.

Aber, wenn dir das alles zu schwer ist, musst du wohl zu härteren kostenpflichtigen Waffen greifen.

FriFra 15. Okt 2006 19:30

Re: OCR für Delphi...
 
Zitat:

Zitat von Eichhoernchen
Du könntst ja mal sagen, wie die Bilder aufgebaut sind.

Das weiss ich nicht... die Bilder können jedes denkbare aussehen haben, nur sie enthalten alle text.
Ich wollte mir einfach mal ein Plugin für Spamihgilator schreiben um Texte aus Grafiken in Spammails auslesen und filtern zu können. Da liegt es in der Natur der Sache dass die Lösung mit einem externen Programm keine 900 Euro kosten darf (hier sehe ich die Schmerzgrenze weit unter 100 Euro), da Spamihilator selbst freeware ist. Ausserdem muss das ganze schnell sein.. Wenn ich hier mit Delphi anfange pixelweise zu analysieren, welche Farbe der hintergrund haben könnte um auf diese weise ein s/w Bild zu erhalten dauert das einfach viel zu lange ;)


Zitat:

Zitat von Eichhoernchen
naja, wenn du so ein Luxus willst, kannst du nicht erwarten, dass es Freeware tut.

Das hab ich auch nicht verlangt ;)



Zitat:

Zitat von Eichhoernchen
Dein Code produziert wahrscheinlich müll, da die Bitmap nicht schwarz weiß ist, also auch das falsche pixelformat vermute ich mal.

Hm... seit wann dürfen denn pcx Dateien nur s/w sein? Ich würde mal sagen die Unit taugt nix ;) ... hier ist ein pcx in Farbe und bunt:
> D O W N L O A D <

Garfield 15. Okt 2006 19:37

Re: OCR für Delphi...
 
Zur Graustufenumwandlung:

1. ein Bild in Graustufen umwandeln

2. Es gibt Grafikformate, welche keine Farbe unterstützen. Somit wäre der Umweg über so ein Format möglich.

Zu bmp 2 pcx

1. Die Library GraphicEx von Mike Lischke unterstützt PCX, auch Graustufen.

2. http://www.efg2.com/Lab/Library/Delp...Conversion.htm

FriFra 15. Okt 2006 20:00

Re: OCR für Delphi...
 
Zitat:

Zitat von Garfield
Zur Graustufenumwandlung:

1. ein Bild in Graustufen umwandeln

2. Es gibt Grafikformate, welche keine Farbe unterstützen. Somit wäre der Umweg über so ein Format möglich.

Zu bmp 2 pcx

1. Die Library GraphicEx von Mike Lischke unterstützt PCX, auch Graustufen.

2. http://www.efg2.com/Lab/Library/Delp...Conversion.htm

1. Graustufen sind kein Problem ;)... aber dieses Freeware ocr braucht wohl s/w und s/w <> graustufen :???:
2. nene.. angenommen, ich weise eine Truecolor bitmap einem solchen Grafikobjekt zu, wie wird dann "konvertiert"? Sofern das ohne Fehlermeldung durchgeht ist doch das Ergebnisss nicht wirklich vorhersehbar :?

die Library schau ich mir mal an, wer weiss, wozu man das mal braucht ;)

Garfield 15. Okt 2006 20:37

Re: OCR für Delphi...
 
SW und Graustufen ist schon ein Unterschied. :?

Wenn tatsächlich SW benötigt wird, ist das Tool wohl nur sehr bedingt einsetzbar.

Was man sonst findet, kostet Geld.

75 - 125 € - http://www.delphi32.com/vcl/5481/ http://www.mcm-design.com/index.php?section=products

Für Kyrillisch gäbe es http://solair.eunet.yu/~ilicv/ocr.html

Einigen Scannern liegen OCR-Programme bei. Eventuell gibt es da eine Schnittstelle? Es sind auch ab und zu Makros zur Einbindung in MS Word vorhanden.

CK_CK 15. Okt 2006 20:48

Re: OCR für Delphi...
 
Hast du Office 2003?

Dann könnte DAS HIER helfen...

Da steht, wie die OCR-Engine von Office 2003 benutzt werden kann...

(Falls du das interessant findest, kann ich auch gerne eine Beispielunit posten...)

Chris

Eichhoernchen 15. Okt 2006 22:54

Re: OCR für Delphi...
 
also ich benutze gocr mit s/w, ich glaube man kann es aber auch mit graustufen nutzen.

Und ich glaube nicht, dass Pixelweise analyse umbedinngt sehr langsam ist, wenn du es richtig machst!

bronstein 30. Okt 2009 10:34

Re: OCR für Delphi...
 
Hallo,
wie bekomme ich den Text der mir "gocr.exe BILDNAME.pcx" liefert zurück.

Wenn ich den Befehl in einer Batchdatei ausführe wird er dort angezeigt. Ich möchte ihn aber nicht angezeigt bekommen sondern in eine Variable in meinem Delphi Programm schreiben schreiben

bronstein 31. Okt 2009 19:42

Re: OCR für Delphi...
 
Hat denn niemand eine Idee?

Eine andere Möglichkiet wäre auch den Rückgabewert von gocr in eine Textdatei zu schreiben, doch das bekomme ich mit der Batch datei auch nicht hin!

omata 31. Okt 2009 20:05

Re: OCR für Delphi...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht so...

wschrabi 22. Feb 2018 06:12

AW: OCR für Delphi...
 
Frage: Habe das hier http://www.devsuperpage.com/Articles.../Art_1-710.aspfür die PCXImage UNIT gefunden und verwendet. Doch es macht FARBIGE pcx und nicht B/W.
Wie kann ich gocr.exe nutzen, wenn ich kein B/W pcx habe - oder wie kann ich die farbige PCX in S/W pcx convertieren.
DANKE

hanvas 22. Feb 2018 06:36

AW: OCR für Delphi...
 
Zitat:

Zitat von wschrabi (Beitrag 1394391)
Wie kann ich gocr.exe nutzen, wenn ich kein B/W pcx habe - oder wie kann ich die farbige PCX in S/W pcx convertieren.
DANKE

Indem Du entweder die Umwandlung von Farbe zu Schwarzweiss selbst erledigst oder eben nicht gocr verwendest.

Tesseract (https://github.com/tesseract-ocr/tesseract/wiki) ist deutlich besser als gocr und kann entweder von der Komandozeile aus verwendet werden, oder als DLL eingebunden werden (mit einer C Schnittstelle die auch von Delphi aus nutzbar ist wenn man sich die Header übersetzt).

Die inoffiziellen Windows Binaries gibt es hier (https://github.com/UB-Mannheim/tesseract/wiki)

Wenn Du es mit der Konvertierung Farbe-Grau-Schwarzweiss probieren willst :

Zuerst nach Gray wandeln

https://community.embarcadero.com/bl...property-39051

Und dann von Grau nach Schwarzweiss. Das ist eine Schwellenwert Aktion. In vielen Fällen reicht die ganz einfache Variante alle Werte oberhalb eines Schwellenwertes (z.B. 128) als Weiss, alle darunter als Schwarz anzusehen.

Je nach Zweck und Dokument und gewünschten Ergebnis kann das aber auch deutlich komplexer sein.

http://www.leptonica.com/binarization.html

Die Tesseract C-DLL Variante enthält eine Bilbiothek namens Leptonica die eine ganze Reihe von Verfahren zur Wandlung von Graustufen nach S/W unterstützt.

Verhältnismäßig einfach zu portieren, mit hervorragenden Ergebnissen aber hoher Rechenaufwand ist auch

https://perso.liris.cnrs.fr/cwolf/software/binarize/

hth

Ha-Joe

wschrabi 22. Feb 2018 06:44

AW: OCR für Delphi...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Tausend DANK! habe mir Tesseract (https://github.com/tesseract-ocr/tesseract/wiki) installiert, doch wie kann ich von der
cmd prompt zeile ein bmp oder pcx in ASCII übersetzen?

Finde keine Examples.
DANKE

Hab es zusammengebracht, doch leider kann ich von den WINDOWSSCREENshoot, das ich als BMP, JPG oder GIF habe, nur schlecht
den Text wiedererkennen.... Hat wer da Rat wie man das verbessern kann.

Es kommt auch eine Warning:
Warning. Invalid resolution 0 dpi. Using 70 instead.

Wer weiss RAT?


Hier ist der OUTOUT von dem JPG mit höchste Qualität.

himitsu 22. Feb 2018 08:10

AW: OCR für Delphi...
 
STDOUT die das, was z.B. normalerweise als "Text" in die Console geschrieben wird.

in einer Batch geht das mit ">"
Delphi-Quellcode:
tesseract myscan.png stdout > deine.txt

oder bei CreateProcess das stdout-Handle setzen, z.B. auf ein Handle eines FileStreams (CreateFile)

Aber wenn ich sehe, was da raus kam, dann ist das nicht wirklich ein gutes Ergebnis. :roll:

mkinzler 22. Feb 2018 08:30

AW: OCR für Delphi...
 
Für Tesseract existiert auch eine Delphi-Wrapper

https://github.com/r1me/TTesseractOCR4

hanvas 22. Feb 2018 09:53

AW: OCR für Delphi...
 
Zitat:

Zitat von wschrabi (Beitrag 1394394)

Hab es zusammengebracht, doch leider kann ich von den WINDOWSSCREENshoot, das ich als BMP, JPG oder GIF habe, nur schlecht den Text wiedererkennen.... Hat wer da Rat wie man das verbessern kann.

Es kommt auch eine Warning:
Warning. Invalid resolution 0 dpi. Using 70 instead.

Es gibt eine FAQ zu Tesseract und was man machen kann um das Ergebnis zu verbessern.

https://github.com/tesseract-ocr/tes...ImproveQuality

In Deinem Fall vermutlich

1. Hast du die richtige Sprache installiert und verwendet, oder lediglich Default - also Englisch

Wenn nein, Deutsch verwenden ausprobieren, verbessert ?

Sprachen / Dictionaries kannst Du seperat herunterladen, auf die richtige Version achten

für Tesseract 3.X

https://github.com/tesseract-ocr/langdata

für Tesseract 4.X

https://github.com/tesseract-ocr/tessdata


2. Funktioniert evtl. Tesseract 4.X besser (mit Deutsch) ?

3. Kannst Du das Bild auf 300 DPI skalieren

4. Doch wieder selbst binariesieren. In Fall eines Screenshots ist normalerweise die einfachste Operation die beste. Wenn du jedes Pixel das heller ist als die Schriftfarbe (Schwarz) als weiß ansiehst, dann hast Du am Ende ein S/W Bild bei dem alles außer der schwarzen Schrift verschwunden ist. Das ist eigentlich ideal um es mit einer OCR zu verwenden.

hth

Ha-Jö


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 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