PaddleOCR+OpenCV realisiert die Erkennung von Chinesisch und Englisch

I. Übersicht

2. Kompilieren und ändern

2.1 Vorbereitungen

  • Laden Sie den Quellcode von PaddleOCRv2.0 herunter .
  • Laden Sie die offiziell zusammengestellte Drei-Parteien-Bibliothek PaddleOCR-Vorhersagebibliothek 2.0.2 herunter . Wenn der Computer über CUDA verfügt, das NVIDIA unterstützt, können Sie die CPU- und GPU-Versionen gleichzeitig herunterladen. Achten Sie beim Herunterladen der GPU-Version auf die Version von CUDA und cudnn. Achten Sie gleichzeitig nach der Dekomprimierung auf die Version.txt in der Bibliotheksdatei , die beim Kompilieren der Bibliothek alle Umgebungs- und abhängigen Bibliotheken enthält. Die CPU-Version erfordert keine besondere Aufmerksamkeit, aber die GPU-Version muss auf die TensorRT-Version achten.
  • Wenn Sie die GPU-Version verwenden müssen, stellen Sie sicher, dass die Grafikkarte GPU unterstützt, und installieren Sie den entsprechenden Treiber, CUDA, cudnn und die TensorRT-Bibliothek.
  • Suchen Sie das Verzeichnis im PaddleOCR-Quellcode “path\PaddleOCR-release-2.0\deploy\cpp_infer”. Das Include-Verzeichnis enthält alle Header-Dateien, src ist der zu verwendende Quellcode (main, cpp ist die Hauptfunktion) und im Tools-Verzeichnis befindet sich eine config.txt- Vorlage. "pathPaddleOCR-release-2.0\ppocr\utils"In der Datei befindet sich eine Schriftartendatei ppocr_keys_v1.txt .

2.2 Probleme bei der Kompilierung

  • 1. Ich werde nicht viel über die Verwendung von cmake oder das direkte Erstellen des Projekts sagen. Es ist so einfach, wer würde es nicht wissen.
  • 2. Wenn es sich um ein manuell erstelltes Projekt handelt, müssen Sie die entsprechenden Header-Dateien und Bibliotheksdateien, dh die heruntergeladene PaddleOCR-Vorhersagebibliothek und das kompilierte OpenCV, manuell hinzufügen.
  • 3. Während des Kompilierungsprozesses scheint es, dass die Datei dirent.h nicht gefunden werden kann. Dies spielt keine Rolle. Sie können auf diesen Blog verweisen, einen neuen erstellen und ihn dann dem Projekt hinzufügen. Am Ende des Artikels wird das kompilierte Projekt auch jedem zum Testen und Verwenden zur Verfügung gestellt.
  • 4. Die Glog-Bibliothek wird möglicherweise nicht benötigt, da ich beim Kompilieren einen Fehler gemeldet habe und ihn daher direkt auskommentiert habe.
  • 5. In config.cpp in VS017 liegt ein Syntaxfehler bei der Zeichenfolgenzuordnungsspeicherung vor, der wie folgt geändert werden kann:
  char* strs = new char[str.length() + 1];
  //char strs[str.length() + 1];
  std::strcpy(strs, str.c_str());

  char* d = new char[delim.length() + 1];
  //char d[delim.length() + 1];
  std::strcpy(d, delim.c_str());
  • 6. Der undefinierte lstat-Bezeichner in Utility.cpp in VS017 kann wie folgt geändert werden:
  struct stat s;
  stat(dir_name, &s);
  • 7. Die Ausgabefunktion für das Zeichenerkennungsergebnis des Codes wird einfach geändert und das Ergebnis wird in txt gespeichert.

3. Funktionsweise und Ergebnisse

Für CPU-Version

  • Zuerst müssen Sie die entsprechende Modelldatei herunterladen , entweder Lightweight oder Normal. Legen Sie es nach der Dekomprimierung in ein Verzeichnis ab, das Sie nach Belieben angeben können. Beachten Sie, dass jedes Modell drei Dateien dekomprimieren kann.
  • Die vorherige Schriftartendatei ppocr_keys_v1.txt und die Konfigurationsdatei config.txt können zur einfachen Suche ebenfalls in diesem Verzeichnis abgelegt werden. Achten Sie darauf, den Pfad und die Einstellungen der Modelldatei in config.txt zu ändern use_gpu 0.
  • Legen Sie die Befehlsparameter in der Debug-Option in den Projekteigenschaften fest, z. B.:./cfg/config.txt ./imgs
  • Legen Sie den Pfad der DLL in der Umgebungsoption in den Projekteigenschaften fest, z. B.: path=../3rd_party/paddle_inference_install_cpu/bin;../3rd_party/opencv/bin;Vergessen Sie nicht das Semikolon, sonst wird die DLL-Datei nicht gefunden.
  • Wenn Sie beim Erkennen von Zeichen exe verwenden, um verstümmelte Zeichen auszuführen, können Sie diese vor der Ausführung von exe in das Terminal eingeben CHCP 65001und die Kodierungsmethode des Terminals von GBK-Kodierung (Standard) auf UTF-8-Kodierung ändern.
  • Wenn die verstümmelten Zeichen über die VS2017-Konsole ausgegeben werden, habe ich viele Methoden ausprobiert, aber bisher habe ich keine gute Lösung gefunden. Ich speichere die Ergebnisse einfach zum Vergleich im TXT-Format. Jeder, der weiß, wie man es ändert, kann zur Orientierung eine Nachricht im Kommentarbereich hinterlassen.
  • Bild des Erkennungsergebnisses:
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
  • Der Erkennungseffekt des in txt gespeicherten Textes ist immer noch sehr gut, aber die Reihenfolge der Ausgabe ist möglicherweise nicht konsistent, nicht in der Reihenfolge von oben nach unten. Dies muss entsprechend der Position des rechteckigen Rahmens geändert werden.
    Fügen Sie hier eine Bildbeschreibung ein
    Für den Programmcode-Test der GPU:
  • Tatsächlich ist es im Allgemeinen dasselbe wie die CPU, es sind jedoch die folgenden Punkte erforderlich:
  • 1. Das Hauptproblem wird hier erklärt: https://github.com/PaddlePaddle/PaddleOCR/issues/2355
  • 2. Fügen Sie CUDA-, cudnn- und tensorRT- Bibliotheken hinzu.
  • 3. Legen Sie es in config.txt fest use_gpu 1( use_tensorrt 0es scheint, dass es ein Problem mit dem schnellen Öffnen gibt, und der Beamte scheint es nicht zu unterstützen, aber diese Bibliothek ist notwendig)
  • 4. Stellen Sie es entsprechend der Speichergröße Ihrer eigenen GPU ein gpu_mem 1000(meine GPU ist 2G, was relativ klein ist, also stellen Sie sie auf 1000 ein).
  • 5. Wenn das Laufergebnis mit dem oben Gesagten übereinstimmt, wird es nicht angezeigt.

4. Vollständiger technischer Code und dreiteilige Bibliothek

Acho que você gosta

Origin blog.csdn.net/qq_38589460/article/details/119742105
Recomendado
Clasificación