Guia de Integração do Componente Baidu OCR para Delphi

Introdução

Recentemente, obtive a versão mais recente do componente Baidu OCR do autor. Como as versões anteriores apresentavam um problema persistente — "Falha ao carregar o modelo local do BaiduOCR" — estava ansioso para testar esta nova versão em minha aplicação e verificar se a questão foi resolvida.

Esta versão traz alterações relativamente pequenas, porém a integração do SDK Android mais recente do Baidu OCR representa uma mudança significativa. Para informações detalhadas sobre o novo SDK Android do Baidu OCR, recomenda-se consultar a documentação oficial. Vamos focar na implementação prática.

Configuração do License de Segurança

A versão 2.0.0, lançada em 17 de fevereiro de 2022, trouxe melhorias importantes de segurança. Por isso, é necessário gerar um arquivo de licença de segurança chamado aip-ocr.license no painel de gerenciamento de aplicativos do Baidu e incluí-lo junto com o aplicativo.

Gerando o Arquivo de Licença

Siga estes passos:

  1. Acesse o console do Baidu Cloud e selecione o aplicativo desejado na lista de aplicações.
  2. Clique em "Gerenciar" para acessar os detalhse do aplicativo.
  3. Na página de edição do aplicativo, insira o nome do pacote (包名) e a assinatura MD5.

Para desenvolvedores Delphi, a assinatura MD5 pode ser obtida diretamente na interface de gerenciamento de assinatura do projeto, ou através de ferramentas de assinatura via linha de comando.

Na janela de configurações do projeto Delphi, clique no botão "Alias Info" para visualizar as informações de assinatura, incluindo o valor MD5 necessário.

Após inserir o MD5 e salvar as alterações, o botão para download do arquivo aip-ocr.license estará disponível na página de detalhes do aplicativo.

Utilizando o Componente CCBaiduOCR no Delphi

1. Configuração Inicial do Projeto

Crie um novo projeto de teste e arraste o componente CCBaiduOCR para o formulário.

2. Obtenção do Token de Acesso

O código abaixo demonstra como inicializar o componente com o novo método de license:

procedure TFormPrincipal.InicializarOCR;
begin
{$IFDEF ANDROID}
  // Método antigo (versões anteriores à 2.0)
  // Self.ComponenteOCR1.InicializarTokenAKSK('seu_AK', 'seu_SK');

  // Versão 2.0.0: Obtaining Token via License File
  Self.ComponenteOCR1.InicializarTokenArquivoLicenca;
{$ENDIF}
end;

Os valores de AK e SK são obtidos ao criar o aplicativo no console do Baidu.

3. Tratamento do Evento de Token

Quando o token é obtido com sucesso, o evento OnTokenObtido é disparado. É importante chamar o método InicializarModeloIDCard após a obtenção bem-sucedida do token para carregar o modelo de reconhecimento de identidade — esta chamada deve ser feita apenas uma vez, conforme recomendações oficiais:

procedure TFormPrincipal.ComponenteOCR1TokenObtido(
  Sender: TObject;
  CodigoErro: Integer;
  MensagemErro: string;
  TokenObtido: string);
begin
  if CodigoErro = 0 then
  begin
    FTokenOCR := TokenObtido;

    // Inicializar modelo de processamento de IDCard
    Self.ComponenteOCR1.InicializarModeloIDCard;

    ShowMessage('Token obtido com sucesso!');
  end
  else
  begin
    FTokenOCR := '';
    ShowMessage('Falha ao obter token: ' + MensagemErro);
  end;
end;

4. Iniciar Scanner de Identidade

// Configurar tipo de scanner
ComponenteOCR1.IdentificadorTexto := 'OCR_id_card_front_native';

// Iniciar reconhecimento da frente do ID
ComponenteOCR1.RecuperarIDCardFrente;

5. Processar Resultado do Reconhecimento

Após a conclusão do扫描, o evento OnResultadoReconhecimento é disparado:

procedure TFormPrincipal.ComponenteOCR1ResultadoReconhecimento(
  Sender: TObject;
  TipoOCR: TComponenteOCRType;
  CodigoErro: Integer;
  MensagemErro: string;
  CaminhoArquivo: string;
  ResultadoJSON: string;
  InfoIDCard: TInfoCartaoIdentidade;
  InfoCartaoBanco: TInfoCartaoBanco);
begin
  // Processar resultado
  ShowMessage('Arquivo processado: ' + CaminhoArquivo);
end;

6. Liberação de Recursos

Quando o formulário que contém o componente for destruído, é essencial liberar o modelo para evitar vazamentos de memória:

procedure TFormPrincipal.FormDestroy(Sender: TObject);
begin
  // Versão 2.0.0: Liberar modelo ao destruir o formulário
  Self.ComponenteOCR1.LiberarModeloIDCard;
end;

Configuração do AndroidManifest

1. Adicionar Permissões

<!-- Permissões do Baidu OCR -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera2.full"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus" />

2. Adicionar Activity

<activity
    android:name="com.chinacock.ccfmx.baidu.ocr.ui.camera.CameraActivity"
    android:configChanges="screenSize|orientation"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

Publicação dos Arquivos do SDK

1. Adicionar Arquivos JAR

Inclua os dois arquivos JAR necessários ao projeto. Caso precise de orientação sobre como adicionar arquivos JAR em projetos Delphi, consulte a documentação específica.

2. Publicar Arquivos de Recursos e SO

Recomenda-se fortemente a utilização da ferramenta DeployMan para publicar os arquivos. Selecione o diretório "Android" fornecido pelo ChinaCock e marque a opção para incluir subdiretórios.

Atenção: Ao usar a ferramenta de publicação, todos os arquivos do diretório selecionado serão publicados, incluindo bibliotecas de 64 bits. É necessário remover manualmente os arquivos de 64 bits para evitar crashes na aplicação.

3. Publicar Arquivo de Licença

Por fim, publique o arquivo aip-ocr.license obtido anteriormente. Observe dois pontos importantes:

  • Nome do arquivo: Deve ser exatamente aip-ocr.license, sem alterações
  • Diretório de publicação: Deve ser asset\baidu_ocr

Caso o arquivo não seja publicado no local correto ou com o nome adequado, a obtenção do token falhará e todas as operações subsequentes serão comprometidas.

Pronto! O componente está configurado e pronto para uso em sua aplicação Delphi/Android.

Tags: delphi android baidu-ocr ocr ocr-sdk

Publicado em 6-1 20:35 por Thomas