La integración rápida de Android de las capacidades de corrección de documentos es súper simple

La integración rápida de Android de las capacidades de corrección de documentos es súper simple

Prefacio

En el artículo anterior " Integración ultra simple del SDK de reconocimiento de texto del kit Huawei HMS ML, ingreso automático del número de facturación con un clic ", presentamos cómo la tecnología de reconocimiento de texto del kit Huawei HMS ML puede reconocer automáticamente la información de texto en las fotos tomando fotos. Entonces, algunos amigos pueden preguntar, si la foto no está frente al texto cuando se toma la foto, y la foto tomada está torcida, ¿se puede reconocer el texto con precisión? Por supuesto. La tecnología de corrección de documentos del HMS ML Kit puede identificar automáticamente la posición del documento, corregir el ángulo de disparo y admitir posiciones de puntos límite definidas por el usuario, incluso en un ángulo oblicuo, se puede tomar la imagen frontal del documento.
Inserte la descripción de la imagen aquí

Escenarios de aplicación

La tecnología de corrección de documentos tiene muchos escenarios de aplicación en la vida. Por ejemplo, al grabar un documento en papel, la cámara está en un ángulo oblicuo, lo que hace que la lectura del documento sea muy incómoda. El uso de la tecnología de corrección de documentos puede ajustar el documento al ángulo de visión correcto, de modo que la lectura sea mucho más fluida.
Inserte la descripción de la imagen aquí

Por otro ejemplo, al grabar información de la tarjeta, utilizando la tecnología de corrección de documentos, no es necesario ajustar el ángulo de visión hacia la tarjeta, y también puede tomar una foto de la parte frontal de la tarjeta.
Inserte la descripción de la imagen aquí

Además, debido a que el cuerpo está en una posición inclinada durante el viaje, es difícil identificar con precisión la señal de la calle al lado de la carretera. En este momento, la imagen frontal de la señal de la calle se puede tomar mediante la tecnología de corrección de documentos.
Inserte la descripción de la imagen aquí

¿Cómo es, es conveniente? Luego, presentaremos en detalle cómo Android integra rápidamente la tecnología de corrección de documentos.

Combate de desarrollo

Para conocer los pasos de preparación detallados, consulte la Huawei Developers Alliance:
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4
Estos son los pasos clave del desarrollo.

1.1 Configurar la dirección del almacén de Maven en gradle a nivel de proyecto

    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 Configurar las dependencias del SDK en gradle a nivel de aplicación

    dependencies{
    
    
             // 引入基础SDK
            implementation 'com.huawei.hms:ml-computer-vision-documentskew:2.0.2.300'
            // 引入文档检测/校正模型包
           implementation 'com.huawei.hms:ml-computer-vision-documentskew-model:2.0.2.300'
    }

1.3 Agregar configuración al encabezado del archivo

    apply plugin: 'com.huawei.agconnect'
    apply plugin: 'com.android.application'

1.4 Agregue la siguiente declaración al archivo AndroidManifest.xml para actualizar automáticamente el modelo de aprendizaje automático en el dispositivo

    <meta-data
    android:name="com.huawei.hms.ml.DEPENDENCY" 
    android:value= "dsc"/>

1.5 Solicite el permiso de la cámara y lea el permiso de imagen local

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2. Desarrollo de código

2.1 Crear un analizador de detección / calibración de cuadro de texto

MLDocumentSkewCorrectionAnalyzerSetting setting = new MLDocumentSkewCorrectionAnalyzerSetting.Factory().create();
MLDocumentSkewCorrectionAnalyzer analyzer =                 MLDocumentSkewCorrectionAnalyzerFactory.getInstance().getDocumentSkewCorrectionAnalyzer(setting);

2.2 Cree un objeto MLFrame a través de android.graphics.Bitmap para que el analizador detecte imágenes. Los formatos de imagen admitidos incluyen: jpg / jpeg / png. El tamaño de imagen recomendado no es inferior a 320 320 píxeles ni superior a 1920 1920 píxeles.

MLFrame frame = MLFrame.fromBitmap(bitmap);

2.3 Llame al método asincrónico asyncDocumentSkewDetect o al método sincrónico AnalyFrame para detectar el cuadro de texto. Cuando el código de retorno es MLDocumentSkewCorrectionConstant.SUCCESS, se devolverá el valor de la coordenada de los cuatro vértices del cuadro de texto. El valor de la coordenada es relativo a la coordenada de la imagen entrante. Si no es coherente con la coordenada del dispositivo, la persona que llama debe convertir; de lo contrario, la devolución Los datos no tienen sentido.

        // asyncDocumentSkewDetect异步调用。
        Task<MLDocumentSkewDetectResult> detectTask = analyzer.asyncDocumentSkewDetect(mlFrame);
        detectTask.addOnSuccessListener(new OnSuccessListener<MLDocumentSkewDetectResult>() {
    
    
                @Override
                public void onSuccess(MLDocumentSkewDetectResult detectResult) {
    
    
                        // 检测成功。
                }
        }).addOnFailureListener(new OnFailureListener() {
    
    
                @Override
                public void onFailure(Exception e) {
    
    
                      // 检测失败。
                 }
         })
   
          // analyseFrame同步调用。
          SparseArray<MLDocumentSkewDetectResult> detect = analyzer.analyseFrame(mlFrame);
          if (detect != null && detect.get(0).getResultCode() == MLDocumentSkewCorrectionConstant.SUCCESS) {
    
    
                  // 检测成功。
          } else {
    
    
                  // 检测失败。
          }

