Utför OCR med C++

Tekniken OCR(Optical Character Recognition) låter dig läsa och konvertera texten i bilderna eller skannade dokument till maskinläsbar form. OCR har olika användningsfall som inkluderar att läsa koder från vouchers, göra texten redigerbar, självbetjäningsbutiker, konvertera tryckta dokument till digitala format, och så vidare. Olika OCR-verktyg och bibliotek finns tillgängliga på marknaden, men tillförlitligheten hos OCR-resultaten är en nyckelfaktor. I den här artikeln kommer jag att visa dig hur du skapar din egen OCR-applikation och konverterar bilder till text programmatiskt med C++.

C++ OCR-bibliotek för att konvertera bild till text

Aspose erbjuder ett kraftfullt C++ OCR-bibliotek som använder djupinlärning för att ge dig mer tillförlitliga och nära noggranna OCR-resultat. Du kan ladda ner biblioteksfilerna såväl som ett exempelprojekt från GitHub.

Konvertera bildsida till text med C++

Låt oss först kolla scenariot där bilden innehåller en flerradstext. Detta kan vara fallet när du har en skannad bok där varje sida i boken innehåller ett gäng textrader. Följande är stegen för att konvertera bild till text i det här fallet.

  • Ställ in bildens sökväg i en strängvariabel.
  • Förbered en buffert för att lagra OCR-resultaten.
  • Utför OCR med funktionen aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize).
  • Skriv ut resultaten eller spara dem i en fil.

Följande kodexempel visar hur man utför OCR och konverterar bild till text med C++.

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

// Förbered buffert för resultat (i symboler, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// Utför OCR
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);

//Skriv ut resultat
std::wcout << buffer << L"\n"; 

Utför OCR för en bild med en rad med C++

I det föregående exemplet har vi konverterat en bild med flera textrader. Det kan dock vara fallet när bilden bara innehåller en enda textrad, till exempel bildtexten eller en slogan. Följande är stegen för att utföra OCR i sådana fall.

  • Använd en strängvariabel för att ställa in bildens sökväg.
  • Skapa en buffert för att lagra OCR-resultaten.
  • Utför OCR med funktionen aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize).
  • Spara eller skriv ut OCR-resultaten.

Följande kodexempel visar hur man utför OCR på en bild med en enda textrad med C++.

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

// Förbered buffert för resultat (i symboler, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// Utför OCR
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);

//Skriv ut resultat
std::wcout << buffer << L"\n";

Konvertera ett visst bildområde till text i C++

Du kan också anpassa API:et för att begränsa det område av bilden där du vill utföra OCR. I det här fallet kan du skapa en rektangel på bilden för att komma åt det önskade området. Följande är stegen för att extrahera text från en viss del av bilden.

  • Ställ in bildens sökväg i en strängvariabel.
  • Förbered en buffert för att lagra OCR-resultaten.
  • Utför OCR med funktionen aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h).
  • Skriv ut OCR-resultaten.

Följande kodexempel visar hur man konverterar ett visst område av bilden till text med C++.

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

// Förbered buffert för resultat (i symboler, 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;

// Utför OCR eller valt område
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//Skriv ut resultat
std::wcout << buffer << L"\n";

Slutsats

I den här artikeln har du lärt dig hur du använder Aspose OCR-bibliotek för att konvertera bilder till text i C++. Vi har sett hur man utför OCR på en bild med enstaka eller flera textrader samt läser text från ett visst område av en bild. Du kan lära dig mer om Aspose.OCR för C++ med hjälp av dokumentationen.

Se även