> 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/docs.facephi-pt-br/sdks/sdk-web/componentes/selphid-documentos/eventos/extractionfinish.md).

# extractionFinish

## Detalhes

É emitido ao concluir a extração do documento com todos os dados esperados.

**Evento:** `extractionFinish`

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

### Sintaxe

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

### Objeto recebido

O payload útil é do tipo `SelphidExtractionFinishDetail` e está em `event.detail.detail`:

* `eventType` (`string`): Tipo de evento emitido.
* `cameraId` (`string`): ID da câmera utilizada.
* `result` (`object`): Resultados da extração.
  * `alphabetUsed` (`string` | `null`): Alfabeto utilizado na extração (opcional).
  * `diagnostic` (`number`): Código de diagnóstico da extração.
  * `detectionStatus` (`object`): Estado do documento detectado.
    * `status` (`number`): Estado da extração.
    * `quad` (`object`): Posição do documento no frame (opcional).
      * `topLeft` (`{ x, y }`): Canto superior esquerdo.
      * `topRight` (`{ x, y }`): Canto superior direito.
      * `bottomLeft` (`{ x, y }`): Canto inferior esquerdo.
      * `bottomRight` (`{ x, y }`): Canto inferior direito.
    * `glare` (`boolean`): Reflexo detectado no documento (opcional).
    * `internalStatus` (`object`): Estado interno do motor.
      * `standard` (`number`): Código de status padrão.
  * `extractionData` (`object`): Campos OCR estruturados.
    * `firstName` (`string`): Nome.
    * `lastName` (`string`): Sobrenomes.
    * `fullName` (`string`): Nome completo (opcional).
    * `gender` (`string`): Gênero.
    * `nationality` (`string`): Nacionalidade.
    * `dateOfBirth` (`string`): Data de nascimento.
    * `placeOfBirth` (`string`): Local de nascimento.
    * `documentId` (`string`): Identificador do documento.
    * `documentNumber` (`string`): Número do documento.
    * `dateOfExpiry` (`string`): Data de validade.
    * `dateOfIssue` (`string`): Data de emissão.
    * `address` (`string`): Endereço.
    * `documentType` (`number`): Tipo de documento (código numérico).
    * `documentTypeString` (`string`): Tipo de documento (texto).
    * `isSingleSideDocument` (`boolean`): Indica se o documento é de um único lado.
    * `residencePermitType` (`string`): Tipo de permissão de residência (opcional).
    * `visaType` (`string`): Tipo de visto (opcional).
    * `debug1` (`number`): Campo de depuração interna.
    * `documentCountryIssuer` (`string`): País emissor do documento.
    * `documentCountryIssuerIso2` (`string`): Código ISO-2 do país emissor.
    * `documentCountryIssuerIso3` (`string`): Código ISO-3 do país emissor (opcional).
    * `section` (`string`): Seção do documento (opcional).
    * `serie` (`string`): Série do documento (opcional).
  * `extractionRaw` (`object`): Dados brutos extraídos do documento.
    * `mrz` (`object`): Dados do MRZ.
      * `rawData` (`string`): Linha MRZ bruta.
      * `opt1` (`string`): Campo opcional 1 do MRZ.
      * `opt2` (`string`): Campo opcional 2 do MRZ.
      * `firstName` (`string`): Nome.
      * `lastName` (`string`): Sobrenomes.
      * `documentId` (`string`): Identificador do documento.
      * `documentNumber` (`string`): Número do documento.
      * `documentIssuer` (`string`): Emissor do documento.
      * `dateOfExpiry` (`string`): Data de validade.
      * `dateOfBirth` (`string`): Data de nascimento.
      * `gender` (`string`): Gênero.
      * `nationality` (`string`): Nacionalidade.
    * `ocr` (`object`): Dados do OCR.
      * `firstName` (`string`): Nome.
      * `lastName` (`string`): Sobrenomes.
      * `fullName` (`string`): Nome completo (opcional).
      * `documentId` (`string`): Identificador do documento.
      * `documentNumber` (`string`): Número do documento.
      * `dateOfBirth` (`string`): Data de nascimento.
      * `dateOfExpiry` (`string`): Data de validade.
      * `dateOfIssue` (`string`): Data de emissão.
      * `gender` (`string`): Gênero.
      * `nationality` (`string`): Nacionalidade.
  * `images` (`object`): Imagens recortadas do documento.
    * `frontDocument` (`string` | `null` | `undefined`): Anverso.
    * `backDocument` (`string` | `null` | `undefined`): Verso.
    * `faceImage` (`string` | `null` | `undefined`): Rosto no documento.
    * `signatureImage` (`string` | `null` | `undefined`): Assinatura.
  * `imagesFullsize` (`object`): Imagens em tamanho real.
    * `frontDocument` (`string` | `null` | `undefined`): Anverso completo.
    * `backDocument` (`string` | `null` | `undefined`): Verso completo.
  * `imagesRaw` (`object`): Imagens brutas (`ImageData`).
    * `frontDocument` (`ImageData` | `null` | `undefined`): Anverso bruto.
    * `backDocument` (`ImageData` | `null` | `undefined`): Verso bruto.
    * `faceImage` (`ImageData` | `null` | `undefined`): Rosto bruto.
    * `signatureImage` (`ImageData` | `null` | `undefined`): Assinatura bruta.
  * `barCodeExtractionDataFrontDocument` (`object`): Dados do código de barras do anverso (opcional).
    * `firstName` (`string`): Nome.
    * `lastName` (`string`): Sobrenomes.
    * `gender` (`string`): Gênero.
    * `nationality` (`string`): Nacionalidade.
    * `dateOfBirth` (`string`): Data de nascimento.
    * `placeOfBirth` (`string`): Local de nascimento.
    * `documentNumber` (`string`): Número do documento.
    * `documentAdditionalNumber` (`string`): Número adicional do documento.
    * `dateOfExpiry` (`string`): Data de validade.
    * `dateOfIssue` (`string`): Data de emissão.
    * `address` (`string`): Endereço.
    * `city` (`string`): Cidade.
    * `postalCode` (`string`): Código postal.
    * `documentType` (`string`): Tipo de documento (opcional).
    * `barcodeType` (`string`): Tipo de código de barras (opcional).
    * `rawData` (`Uint8Array`): Dados brutos do código (opcional).
    * `stringData` (`string`): Dados textuais do código (opcional).
  * `barCodeExtractionDataBackDocument` (`object`): Dados do código de barras do verso (opcional). Mesma estrutura que `barCodeExtractionDataFrontDocument`.
  * `tokenizedData` (`string`): Imagens tokenizadas (opcional).
  * `iqaParameters` (`object`): Parâmetros de qualidade de imagem (opcional).
    * `diagnostic` (`string`): Diagnóstico IQA.
    * `iqaOverExposure` (`number`): Superexposição.
    * `iqaUnderExposure` (`number`): Subexposição.
    * `iqaSharpness` (`number`): Nitidez.
    * `iqaReadability` (`number`): Legibilidade.
    * `documentClass` (`string`): Classe do documento.
    * `documentCaptured` (`string`): Documento capturado.
    * `ocrFields` (`number`): Campos OCR detectados.
    * `imgFields` (`number`): Campos de imagem detectados.
    * `morePagesAvailable` (`boolean`): Indica se há mais páginas disponíveis.
