Realizar OCR usando C++

La tecnología OCR (reconocimiento óptico de caracteres) le permite leer y convertir el texto de las imágenes o documentos escaneados a un formato legible por máquina. El OCR tiene varios casos de uso que incluyen la lectura de códigos de cupones, hacer que el texto sea editable, tiendas de autoservicio, convertir documentos impresos a formatos digitales, etc. Varias herramientas y bibliotecas de OCR están disponibles en el mercado, sin embargo, la confiabilidad de los resultados de OCR es un factor clave. En este artículo, le mostraré cómo crear su propia aplicación de OCR y convertir imágenes en texto mediante programación usando C++.

Biblioteca C++ OCR para convertir imágenes en texto

Aspose ofrece una poderosa biblioteca de C++ OCR que utiliza el aprendizaje profundo para brindarle resultados de OCR más confiables y casi precisos. Puede descargar los archivos de la biblioteca, así como un proyecto de muestra de GitHub.

Convertir página de imagen a texto usando C++

Veamos primero el escenario en el que la imagen contiene un texto de varias líneas. Este podría ser el caso cuando tiene un libro escaneado donde cada página del libro contiene un montón de líneas de texto. Los siguientes son los pasos para convertir una imagen a texto en este caso.

  • Establezca la ruta de la imagen en una variable de cadena.
  • Prepare un búfer para almacenar los resultados de OCR.
  • Realice OCR usando la función aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize).
  • Imprima los resultados o guárdelos en un archivo.

El siguiente ejemplo de código muestra cómo realizar OCR y convertir imágenes en texto usando C++.

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

// Preparar el búfer para el resultado (en símbolos, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

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

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

Realice OCR para una imagen con una sola línea usando C++

En el ejemplo anterior, hemos convertido una imagen que tiene varias líneas de texto. Sin embargo, podría darse el caso de que la imagen contenga solo una línea de texto, como el pie de foto o un eslogan. Los siguientes son los pasos para realizar OCR en tales casos.

  • Use una variable de cadena para establecer la ruta de la imagen.
  • Cree un búfer para almacenar los resultados de OCR.
  • Realice OCR usando la función aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize).
  • Guarde o imprima los resultados de OCR.

El siguiente ejemplo de código muestra cómo realizar OCR en una imagen con una sola línea de texto usando C++.

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

// Preparar el búfer para el resultado (en símbolos, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

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

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

Convierta un área particular de la imagen en texto en C++

También puede personalizar la API para limitar el área de la imagen donde desea realizar el OCR. En este caso, puede crear un rectángulo en la imagen para acceder al área deseada. Los siguientes son los pasos para extraer texto de un área particular de la imagen.

  • Establezca la ruta de la imagen en una variable de cadena.
  • Prepare un búfer para almacenar los resultados de OCR.
  • Realice OCR usando la función aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h).
  • Imprima los resultados de OCR.

El siguiente ejemplo de código muestra cómo convertir un área particular de la imagen en texto usando C++.

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

// Preparar el búfer para el resultado (en 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;

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

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

Conclusión

En este artículo, ha aprendido a usar la biblioteca OCR de Aspose para convertir imágenes a texto en C++. Hemos visto cómo realizar OCR en una imagen con una o varias líneas de texto, así como leer texto de un área particular de una imagen. Puede obtener más información sobre Aspose.OCR for C++ utilizando la documentación.

Ver también