API для извлечения чисел из изображений?

Вопрос или проблема

Я работаю над приложением, и мне нужен способ извлечения чисел из изображений, похожий на то, как банковские приложения извлекают номер кредитной карты из фотографии. У меня нет предпочтений по языку, но, вероятно, Python будет более полезен.

Вы можете рассмотреть возможность использования SDK LEADTOOLS для выполнения OCR на изображениях для текста и чисел. Вот небольшой фрагмент кода на C API, который вы, вероятно, могли бы подключить к приложению на Python. В качестве дисклеймера, это платный SDK, и я работаю на поставщика.

https://www.leadtools.com/help/sdk/v21/ocr/api/l-ocrpage-gettext.html

   BITMAPHANDLE bitmap = { 0 }; 
   L_OcrEngine ocrEngine = NULL; 
   L_OcrPage ocrPage = NULL; 

   // Создаем экземпляр движка 
   std::wcout << L"Создание экземпляра движка OCR...\n"; 
   L_INT retCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_Advantage, &ocrEngine); 
   if(retCode != SUCCESS) 
      return retCode; 

   // Запускаем движок с параметрами по умолчанию 
   std::wcout << L"Запуск движка OCR...\n"; 
   L_OcrEngine_Startup(ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR); 

   // Загружаем изображение для обработки 
   std::wcout << L"Загрузка страницы для обработки...\n"; 
   L_LoadBitmap(MAKE_IMAGE_PATH(L_TEXT("Ocr1.tif")), &bitmap, sizeof(BITMAPHANDLE), 0, ORDER_RGB, NULL, NULL); 

   // Создаем страницу OCR для обработки 
   L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &bitmap, L_OcrBitmapSharingMode_AutoFree, NULL, NULL); 

   // Передаем право собственности 
   bitmap.Flags.Allocated = 0; 

   // Находим текст на изображении 
   std::wcout << L"Поиск текста на странице...\n"; 
   L_OcrPage_AutoZone(ocrPage, NULL, NULL); 

   // Распознаем текст 
   std::wcout << L"Распознавание текста...\n"; 
   L_OcrPage_Recognize(ocrPage, NULL, NULL); 

   // Проходим по зонам и выводим текст 
   L_UINT zoneCount = 0; 
   L_OcrPage_GetZoneCount(ocrPage, &zoneCount); 

   std::wcout << L"Количество зон: " << zoneCount << std::endl; 
   std::wcout << L"Показать распознанный текст:\n"  
      << L"**********************************************\n"; 
   for(L_UINT zoneIndex = 0; zoneIndex < zoneCount; zoneIndex++) 
   { 
      L_WCHAR* text = NULL; 
      L_UINT textLength = 0; 
      L_OcrPage_GetText(ocrPage, zoneIndex, &text, &textLength); 

      std::wcout << text << std::endl; 

      L_OcrMemory_Free(text); 
   } 

   std::wcout << L"**********************************************\n"; 

   //ОЧИСТКА 
   std::wcout << L"Освобождение использованных ресурсов..."; 
   L_OcrPage_Destroy(ocrPage); 
   L_OcrEngine_Destroy(ocrEngine);

Ответ или решение

Извлечение чисел из изображений: решения для разработки приложений

В современном мире извлечение информации из изображений становится все более актуальной задачей, особенно в таких сферах, как финансы и банковские услуги. Данная статья предоставит вам исчерпывающую информацию об API и инструментах, которые могут помочь извлекать числовые данные, например, номера кредитных карт, из изображений.

1. Введение в OCR

OCR (оптическое распознавание символов) – это технология, позволяющая преобразовывать различные типы документов, такие как изображения, сканы и фотографии, в редактируемый текст. Она может быть особенно полезна для извлечения чисел и текстов из счетов, кредитных карт и других финансовых документов.

2. LEADTOOLS SDK

Одним из наиболее мощных инструментов для OCR является LEADTOOLS SDK. Он предлагает широкий спектр функций для обработки изображений и распознавания текста, включая числа. Несмотря на то, что этот SDK является платным, его возможности оправдывают затраты, особенно если вы стремитесь к высокой точности и надежности обработки.

Пример использования LEADTOOLS SDK на C и интеграция с Python

Если вы предпочитаете Python, вы можете создать C-приложение, использующее LEADTOOLS, и вызывать его из Python с помощью ctypes или cffi. Пример кода для работы с библиотекой LEADTOOLS приведен ниже:

BITMAPHANDLE bitmap = { 0 }; 
L_OcrEngine ocrEngine = NULL; 
L_OcrPage ocrPage = NULL; 

// Создание экземпляра движка
L_INT retCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_Advantage, &ocrEngine); 
if(retCode != SUCCESS) 
    return retCode; 

// Запуск движка
L_OcrEngine_Startup(ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR); 

// Загрузка изображения
L_LoadBitmap(MAKE_IMAGE_PATH(L_TEXT("Ocr1.tif")), &bitmap, sizeof(BITMAPHANDLE), 0, ORDER_RGB, NULL, NULL); 

// Обработка страницы
L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &bitmap, L_OcrBitmapSharingMode_AutoFree, NULL, NULL); 

// Поиск текста в изображении
L_OcrPage_AutoZone(ocrPage, NULL, NULL); 

// Распознавание текста
L_OcrPage_Recognize(ocrPage, NULL, NULL); 

// Вывод распознанного текста
L_UINT zoneCount = 0; 
L_OcrPage_GetZoneCount(ocrPage, &zoneCount); 
for(L_UINT zoneIndex = 0; zoneIndex < zoneCount; zoneIndex++) { 
    L_WCHAR* text = NULL; 
    L_UINT textLength = 0; 
    L_OcrPage_GetText(ocrPage, zoneIndex, &text, &textLength); 
    // Здесь добавьте логику для извлечения и обработки цифр
    L_OcrMemory_Free(text); 
}

Этот пример демонстрирует основные шаги по созданию движка, загрузке изображения и извлечению текста, который можно адаптировать под ваши нужды.

3. Альтернативные решения

Если LEADTOOLS не подходит из-за стоимости или других факторов, рассмотрите использование следующих альтернатив:

  • Tesseract OCR: Эта бесплатная библиотека с открытым исходным кодом поддерживает множество языков и может быть интегрирована с Python с помощью библиотеки pytesseract. Она обеспечивает хорошую точность распознавания текста.

  • Google Vision API: С помощью облачного решения Google вы можете использовать мощные механизмы для распознавания текста. API прост в использовании, и вы можете извлекать числа и текст из изображений, отправляя их на сервер Google для обработки.

  • Microsoft Azure OCR: Платформа Azure также предлагает OCR-сервис, который может быть полезен для ваших нужд. Он имеет хорошие характеристики и поддерживает многопоточную обработку.

4. Заключение

Извлечение чисел из изображений – это сложная, но реализуемая задача благодаря современным технологиям OCR. Ваша выбор будет зависеть от ваших конкретных требований, включая бюджет, точность и удобство интеграции. Не забывайте тщательно тестировать выбранное решение на различных типах изображений, чтобы гарантировать высокую точность распознавания.

Использование предложенных инструментов поможет вам успешно справиться с задачей и создать надежное приложение для извлечения чисел из изображений.

Оцените материал
Добавить комментарий

Капча загружается...