Общая информация
В предыдущей статье мы рассказали о том, как с помощью возможности распознавания текста HUAWEI ML Kit создать функцию привязки банковских карт. Пользователям достаточно загрузить фотографию своей карты, и приложение автоматически распознает всю важную информацию. Это значительно облегчает ввод данных банковской карты. Но можно ли сделать то же самое со счетами и скидочными купонами? Конечно, можно! В этой статье мы покажем вам, как с помощью возможности распознавания текста HUAWEI ML Kit создать функцию автоматического ввода номеров счетов и скидочных кодов.
Назначение
Функция распознавания текста может применяться в самых разных ситуациях. Например, если вы сканируете счет ниже, укажите, что номер услуги начинается с «NO.DE SERVICIO», а также введите ограничение длины до 12 символов. Тогда вы быстро получите номер счета «123456789123» с помощью функции распознавания текста.

Аналогично, если вы сканируете скидочный купон ниже, настройте начало кода «FAVE-», ограничьте длину до 4 символов, чтобы получить код скидки «8329» и затем завершить платеж.

Полезно, правда? Вы также можете самостоятельно настраивать данные, которые сможет распознавать ваше приложение.
Интеграция функции распознавания текста
Итак, давайте узнаем, как обрабатывать номера счетов и скидочные коды.
1. Подготовка
Подробную информацию о необходимых подготовительных шагах вы можете найти на платформе HUAWEI Developer. Ниже мы кратко рассмотрим только ключевые моменты.
1.1 Настройте адрес репозитория Maven в файле на уровне проекта build.gradle
buildscript { repositories { ... maven {url 'https://developer.huawei.com/repo/'} } } dependencies { ... classpath 'com.huawei.agconnect:agcp:1.3.1.300' } allprojects { repositories { ... maven {url 'https://developer.huawei.com/repo/'} } }
1.2 Добавьте настройки к заголовку файла
После интеграции SDK добавьте следующие настройки к заголовку файла:
apply plugin: 'com.android.application' apply plugin: 'com.huawei.agconnect'
1.3 Настройте зависимости SDK в файле на уровне приложения build.gradle
dependencies { // Import the base SDK. implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300' // Import the Latin character recognition model package. implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.1.300' // Import the Japanese and Korean character recognition model package. implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.1.300' // Import the Chinese and English character recognition model package. implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.1.300' }
1.4 Добавьте эти выражения в файл AndroidManifest.xml для автоматического обновления модели машинного обучения
<manifest> ... <meta-data android:name="com.huawei.hms.ml.DEPENDENCY" android:value="ocr" /> ... </manifest>
1.5 Отправьте заявку на право использования камеры
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />
2. Разработка кода
2.1 Создайте анализатор
MLTextAnalyzer analyzer = new MLTextAnalyzer.Factory(context).setLanguage(type).create();
2.2 Настройте обработку результатов распознавания для привязки анализатора
analyzer.setTransactor(new OcrDetectorProcessor());
2.3 Вызовите синхронный API
С помощью встроенного LensEngine SDK создайте объект, зарегистрируйте анализатор и инициализируйте параметры камеры.
lensEngine = new LensEngine.Creator(context, analyzer) .setLensType(LensEngine.BACK_LENS) .applyDisplayDimension(width, height) .applyFps(30.0f) .enableAutomaticFocus(true) .create();
2.4 Вызовите метод run для запуска камеры и считывания данных камеры при распознавании
try { lensEngine.run(holder); } catch (IOException e) { // Exception handling logic. Log.e("TAG", "e=" + e.getMessage()); }
2.5 Обработайте результаты распознавания, как показано ниже
public class OcrDetectorProcessor implements MLAnalyzer.MLTransactor<MLText.Block> { @Override public void transactResult(MLAnalyzer.Result<MLText.Block> results) { SparseArray<MLText.Block> items = results.getAnalyseList(); // Process the recognition result as required. Only the detection results are processed. // Other detection-related APIs provided by ML Kit cannot be called. … } @Override public void destroy() { // Callback method used to release resources when the detection ends. } }
2.6 Остановите анализатор и освободите ресурсы распознавания после завершения распознавания
if (analyzer != null) { try { analyzer.stop(); } catch (IOException e) { // Exception handling. } } if (lensEngine != null) { lensEngine.release(); }
Демо
Вот и все! Помните, что при необходимости вы можете расширить возможности функции. А теперь давайте посмотрим, как отсканировать транспортные чеки.

А также как отсканировать скидочный код, чтобы быстро получить скидку онлайн и совершить платеж.

Исходный код Github
→ Github
→ Для получения подробной информации перейдите на наш официальный веб-сайт: HUAWEI ML Kit — О сервисе.
