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
- Converter página de imagem em texto usando C++
- Execute OCR para uma imagem com linha única usando C++
- Converter área específica de imagem em texto em 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.