Effectuer l'OCR en utilisant C++

La technologie OCR (Optical Character Recognition) vous permet de lire et de convertir le texte des images ou des documents numérisés sous une forme lisible par machine. L’OCR a divers cas d’utilisation qui incluent la lecture de codes à partir de bons, la modification du texte, les magasins en libre-service, la conversion de documents imprimés en formats numériques, etc. Divers outils et bibliothèques OCR sont disponibles sur le marché, cependant, la fiabilité des résultats OCR est un facteur clé. Dans cet article, je vais vous montrer comment créer votre propre application OCR et convertir des images en texte par programmation à l’aide de C++.

Bibliothèque C++ OCR pour convertir une image en texte

Aspose propose une puissante bibliothèque C++ OCR qui utilise l’apprentissage en profondeur pour vous fournir des résultats OCR plus fiables et proches de la précision. Vous pouvez télécharger les fichiers de la bibliothèque ainsi qu’un exemple de projet depuis GitHub.

Convertir une page d’image en texte à l’aide de C++

Voyons d’abord le scénario dans lequel l’image contient un texte multiligne. Cela peut être le cas lorsque vous avez un livre numérisé où chaque page du livre contient un tas de lignes de texte. Voici les étapes pour convertir l’image en texte dans ce cas.

  • Définissez le chemin de l’image dans une variable de chaîne.
  • Préparez un tampon pour stocker les résultats de l’OCR.
  • Effectuez l’OCR en utilisant la fonction aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize).
  • Imprimez les résultats ou enregistrez-les dans un fichier.

L’exemple de code suivant montre comment effectuer l’OCR et convertir une image en texte à l’aide de C++.

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

// Préparer le tampon pour le résultat (en symboles, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// Effectuer l'OCR
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);

//Résultat d'impression
std::wcout << buffer << L"\n"; 

Effectuer l’OCR pour une image avec une seule ligne à l’aide de C++

Dans l’exemple précédent, nous avons converti une image comportant plusieurs lignes de texte. Cependant, il peut arriver que l’image ne contienne qu’une seule ligne de texte, comme la légende ou un slogan. Voici les étapes à suivre pour effectuer l’OCR dans de tels cas.

  • Utilisez une variable de chaîne pour définir le chemin de l’image.
  • Créez une mémoire tampon pour stocker les résultats de l’OCR.
  • Effectuez l’OCR en utilisant la fonction aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize).
  • Enregistrez ou imprimez les résultats de l’OCR.

L’exemple de code suivant montre comment effectuer l’OCR sur une image avec une seule ligne de texte à l’aide de C++.

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

// Préparer le tampon pour le résultat (en symboles, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// Effectuer l'OCR
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);

//Résultat d'impression
std::wcout << buffer << L"\n";

Convertir une zone particulière d’image en texte en C++

Vous pouvez également personnaliser l’API pour limiter la zone de l’image où vous souhaitez effectuer l’OCR. Dans ce cas, vous pouvez créer un rectangle sur l’image pour accéder à la zone souhaitée. Voici les étapes pour extraire le texte d’une zone particulière de l’image.

  • Définissez le chemin de l’image dans une variable de chaîne.
  • Préparez un tampon pour stocker les résultats de l’OCR.
  • Effectuez l’OCR en utilisant la fonction aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h).
  • Imprimez les résultats de l’OCR.

L’exemple de code suivant montre comment convertir une zone particulière de l’image en texte à l’aide de C++.

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

// Préparer le tampon pour le résultat (en symboles, 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;

// Effectuer l'OCR ou la zone sélectionnée
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//Résultat d'impression
std::wcout << buffer << L"\n";

Conclusion

Dans cet article, vous avez appris à utiliser la bibliothèque OCR d’Aspose pour convertir des images en texte en C++. Nous avons vu comment effectuer l’OCR sur une image avec une ou plusieurs lignes de texte ainsi que lire le texte d’une zone particulière d’une image. Vous pouvez en savoir plus sur Aspose.OCR for C++ en utilisant la documentation.

Voir également