* `videoRecorded` (`Record<string, string>` | `null`): Vídeo gravado do processo, se aplicável.
* `advancedTracking` (`Uint8Array` | `null`): Tracking avançado codificado (opcional).
* `ocrResult` (`OcrDetail`): Resultado OCR estruturado do motor.
  * `version` (`number`): Versão do 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[]`): Imagens associadas ao resultado.
  * `viz` (`OcrViz[]`): Campos lidos da área visual.
  * `mrz` (`OcrMrz[]`): Resultados MRZ (opcional).
  * `encoded` (`OcrEncoded[]`): Dados codificados QR/barcode/PDF (opcional).
  * `nfc` (`OcrNfc[]`): Dados NFC (opcional).
  * `checks` (`object`): Verificações de consistência.
    * `field_inconsistency` (`FieldInconsistency[]`): Inconsistências entre fontes.

## Descrição

Contém os dados do documento, imagens e metadados da captura.

### Considerações

O payload útil está em `event.detail.detail` (veja [formato de eventos](/docs.facephi-pt-br/sdks/sdk-web/componentes/selphid-documentos/eventos.md#formato-de-los-eventos)).

Facephi recomenda extrair os dados OCR do backend utilizando as imagens do anverso e do verso (`result.images.frontDocument`, `result.images.backDocument`) em vez de confiar apenas em `extractionData`.

***

## Exemplo

```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;
});
```
