Как с помощью возможности распознавания текста HUAWEI ML Kit реализовать функцию автоматического ввода номеров

от автора

Общая информация

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

Назначение

Функция распознавания текста может применяться в самых разных ситуациях. Например, если вы сканируете счет ниже, укажите, что номер услуги начинается с «NO.DE SERVICIO», а также введите ограничение длины до 12 символов. Тогда вы быстро получите номер счета «123456789123» с помощью функции распознавания текста.

image

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

image

Полезно, правда? Вы также можете самостоятельно настраивать данные, которые сможет распознавать ваше приложение.

Интеграция функции распознавания текста

Итак, давайте узнаем, как обрабатывать номера счетов и скидочные коды.

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(); }

Демо

Вот и все! Помните, что при необходимости вы можете расширить возможности функции. А теперь давайте посмотрим, как отсканировать транспортные чеки.

image

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

image

Исходный код Github

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


ссылка на оригинал статьи https://habr.com/ru/articles/519682/