C++ kullanarak OCR gerçekleştirme

OCR (Optik Karakter Tanıma) teknolojisi, görüntülerdeki veya taranan belgelerdeki metni okumanıza ve makine tarafından okunabilir forma dönüştürmenize olanak tanır. OCR’nin, kuponlardan kod okumayı, metni düzenlenebilir hale getirmeyi, self servis mağazaları, basılı belgeleri dijital biçimlere dönüştürmeyi vb. içeren çeşitli kullanım durumları vardır. Piyasada çeşitli OCR araçları ve kitaplıkları mevcuttur, ancak OCR sonuçlarının güvenilirliği önemli bir faktördür. Bu makalede, C++ kullanarak kendi OCR uygulamanızı nasıl oluşturacağınızı ve görüntüleri programlı bir şekilde metne nasıl dönüştüreceğinizi göstereceğim.

Görüntüyü Metne Dönüştürmek için C++ OCR Kitaplığı

Aspose, size daha güvenilir ve doğruya yakın OCR sonuçları sağlamak için derin öğrenmeyi kullanan güçlü bir C++ OCR kitaplığı sunar. Kitaplık dosyalarını ve örnek bir projeyi GitHub’tan indirebilirsiniz.

C++ kullanarak Görüntü Sayfasını Metne Dönüştür

Önce görüntünün çok satırlı bir metin içerdiği senaryoyu kontrol edelim. Bu, kitabın her sayfasının bir grup metin satırı içerdiği taranmış bir kitabınız olduğunda geçerli olabilir. Bu durumda görüntüyü metne dönüştürmek için gereken adımlar aşağıdadır.

  • Görüntünün yolunu bir dize değişkeninde ayarlayın.
  • OCR sonuçlarını depolamak için bir arabellek hazırlayın.
  • aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize) işlevini kullanarak OCR gerçekleştirin.
  • Sonuçları yazdırın veya bir dosyaya kaydedin.

Aşağıdaki kod örneği, C++ kullanarak OCR’nin nasıl gerçekleştirileceğini ve görüntünün metne nasıl dönüştürüleceğini gösterir.

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

// Sonuç için tampon hazırlayın (sembollerde, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// OCR gerçekleştirin
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);

//Sonucu yazdır
std::wcout << buffer << L"\n"; 

C++ kullanarak Tek Satırlı Görüntü için OCR gerçekleştirin

Önceki örnekte, birden çok metin satırına sahip bir görüntüyü dönüştürdük. Bununla birlikte, görüntünün başlık veya slogan gibi yalnızca tek bir metin satırı içerdiği durumlar olabilir. Aşağıda bu gibi durumlarda OCR gerçekleştirme adımları yer almaktadır.

  • Görüntünün yolunu ayarlamak için bir dize değişkeni kullanın.
  • OCR sonuçlarını depolamak için bir arabellek oluşturun.
  • aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize) işlevini kullanarak OCR gerçekleştirin.
  • OCR sonuçlarını kaydedin veya yazdırın.

Aşağıdaki kod örneği, C++ kullanılarak tek satırlık bir metin içeren bir görüntüde OCR’nin nasıl gerçekleştirileceğini gösterir.

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

// Sonuç için tampon hazırlayın (sembollerde, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// OCR gerçekleştirin
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);

//Sonucu yazdır
std::wcout << buffer << L"\n";

C++‘da Görüntünün Belirli Bir Alanını Metne Dönüştürme

OCR’yi gerçekleştirmek istediğiniz görüntünün alanını sınırlamak için API’yi de özelleştirebilirsiniz. Bu durumda, istediğiniz alana erişmek için görüntü üzerinde bir dikdörtgen oluşturabilirsiniz. Aşağıdakiler, görüntünün belirli bir alanından metin çıkarmak için gereken adımlardır.

  • Görüntünün yolunu bir dize değişkeninde ayarlayın.
  • OCR sonuçlarını depolamak için bir arabellek hazırlayın.
  • aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h) işlevini kullanarak OCR gerçekleştirin.
  • OCR sonuçlarını yazdırın.

Aşağıdaki kod örneği, görüntünün belirli bir alanının C++ kullanarak metne nasıl dönüştürüleceğini gösterir.

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

// Sonuç için tampon hazırlayın (sembollerde, 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;

// OCR veya seçilen alanı gerçekleştirin
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//Sonucu yazdır
std::wcout << buffer << L"\n";

Çözüm

Bu makalede, C++‘da görüntüleri metne dönüştürmek için Aspose’un OCR kitaplığını nasıl kullanacağınızı öğrendiniz. Tek veya çok satırlı metin içeren bir görüntü üzerinde OCR gerçekleştirmenin yanı sıra görüntünün belirli bir alanından metin okumayı gördük. Belgeleri kullanarak Aspose.OCR for C++ hakkında daha fazla bilgi edinebilirsiniz.

Ayrıca bakınız