Proveďte OCR pomocí C++

Technologie OCR(Optical Character Recognition) umožňuje číst a převádět text na obrázcích nebo naskenovaných dokumentech do strojově čitelné podoby. OCR má různé případy použití, které zahrnují čtení kódů z poukázek, úpravu textu, samoobslužné obchody, převod tištěných dokumentů do digitálních formátů a tak dále. Na trhu jsou k dispozici různé nástroje a knihovny OCR, klíčovým faktorem je však spolehlivost výsledků OCR. V tomto článku vám ukážu, jak vytvořit vlastní OCR aplikaci a převést obrázky na text programově pomocí C++.

Knihovna C++ OCR pro převod obrázku na text

Aspose nabízí výkonnou Knihovnu C++ OCR, která využívá hluboké učení, aby vám poskytla spolehlivější a téměř přesné výsledky OCR. Můžete si stáhnout soubory knihovny a také ukázkový projekt z GitHub.

Převeďte obrázkovou stránku na text pomocí C++

Nejprve se podívejme na scénář, ve kterém obrázek obsahuje víceřádkový text. To může být případ, kdy máte naskenovanou knihu, kde každá stránka knihy obsahuje spoustu řádků textu. Následují kroky pro převod obrázku na text v tomto případě.

  • Nastavte cestu obrázku v řetězcové proměnné.
  • Připravte vyrovnávací paměť pro uložení výsledků OCR.
  • Proveďte OCR pomocí funkce aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize).
  • Vytiskněte výsledky nebo je uložte do souboru.

Následující ukázka kódu ukazuje, jak provést OCR a převést obrázek na text pomocí C++.

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

// Připravte vyrovnávací paměť pro výsledek (v symbolech, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// Proveďte OCR
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);

//Vytisknout výsledek
std::wcout << buffer << L"\n"; 

Proveďte OCR pro obrázek s jedním řádkem pomocí C++

V předchozím příkladu jsme převedli obrázek s více řádky textu. Může však nastat případ, kdy obrázek obsahuje pouze jeden řádek textu, jako je titulek nebo slogan. Následují kroky k provedení OCR v takových případech.

  • Pomocí řetězcové proměnné nastavte cestu k obrázku.
  • Vytvořte vyrovnávací paměť pro uložení výsledků OCR.
  • Proveďte OCR pomocí funkce aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize).
  • Uložte nebo vytiskněte výsledky OCR.

Následující ukázka kódu ukazuje, jak provést OCR na obrázku s jedním řádkem textu pomocí C++.

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

// Připravte vyrovnávací paměť pro výsledek (v symbolech, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// Proveďte OCR
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);

//Vytisknout výsledek
std::wcout << buffer << L"\n";

Převeďte určitou oblast obrázku na text v C++

Rozhraní API můžete také přizpůsobit, abyste omezili oblast obrazu, kde chcete provést OCR. V tomto případě můžete na obrázku vytvořit obdélník pro přístup k požadované oblasti. Následují kroky k extrahování textu z určité oblasti obrázku.

  • Nastavte cestu obrázku v řetězcové proměnné.
  • Připravte vyrovnávací paměť pro uložení výsledků OCR.
  • Proveďte OCR pomocí funkce aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h).
  • Vytiskněte výsledky OCR.

Následující ukázka kódu ukazuje, jak převést konkrétní oblast obrázku na text pomocí C++.

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

// Připravte vyrovnávací paměť pro výsledek (v symbolech, 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;

// Proveďte OCR nebo vybranou oblast
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//Vytisknout výsledek
std::wcout << buffer << L"\n";

Závěr

V tomto článku jste se naučili, jak používat Aspose’ OCR knihovnu k převodu obrázků na text v C++. Viděli jsme, jak provádět OCR na obrázku s jedním nebo více řádky textu a také číst text z určité oblasti obrázku. Více o Aspose.OCR for C++ se můžete dozvědět pomocí dokumentace.

Viz také