Comment implémenter la saisie automatique des numéros avec la fonction OCR de HUAWEI ML Kit

informations générales



Dans l' article précédent , nous avons expliqué comment créer la fonction de liaison de cartes bancaires à l'aide des capacités de reconnaissance de texte du kit HUAWEI ML. Les utilisateurs n'ont qu'à télécharger une photo de leur carte, et l'application reconnaîtra automatiquement toutes les informations importantes. Cela facilite grandement la saisie des coordonnées bancaires. Mais pouvez-vous faire la même chose avec les factures et les coupons? Bien sûr vous pouvez! Dans cet article, nous allons vous montrer comment utiliser les capacités OCR du HUAWEI ML Kit pour saisir automatiquement les numéros de compte et les codes de réduction.



Rendez-vous



La fonction OCR peut être utilisée dans une grande variété de situations. Par exemple, si vous numérisez la facture ci-dessous, indiquez que le numéro de service commence par «NO.DE SERVICIO» et saisissez également une longueur maximale de 12 caractères. Ensuite, vous recevrez rapidement le numéro de compte "123456789123" en utilisant la fonction de reconnaissance de texte.



image


De même, si vous scannez le coupon ci-dessous, personnalisez le début du code «FAVE-», limitez la longueur à 4 caractères pour recevoir le code de réduction «8329» puis effectuez le paiement.



image


Utile, non? Vous pouvez également personnaliser les données que votre application peut reconnaître.



Intégration de la fonction de reconnaissance de texte



Découvrons donc comment gérer les numéros de facture et les codes de réduction.



1. Préparation



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 — .




All Articles