Ich habe Tesseract 3.04.00 mit der OpenCL-Option kompiliert. Beim Versuch, mit GetUTF8Text () Text aus einem Bild zu extrahieren, gibt es einen malloc-Fehler, vermutlich ein Speicherleck.
Ich habe einen Patch für einen Speicherleckfehler gefunden, der zuvor hinzugefügt wurde, aber die Version, die ich kompiliert habe, hat bereits den Patch hinzugefügt. Ich bin nicht sicher, warum das Speicherleck aufgetreten ist.
Dies ist die Ausgabe, die ich bekomme:
%Vor%Hat jemand schon einmal mit diesem Problem zu tun gehabt? Wie behebe ich das?
Ich bin mit Tesseract nicht vertraut, aber ich vermute, dass der Patch, den Sie genannt haben, für andere Probleme gedacht war.
In den Ausgabedaten sieht es so aus, als ob Sie einen Apple-Computer verwenden. Bitte werfen Sie einen Blick auf den folgenden Link, der ein paar Tipps zum Installieren und Verwenden von Tesseract unter Mac OS X enthält: Ссылка
Ich hoffe, das ist nützlich, um das Problem zu beheben. Wie auch immer, der Fehler "Region nicht zuordnen" bedeutet, dass kein Speicherplatz mehr vorhanden ist. In der Tat wurde eine große Menge an Speicher benötigt (Größe = 1125865547108352, etwa 1,126 Petabyte). Um herauszufinden, was wirklich passiert, sollten Sie den Code mit einem Profiling-Tool wie gdb profilieren (in der Tat lautet die Fehlermeldung: "setze einen Breakpoint in malloc_error_break, um zu debuggen" ), oder laden Sie zumindest ein kleines Programm hoch, mit dem das Problem reproduziert werden kann.
Sie haben keinen Speicher mehr. (Fehlercode = 3) "Region kann nicht zugeordnet werden" bedeutet, dass malloc versucht hat, mehr Speicher zuzuweisen, als verfügbar war.
Vielleicht können Sie versuchen, die Erkennung auf ein Unterrechteck des Bildes zu beschränken - rufen Sie nach SetImage SetRectangle (links, oben, Breite, Höhe) auf. Jedes SetRectangle löscht die Erkennungsergebnisse, so dass mehrere Rechtecke mit demselben Bild erkannt werden können. ZB
%Vor%Ohne Ihren Code zu sehen, würde ich annehmen, dass Sie weder Objekte zerstören noch Speicher freigeben oder dass es einen Bug mit dieser Version gibt. Um zu überprüfen, ob es das erstere ist, können Sie ein Speicherleck-Erkennungswerkzeug / Bibliothek verwenden, um zu überprüfen, ob es das spätere ist, können Sie es debuggen oder einfach versuchen, eine andere Version zu verwenden.
Tags und Links memory-leaks c++ tesseract opencl