> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-web/componentes/selphid-documentos/eventos/extractionfinish.md).

# extractionFinish

## Detalles

Se emite al completar la extracción del documento con todos los datos esperados.

**Evento:** `extractionFinish`

**Tipo:** `FacephiSelphidWidgetCustomEvent<ExtractionFinishEvent>` | `CustomEvent<ExtractionFinishEvent>`

### Sintaxis

```typescript
selphid.addEventListener('extractionFinish', onExtractionFinish);
```

### Objeto recibido

El payload útil es de tipo `SelphidExtractionFinishDetail` y está en `event.detail.detail`:

* `eventType` (`string`): Tipo de evento emitido.
* `cameraId` (`string`): ID de la cámara utilizada.
* `result` (`object`): Resultados de la extracción.
  * `alphabetUsed` (`string` | `null`): Alfabeto utilizado en la extracción (opcional).
  * `diagnostic` (`number`): Código de diagnóstico de la extracción.
  * `detectionStatus` (`object`): Estado del documento detectado.
    * `status` (`number`): Estado de la extracción.
    * `quad` (`object`): Posición del documento en el frame (opcional).
      * `topLeft` (`{ x, y }`): Esquina superior izquierda.
      * `topRight` (`{ x, y }`): Esquina superior derecha.
      * `bottomLeft` (`{ x, y }`): Esquina inferior izquierda.
      * `bottomRight` (`{ x, y }`): Esquina inferior derecha.
    * `glare` (`boolean`): Reflejo detectado en el documento (opcional).
    * `internalStatus` (`object`): Estado interno del motor.
      * `standard` (`number`): Código de estado estándar.
  * `extractionData` (`object`): Campos OCR estructurados.
    * `firstName` (`string`): Nombre.
    * `lastName` (`string`): Apellidos.
    * `fullName` (`string`): Nombre completo (opcional).
    * `gender` (`string`): Género.
    * `nationality` (`string`): Nacionalidad.
    * `dateOfBirth` (`string`): Fecha de nacimiento.
    * `placeOfBirth` (`string`): Lugar de nacimiento.
    * `documentId` (`string`): Identificador del documento.
    * `documentNumber` (`string`): Número del documento.
    * `dateOfExpiry` (`string`): Fecha de caducidad.
    * `dateOfIssue` (`string`): Fecha de expedición.
    * `address` (`string`): Dirección.
    * `documentType` (`number`): Tipo de documento (código numérico).
    * `documentTypeString` (`string`): Tipo de documento (texto).
    * `isSingleSideDocument` (`boolean`): Indica si el documento es de una sola cara.
    * `residencePermitType` (`string`): Tipo de permiso de residencia (opcional).
    * `visaType` (`string`): Tipo de visado (opcional).
    * `debug1` (`number`): Campo de depuración interna.
    * `documentCountryIssuer` (`string`): País emisor del documento.
    * `documentCountryIssuerIso2` (`string`): Código ISO-2 del país emisor.
    * `documentCountryIssuerIso3` (`string`): Código ISO-3 del país emisor (opcional).
    * `section` (`string`): Sección del documento (opcional).
    * `serie` (`string`): Serie del documento (opcional).
  * `extractionRaw` (`object`): Datos en bruto extraídos del documento.
    * `mrz` (`object`): Datos del MRZ.
      * `rawData` (`string`): Línea MRZ en bruto.
      * `opt1` (`string`): Campo opcional 1 del MRZ.
      * `opt2` (`string`): Campo opcional 2 del MRZ.
      * `firstName` (`string`): Nombre.
      * `lastName` (`string`): Apellidos.
      * `documentId` (`string`): Identificador del documento.
      * `documentNumber` (`string`): Número del documento.
      * `documentIssuer` (`string`): Emisor del documento.
      * `dateOfExpiry` (`string`): Fecha de caducidad.
      * `dateOfBirth` (`string`): Fecha de nacimiento.
      * `gender` (`string`): Género.
      * `nationality` (`string`): Nacionalidad.
    * `ocr` (`object`): Datos del OCR.
      * `firstName` (`string`): Nombre.
      * `lastName` (`string`): Apellidos.
      * `fullName` (`string`): Nombre completo (opcional).
      * `documentId` (`string`): Identificador del documento.
      * `documentNumber` (`string`): Número del documento.
      * `dateOfBirth` (`string`): Fecha de nacimiento.
      * `dateOfExpiry` (`string`): Fecha de caducidad.
      * `dateOfIssue` (`string`): Fecha de expedición.
      * `gender` (`string`): Género.
      * `nationality` (`string`): Nacionalidad.
  * `images` (`object`): Imágenes recortadas del documento.
    * `frontDocument` (`string` | `null` | `undefined`): Anverso.
    * `backDocument` (`string` | `null` | `undefined`): Reverso.
    * `faceImage` (`string` | `null` | `undefined`): Rostro en el documento.
    * `signatureImage` (`string` | `null` | `undefined`): Firma.
  * `imagesFullsize` (`object`): Imágenes a tamaño completo.
    * `frontDocument` (`string` | `null` | `undefined`): Anverso completo.
    * `backDocument` (`string` | `null` | `undefined`): Reverso completo.
  * `imagesRaw` (`object`): Imágenes en bruto (`ImageData`).
    * `frontDocument` (`ImageData` | `null` | `undefined`): Anverso en bruto.
    * `backDocument` (`ImageData` | `null` | `undefined`): Reverso en bruto.
    * `faceImage` (`ImageData` | `null` | `undefined`): Rostro en bruto.
    * `signatureImage` (`ImageData` | `null` | `undefined`): Firma en bruto.
  * `barCodeExtractionDataFrontDocument` (`object`): Datos del código de barras del anverso (opcional).
    * `firstName` (`string`): Nombre.
    * `lastName` (`string`): Apellidos.
    * `gender` (`string`): Género.
    * `nationality` (`string`): Nacionalidad.
    * `dateOfBirth` (`string`): Fecha de nacimiento.
    * `placeOfBirth` (`string`): Lugar de nacimiento.
    * `documentNumber` (`string`): Número del documento.
    * `documentAdditionalNumber` (`string`): Número adicional del documento.
    * `dateOfExpiry` (`string`): Fecha de caducidad.
    * `dateOfIssue` (`string`): Fecha de expedición.
    * `address` (`string`): Dirección.
    * `city` (`string`): Ciudad.
    * `postalCode` (`string`): Código postal.
    * `documentType` (`string`): Tipo de documento (opcional).
    * `barcodeType` (`string`): Tipo de código de barras (opcional).
    * `rawData` (`Uint8Array`): Datos en bruto del código (opcional).
    * `stringData` (`string`): Datos en texto del código (opcional).
  * `barCodeExtractionDataBackDocument` (`object`): Datos del código de barras del reverso (opcional). Misma estructura que `barCodeExtractionDataFrontDocument`.
  * `tokenizedData` (`string`): Imágenes tokenizadas (opcional).
  * `iqaParameters` (`object`): Parámetros de calidad de imagen (opcional).
    * `diagnostic` (`string`): Diagnóstico IQA.
    * `iqaOverExposure` (`number`): Sobreexposición.
    * `iqaUnderExposure` (`number`): Subexposición.
    * `iqaSharpness` (`number`): Nitidez.
    * `iqaReadability` (`number`): Legibilidad.
    * `documentClass` (`string`): Clase del documento.
    * `documentCaptured` (`string`): Documento capturado.
    * `ocrFields` (`number`): Campos OCR detectados.
    * `imgFields` (`number`): Campos de imagen detectados.
    * `morePagesAvailable` (`boolean`): Indica si hay más páginas disponibles.
