Führen Sie OCR mit C++ durch

Mit der OCR-Technologie (Optical Character Recognition) können Sie den Text in den Bildern oder gescannten Dokumenten lesen und in eine maschinenlesbare Form umwandeln. Die OCR hat verschiedene Anwendungsfälle, darunter das Lesen von Codes von Gutscheinen, das Bearbeiten des Textes, Selbstbedienungsgeschäfte, das Konvertieren gedruckter Dokumente in digitale Formate und so weiter. Auf dem Markt sind verschiedene OCR-Tools und Bibliotheken erhältlich, jedoch ist die Zuverlässigkeit der OCR-Ergebnisse ein Schlüsselfaktor. In diesem Artikel zeige ich Ihnen, wie Sie Ihre eigene OCR Anwendung erstellen und Bilder mithilfe von C++ programmgesteuert in Text konvertieren.

C++ OCR Bibliothek zum Konvertieren von Bildern in Text

Aspose bietet eine leistungsstarke C++ OCR Bibliothek, die Deep Learning verwendet, um Ihnen zuverlässigere und nahezu genaue OCR-Ergebnisse zu liefern. Sie können die Bibliotheksdateien sowie ein Beispielprojekt von GitHub herunterladen.

Bildseite mit C++ in Text umwandeln

Sehen wir uns zunächst das Szenario an, in dem das Bild einen mehrzeiligen Text enthält. Dies kann der Fall sein, wenn Sie ein gescanntes Buch haben, bei dem jede Seite des Buches eine Reihe von Textzeilen enthält. Im Folgenden finden Sie die Schritte zum Konvertieren von Bildern in Text in diesem Fall.

  • Legen Sie den Pfad des Bildes in einer String-Variablen fest.
  • Bereiten Sie einen Puffer zum Speichern der OCR-Ergebnisse vor.
  • Führen Sie OCR mit der Funktion aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize) durch.
  • Drucken Sie die Ergebnisse aus oder speichern Sie sie in einer Datei.

Das folgende Codebeispiel zeigt, wie OCR ausgeführt und Bilder mit C++ in Text konvertiert werden.

std::string image_path = "sample.png";

// Puffer für Ergebnis vorbereiten (in Symbolen, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// OCR durchführen
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);

//Ergebnis drucken
std::wcout << buffer << L"\n"; 

Führen Sie OCR für ein Bild mit einer einzelnen Zeile mit C++ durch

Im vorherigen Beispiel haben wir ein Bild mit mehreren Textzeilen konvertiert. Es könnte jedoch der Fall eintreten, dass das Bild nur eine einzige Textzeile enthält, wie z. B. die Bildunterschrift oder einen Slogan. Im Folgenden finden Sie die Schritte zur Durchführung von OCR in solchen Fällen.

  • Verwenden Sie eine Zeichenfolgenvariable, um den Pfad des Bilds festzulegen.
  • Erstellen Sie einen Puffer zum Speichern der OCR-Ergebnisse.
  • Führen Sie OCR mit der Funktion aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize) durch.
  • Speichern oder drucken Sie die OCR-Ergebnisse.

Das folgende Codebeispiel zeigt, wie OCR für ein Bild mit einer einzelnen Textzeile mit C++ durchgeführt wird.

std::string image_path = "sample_line.jpg";

// Puffer für Ergebnis vorbereiten (in Symbolen, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// OCR durchführen
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);

//Ergebnis drucken
std::wcout << buffer << L"\n";

Konvertieren Sie einen bestimmten Bildbereich in C++ in Text

Sie können die API auch anpassen, um den Bereich des Bildes zu begrenzen, in dem Sie die OCR durchführen möchten. In diesem Fall können Sie ein Rechteck auf dem Bild erstellen, um auf den gewünschten Bereich zuzugreifen. Im Folgenden sind die Schritte zum Extrahieren von Text aus einem bestimmten Bereich des Bildes aufgeführt.

  • Legen Sie den Pfad des Bildes in einer String-Variablen fest.
  • Bereiten Sie einen Puffer zum Speichern der OCR-Ergebnisse vor.
  • Führen Sie OCR mit der Funktion aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h) durch.
  • Drucken Sie die OCR-Ergebnisse.

Das folgende Codebeispiel zeigt, wie Sie einen bestimmten Bereich des Bilds mithilfe von C++ in Text konvertieren.

std::string image_path = "sample_line.jpg";

// Puffer für Ergebnis vorbereiten (in Symbolen, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

int x = 138, y = 352, w = 2033, h = 537;

// Führen Sie OCR oder ausgewählten Bereich durch
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//Ergebnis drucken
std::wcout << buffer << L"\n";

Fazit

In diesem Artikel haben Sie gelernt, wie Sie mit der OCR Bibliothek von Aspose Bilder in Text in C++ konvertieren. Wir haben gesehen, wie man OCR auf einem Bild mit einer oder mehreren Textzeilen durchführt und wie man Text aus einem bestimmten Bereich eines Bildes liest. Weitere Informationen zu Aspose.OCR for C++ finden Sie in der Dokumentation.

Siehe auch