2.4 Después de que la detección sea exitosa, obtenga los datos de coordenadas de los cuatro vértices del cuadro de texto respectivamente, y luego agregue la esquina superior izquierda, la esquina superior derecha, la esquina inferior derecha y la esquina inferior izquierda a la lista (Lista) respectivamente usando la esquina superior izquierda como punto de partida y en el sentido de las agujas del reloj. Construya un objeto MLDocumentSkewCorrectionCoordinateInput.

2.4.1 Si usa la llamada síncrona analyseFrame, primero obtenga el resultado de la detección, como se muestra a continuación (use la llamada asíncrona asyncDocumentSkewDetect puede ignorar este paso y continuar con el paso 2.4.2):

MLDocumentSkewDetectResult detectResult = detect.get(0)

2.4.2 Obtenga los datos de coordenadas de los cuatro vértices del cuadro de texto y construya el objeto MLDocumentSkewCorrectionCoordinateInput:

 Point leftTop = detectResult.getLeftTopPosition();
    Point rightTop = detectResult.getRightTopPosition();
    Point leftBottom = detectResult.getLeftBottomPosition();
    Point rightBottom = detectResult.getRightBottomPosition();
    List<Point> coordinates = new ArrayList<>();
    coordinates.add(leftTop);
    coordinates.add(rightTop);
    coordinates.add(rightBottom);
    coordinates.add(leftBottom);
    MLDocumentSkewCorrectionCoordinateInput coordinateData = new MLDocumentSkewCorrectionCoordinateInput(coordinates);

2.5 Llame al método asincrónico asyncDocumentSkewCorrect o al método sincrónico syncDocumentSkewCorrect para corregir el cuadro de texto.

// asyncDocumentSkewCorrect异步调用。
Task<MLDocumentSkewCorrectionResult> correctionTask = analyzer.asyncDocumentSkewCorrect(mlFrame, coordinateData);
 correctionTask.addOnSuccessListener(new OnSuccessListener<MLDocumentSkewCorrectionResult>() {
    
    
        @Override
        public void onSuccess(MLDocumentSkewCorrectionResult refineResult) {
    
    
                // 检测成功。
         }
 }).addOnFailureListener(new OnFailureListener() {
    
    
         @Override
         public void onFailure(Exception e) {
    
    
                // 检测失败。
          }
  });
  
 // syncDocumentSkewCorrect同步调用。
SparseArray<MLDocumentSkewCorrectionResult> correct= analyzer.syncDocumentSkewCorrect(mlFrame, coordinateData);
 if (correct != null && correct.get(0).getResultCode() == MLDocumentSkewCorrectionConstant.SUCCESS) {
    
    
           // 校正成功。
} else {
    
    
          // 校正失败。
}

2.6 Una vez completada la detección, detenga el analizador y libere los recursos de detección.

if (analyzer != null) {
    
    
        analyzer.stop();
}

Efecto de demostración

La siguiente demostración muestra cómo escanear un documento en un ángulo oblicuo La tecnología de corrección de documentos puede ajustar el documento al ángulo de visión correcto. ¿Es genial el efecto?

Inserte la descripción de la imagen aquí

La tecnología de corrección de documentos también puede ayudar a la tecnología de reconocimiento de documentos, ajustar documentos oblicuos a una perspectiva frontal, realizar rápidamente la conversión de archivos en papel a archivos electrónicos y mejorar en gran medida la eficiencia de la entrada de información.

Código fuente de Github

https://github.com/HMS-Core/hms-ml-demo/blob/master/MLKit-Sample/module-text/src/main/java/com/mlkit/sample/activity/DocumentSkewCorretionActivity.java

Para obtener pautas de desarrollo más detalladas, consulte el sitio web oficial de Huawei Developer Alliance

https://developer.huawei.com/consumer/cn/hms/huawei-mlkit

Para obtener más detalles, consulte el
sitio web oficial de Huawei Developer Alliance: https://developer.huawei.com/consumer/cn/hms para
obtener el documento de orientación de desarrollo: https://developer.huawei.com/consumer/cn/doc / desarrollo Para
participar en las discusiones de los desarrolladores, vaya a la comunidad de Reddit: https://www.reddit.com/r/HMSCore/ Para
descargar la demostración y el código de muestra, vaya a Github: https://github.com/HMS-Core para
resolver problemas de integración, vaya Desbordamiento de pila: https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


Fuente: https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202344452930050418&fid=18
Autor: dejar hojas

Supongo que te gusta

Origin blog.csdn.net/weixin_44708240/article/details/108731148
Recomendado
Clasificación