> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ejemplo 4. Paso 9.2: campo Total Amount, elemento TotalAmount

> Configure el elemento de cadena de caracteres TotalAmount en el Ejemplo 4 de FlexiLayout Studio, restringiendo su área de búsqueda con relaciones avanzadas de prebúsqueda y posbúsqueda.

Busque el campo TotalAmount tanto a la derecha de su nombre como debajo de él.

Para crear un elemento TotalAmount:

1. En el elemento **SumGroup**, cree un elemento de tipo cadena de caracteres y asígnele el nombre **TotalAmount**.
2. Haga clic en la pestaña cadena de caracteres.
3. Especifique el alfabeto:
   ',-.0123456789OSZosz
4. Establezca el porcentaje de caracteres no pertenecientes al alfabeto en 30 %.
5. En el campo recuento de caracteres, especifique el siguiente intervalo difuso `{-1, 1, 20, INF}`, que evalúa la longitud de la cadena. Suponga que todos los valores posibles estarán dentro del intervalo de 1 a 20 caracteres. Cualquier hipótesis fuera de este intervalo recibirá una penalización.
6. No imponga restricciones adicionales y mantenga la configuración predeterminada.
7. Haga clic en la pestaña Search Constraints y excluya del área de búsqueda la región de la hipótesis del elemento **kwTotal**.
8. Haga clic en la pestaña Advanced.
9. En **relaciones avanzadas de prebúsqueda**, especifique condiciones de búsqueda adicionales: si se ha detectado el nombre **kwTotal**, defina el área de búsqueda como un array de rectángulos: un rectángulo a la derecha del nombre del campo y otro rectángulo debajo del nombre del campo con cierto desplazamiento. En caso contrario, no busque el objeto de imagen. En [FlexiLayout language](/es/flexi-capture/fls/code/general-code), esta condición puede escribirse de la siguiente manera:

   ```text theme={null}
   If not kwTotal.IsNull Then
   // Si se ha detectado el nombre del campo kwTotal
   {
   WholeWordMOde: true;
   MaxGapInLine: 30dt;
   RectArray DataRegion;
   Let r1= Rect (kwTotal.Rect.Right, kwTotal.Rect.Top -20dt, kwTotal.Rect.Right + 1800dt, kwTotal.Rect.Bottom + 50dt);
   // Limita el área de búsqueda a un rectángulo a la derecha del nombre del campo.
   Let r2 = Rect (kwTotal.Rect.Left - 100dt, kwTotal.Rect.Bottom, kwTotal.Rect.Right + 100dt, kwTotal.Rect.Bottom + 200dt);
   // Limita el área de búsqueda a un rectángulo debajo del nombre del campo.
   DataRegion = RectArray (r1);
   DataRegion.Add (r2);
   RestrictSearchArea (DataRegion);
   }
   else Dontfind();
   // En caso contrario, no busque el objeto.
   ```
10. El área de búsqueda del valor del campo se limita a dos rectángulos, uno a la derecha y el otro debajo del nombre del campo. Si el valor del campo está situado a la derecha del nombre del campo, en la mayoría de las imágenes habrá algo de texto debajo del nombre del campo. Como en la mayoría de las imágenes este texto redundante queda incluido en el área de búsqueda del campo **TotalAmount**, el programa creará una hipótesis para ese texto. Para influir en la calidad de esta hipótesis (es decir, para reducirla), en **Advanced post-search relations** especifique una comprobación adicional: cuanto más abajo esté el valor del campo con respecto al nombre del campo, mayor será la penalización. En [FlexiLayout language](/es/flexi-capture/fls/code/general-code), esta comprobación puede escribirse de la siguiente manera:

    ```text theme={null}
    If not IsNull then
    {FuzzyQuality: 400dt - width, {-50000,0,0, 50000}*dt;
    // Las hipótesis de elementos con una región de 400 puntos de ancho tendrán la calidad máxima
    if width < 50dt then Quality: 0;
    // Los elementos de menos de 50 puntos no se tienen en cuenta
    if Top > kwTotal.Rect.Top then
    { FuzzyQuality: Top - kwTotal.Rect.Top, {0,0,0, 20000}*dt;
    }
    }
    // Esta comprobación significa que cuanto mayor sea la diferencia, mayor será la penalización.
    ```

    <Info>
      Se utiliza un sistema de coordenadas 2D para describir la ubicación de los objetos en la página y las distancias entre ellos. El punto (0, 0) está situado en la esquina superior izquierda de la imagen. El eje horizontal va de izquierda a derecha y el eje vertical va de arriba abajo.
    </Info>
11. Haga coincidir el FlexiLayout con las imágenes para asegurarse de que el programa pueda detectar el elemento de forma fiable en todas las imágenes en las que aparezca.
12. Especifique la ubicación del bloque **TotalAmount** como la región rectangular del elemento **TotalAmount** expandida 5 puntos en vertical y horizontal. Para ello, seleccione Expression y especifique la siguiente expresión:

    ```text theme={null}
    Rect outputRect;
    outputRect = SumGroup.TotalAmount.Rect;
    IsNull = SumGroup.TotalAmount.IsNull;
    OutputRegion = outputRect;
    OutputRegion.Inflate (5dt, 5dt);
    ```
