Esegui l'OCR usando C++

La tecnologia OCR (Optical Character Recognition) consente di leggere e convertire il testo nelle immagini o nei documenti scansionati in un formato leggibile dalla macchina. L’OCR ha vari casi d’uso che includono la lettura di codici dai voucher, la modifica del testo, i negozi self-service, la conversione di documenti stampati in formati digitali e così via. Sul mercato sono disponibili vari strumenti e librerie OCR, tuttavia l’affidabilità dei risultati OCR è un fattore chiave. In questo articolo, ti mostrerò come creare la tua applicazione OCR e convertire le immagini in testo a livello di codice usando C++.

Libreria OCR C++ per convertire immagini in testo

Aspose offre una potente libreria C++ OCR che utilizza il deep learning per fornire risultati OCR più affidabili e vicini all’accuratezza. Puoi scaricare i file della libreria e un progetto di esempio da GitHub.

Converti la pagina immagine in testo usando C++

Esaminiamo innanzitutto lo scenario in cui l’immagine contiene un testo su più righe. Questo potrebbe essere il caso quando hai un libro scansionato in cui ogni pagina del libro contiene un mucchio di righe di testo. Di seguito sono riportati i passaggi per convertire l’immagine in testo in questo caso.

  • Imposta il percorso dell’immagine in una variabile stringa.
  • Preparare un buffer per memorizzare i risultati dell’OCR.
  • Eseguire l’OCR usando la funzione aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize).
  • Stampa i risultati o salvali in un file.

L’esempio di codice seguente mostra come eseguire l’OCR e convertire l’immagine in testo usando C++.

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

// Prepara il buffer per il risultato (in simboli, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

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

//Risultato di stampa
std::wcout << buffer << L"\n"; 

Eseguire l’OCR per un’immagine con riga singola utilizzando C++

Nell’esempio precedente, abbiamo convertito un’immagine con più righe di testo. Tuttavia, potrebbe verificarsi il caso in cui l’immagine contenga solo una singola riga di testo come la didascalia o uno slogan. Di seguito sono riportati i passaggi per eseguire l’OCR in questi casi.

  • Utilizzare una variabile stringa per impostare il percorso dell’immagine.
  • Creare un buffer per memorizzare i risultati dell’OCR.
  • Eseguire l’OCR usando la funzione aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize).
  • Salva o stampa i risultati dell’OCR.

L’esempio di codice seguente mostra come eseguire l’OCR su un’immagine con una singola riga di testo usando C++.

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

// Prepara il buffer per il risultato (in simboli, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

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

//Risultato di stampa
std::wcout << buffer << L"\n";

Converti una particolare area di immagine in testo in C++

Puoi anche personalizzare l’API per limitare l’area dell’immagine in cui desideri eseguire l’OCR. In questo caso, puoi creare un rettangolo sull’immagine per accedere all’area desiderata. Di seguito sono riportati i passaggi per estrarre il testo da una particolare area dell’immagine.

  • Imposta il percorso dell’immagine in una variabile stringa.
  • Preparare un buffer per memorizzare i risultati dell’OCR.
  • Eseguire l’OCR usando la funzione aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h).
  • Stampa i risultati dell’OCR.

L’esempio di codice seguente mostra come convertire un’area particolare dell’immagine in testo usando C++.

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

// Prepara il buffer per il risultato (in simboli, 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;

// Eseguire l'OCR o l'area selezionata
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//Risultato di stampa
std::wcout << buffer << L"\n";

Conclusione

In questo articolo, hai imparato come utilizzare la libreria OCR di Aspose per convertire le immagini in testo in C++. Abbiamo visto come eseguire l’OCR su un’immagine con una o più righe di testo, nonché leggere il testo da una particolare area di un’immagine. Puoi saperne di più su Aspose.OCR per C++ usando la documentazione.

Guarda anche