* `videoRecorded` (`Record<string, string>` | `null`): Vídeo grabado del proceso, si aplica.
* `advancedTracking` (`Uint8Array` | `null`): Tracking avanzado codificado (opcional).
* `ocrResult` (`OcrDetail`): Resultado OCR estructurado del motor.
  * `version` (`number`): Versión del formato OCR.
  * `type` (`string`): Tipo de documento detectado.
  * `model` (`string`): Modelo OCR utilizado.
  * `ocr` (`object`): Mapa de campos OCR (`{ [field]: { value, confidence?, source? } }`).
  * `images` (`OcrImage[]`): Imágenes asociadas al resultado.
  * `viz` (`OcrViz[]`): Campos leídos de la zona visual.
  * `mrz` (`OcrMrz[]`): Resultados MRZ (opcional).
  * `encoded` (`OcrEncoded[]`): Datos codificados QR/barcode/PDF (opcional).
  * `nfc` (`OcrNfc[]`): Datos NFC (opcional).
  * `checks` (`object`): Comprobaciones de consistencia.
    * `field_inconsistency` (`FieldInconsistency[]`): Inconsistencias entre fuentes.

## Descripción

Contiene los datos del documento, imágenes y metadatos de la captura.

### Consideraciones

El payload útil está en `event.detail.detail` (ver [formato de eventos](/sdks/sdk-web/componentes/selphid-documentos/eventos.md#formato-de-los-eventos)).

Facephi recomienda extraer los datos OCR desde el backend utilizando las imágenes del anverso y reverso (`result.images.frontDocument`, `result.images.backDocument`) en lugar de confiar únicamente en `extractionData`.

***

## Ejemplo

```jsx
<facephi-selphid-widget
    onExtractionFinish={(event) => {
      const { result } = event.detail.detail;
      saveResults(result.images.frontDocument, result.images.backDocument);
    }}
/>
```

```typescript
import { type SelphidExtractionFinishDetail } from '@facephi/sdk-web-wc';

selphid.addEventListener('extractionFinish', (event) => {
  const detail: SelphidExtractionFinishDetail = event.detail.detail;
});
```
