Executar OCR usando C++

A tecnologia OCR (Optical Character Recognition) permite ler e converter o texto nas imagens ou documentos digitalizados para o formato legível por máquina. O OCR tem vários casos de uso que incluem a leitura de códigos de vouchers, tornar o texto editável, lojas de autoatendimento, converter documentos impressos em formatos digitais e assim por diante. Várias ferramentas e bibliotecas de OCR estão disponíveis no mercado, no entanto, a confiabilidade dos resultados de OCR é um fator chave. Neste artigo, mostrarei como criar seu próprio aplicativo de OCR e converter imagens em texto programaticamente usando C++.

Biblioteca C++ OCR para converter imagem em texto

O Aspose oferece uma poderosa biblioteca de OCR C++ que usa aprendizado profundo para fornecer resultados de OCR mais confiáveis e quase precisos. Você pode baixar os arquivos da biblioteca, bem como um projeto de amostra do GitHub.

Converter página de imagem em texto usando C++

Vamos primeiro verificar o cenário em que a imagem contém um texto de várias linhas. Este pode ser o caso quando você tem um livro digitalizado em que cada página do livro contém várias linhas de texto. A seguir estão as etapas para converter imagem em texto neste caso.

  • Defina o caminho da imagem em uma variável de string.
  • Prepare um buffer para armazenar os resultados do OCR.
  • Execute o OCR usando a função aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize).
  • Imprima os resultados ou salve-os em um arquivo.

O exemplo de código a seguir mostra como executar OCR e converter imagem em texto usando C++.

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

// Prepare buffer para resultado (em símbolos, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

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

//Imprimir resultado
std::wcout << buffer << L"\n"; 

Execute OCR para uma imagem com linha única usando C++

No exemplo anterior, convertemos uma imagem com várias linhas de texto. No entanto, pode ocorrer quando a imagem contém apenas uma única linha de texto, como a legenda ou um slogan. A seguir estão as etapas para executar o OCR nesses casos.

  • Use uma variável de string para definir o caminho da imagem.
  • Crie um buffer para armazenar os resultados do OCR.
  • Execute o OCR usando a função aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize).
  • Salve ou imprima os resultados do OCR.

O exemplo de código a seguir mostra como executar o OCR em uma imagem com uma única linha de texto usando C++.

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

// Prepare buffer para resultado (em símbolos, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

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

//Imprimir resultado
std::wcout << buffer << L"\n";

Converter uma área específica de imagem em texto em C++

Você também pode personalizar a API para limitar a área da imagem onde deseja realizar o OCR. Neste caso, você pode criar um retângulo na imagem para acessar a área desejada. A seguir estão as etapas para extrair texto de uma área específica da imagem.

  • Defina o caminho da imagem em uma variável de string.
  • Prepare um buffer para armazenar os resultados do OCR.
  • Execute o OCR usando a função aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h).
  • Imprima os resultados do OCR.

O exemplo de código a seguir mostra como converter uma área específica da imagem em texto usando C++.

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

// Prepare buffer para resultado (em símbolos, 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;

// Executar OCR ou área selecionada
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//Imprimir resultado
std::wcout << buffer << L"\n";

Conclusão

Neste artigo, você aprendeu como usar a biblioteca OCR do Aspose para converter imagens em texto em C++. Vimos como realizar o OCR em uma imagem com uma ou várias linhas de texto, bem como ler o texto de uma área específica de uma imagem. Você pode aprender mais sobre Aspose.OCR para C++ usando a documentação.

Veja também