Общая информация
В предыдущей статье мы рассказали о том, как с помощью возможности распознавания текста 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 — О сервисе.