Veröffentlicht 15. Mai 200223 j Hi, ich soll als Projekt in meinem Praktikumsbetrieb ein Modul mit Delphi programmieren, das aus einem Image mittels der OCR-Software Fine-Reader eine Stichwortliste erstellt. Wie spreche ich nun mit Delphi (oder C++) die Engine des FineReader an? Deren Hilfe bezieht sich fast ausschließlich auf VB und ist nicht sehr hilfreich. Wäre für Tipps sehr dankbar.
15. Mai 200223 j Kenne den FineReader nicht, aber es wird sich da ja wohl um DLLs handeln, also sind die Namen dieselben wie die, die in VB verwendet werden. Ausserdem sollten die eine Dokumentation der Funktionen in den DLLs liefern können. Der Rest ist einfache Delphiprogrammierung. DLLs benutzt du da am einfachsten indem du sie mit in die Exe Compilierst (statisch einbinden). sowas wie Procedure FineRead(IrgendEinArgument: IrgendEinTyp): IrgendEineRückgabe; External FineReader.DLL (das sollte jetzt stimmen, bin zu faul nachzusehen;) ) Eleganter machst du das dynamisch, das weiss ich aber nciht auswendig, aber die Hilfe hilft auch hier
16. Mai 200223 j Merci für die Tipps. Aber wahrscheinlich werde ich sie nicht brauchen können. Habe mittlerweile ein Testprogramm mit Delphi programmiert, das den FineReader aufruft, mit diesem ein Dokument öffnet und es liest. Aber nun stellt sich das Haupt-Problem: Wie speichere ich dieses eingelesene Dokument als Textdatei ab? :confused: Die Hilfe von FineReader ist nicht besonders hilfreich. Hier der bisherige Code:interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, FineForm_tlb, FineNormal_tlb; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private { Private-Deklarationen } fr: FineReaderApplication; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin fr:= CoFineReaderApplication.Create; fr.Visible:= true; fr.OpenBatch('e:\PROJEKTE\Demo\demoBW.tif'); fr.BatchDocument.ReadAll; end; procedure TForm1.FormShow(Sender: TObject); begin close; end; end. Vielleicht weiß ja jemand, wie ich nun weiter vorgehen kann. Wäre suuuuuper!!
16. Mai 200223 j Ich würde es so probieren ... mplementation {$R *.DFM} procedure TForm1.FormShow(Sender: TObject); { Da ReadAll ja offensichtlich nicht asynchron läuft sollte es auch so funktionieren... was mir gerade einfällt, es könnte so zu einem störenden Anzeigen des Formulars kommen das leere Formular wird kurz angezeigt. Es ist eigentlich aber besser im OnCreate nur die Dinge zu machen, die da wurklich rein müssen, also später schon zu spät sind, da es wenn auch nur in ganz seltenen Fällen zu Problemen kommen kann} begin fr:= CoFineReaderApplication.Create; fr.Visible:= rue; fr.OpenBatch('e:\PROJEKTE\Demo\demoBW.tif'); fr.BatchDocument.ReadAll; fr.Save(FileName) //Müsste doch sowas geben ? close; end; end.
16. Mai 200223 j Danke für den Hilfeversuch, aber leider gibt es die Funktion fr.Save nicht. Ist scheinbar von FineReader in dieser Art nicht vorgesehen. Mein Ausbilder will mir nachher nochmal was dazu erklären. Vielleicht komme ich ja dann weiter. Auf jeden Fall nochmals Danke für den Tipp. Gruß It-Girl :WD
16. Mai 200223 j Wenn es keine Save-Methode gibt, dann hat die Komponente sicher eine Property mit der du den erkannten Text ansprechen kannst, als TStrings würde ich mal vermuten.
17. Mai 200223 j Werde mal sehen, wie und was sich da noch so machen läßt. Heute morgen bekomme ich erstmal noch etwas Unterricht in Sachen Schnittstellen usw. Vielleicht kann mir ja mein Ausbilder auch noch ein wenig weiterhelfen. Danke für Deine Versuche, mir weiterzuhelfen. Hoffe, ich finde bald eine Lösung. Falls Dir oder jemand anderem noch etwas einfallen sollte, kann man ja hier noch antworten.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.