O Vision no iOS 11 tem tudo que você precisa para criar um aplicativo que possa reconhecer caracteres de texto com implementação acontecendo simultaneamente. Você não precisa de um conhecimento técnico de codificação - navegar pelo recurso é bastante simples. Além do mais, a implementação é perfeita.
Visão Framework
A estrutura de visão permite que você implemente facilmente qualquer tarefa que envolva detalhes do computador. A estrutura realiza detecção facial e facial, reconhecimento de código de barras, registro de imagem, rastreamento de recursos gerais e detecção de texto. O Vision também permite que você use modelos personalizados do Core ML para tarefas como classificação ou detecção de objetos.
VN DetectTextRectanglesRequest
o VN DetectTextRectanglesRequest é uma solicitação de análise de imagem que encontra regiões de texto visível em uma imagem; o recurso retorna caracteres de texto como uma caixa delimitadora retangular com origem e tamanho.
Se você está acostumado a usar o Swift e já programa há algum tempo, provavelmente está se perguntando para que serve o Vision quando há outros recursos como imagem e AVFoundation. Bem, a visão é mais precisa e direta. O recurso também está disponível em uma variedade de plataformas. No entanto, o uso do Vision pode exigir mais poder de processamento e tempo de processamento.
Para usar o Vision para detecção de texto, você precisará do Xcode 9 e de um dispositivo que execute o iOS 11.
Criando uma câmera com Avcapture
Primeiro, você precisa criar uma câmera com AVCapture; isso ocorre inicializando um objeto AVcapturesession para realizar a captura em tempo real ou offline. Depois disso, faça a sessão para a conexão do dispositivo.
Para economizar tempo na construção de uma IU do seu aplicativo, considere ter um projeto inicial; para começar, isso lhe dará tempo para se concentrar no aprendizado da estrutura Vision.
- Abra seu projeto inicial. As visualizações no storyboard devem estar prontas e configuradas para você.
- No ViewController.swift, procure a seção de código com funções e saídas.
- Sob a tomadaImageView, declare uma sessão para AVcapturesession - é usado sempre que você deseja que as ações sejam realizadas com base em uma transmissão ao vivo.
- Colocou o AVcapturesession e a AVmediatype ao vídeo, uma vez que você fará a filmagem da câmera para permitir que funcione continuamente
- Defina o dispositivo de saída e entrada
- A entrada é o que a câmera verá e a saída é o vídeo em um formato de tipo definido de KCVPixelFormatType_32GRA.
- Finalmente, adicione um subcamada que contém vídeos para imageView e inicie a sessão. A função é conhecida como inViewdidload. Você também precisa definir o quadro da camada.
Chame a função no viewWillAppear método.
Como os limites ainda não foram finalizados, substitua o viewDidLayoutSubviews () método para atualizar o limite das camadas.
Após o lançamento do iOS 10, uma entrada adicional em Info.plist é necessária, isso fornece um motivo para usar a câmera. Você também deve definir a descrição de uso da câmera de privacidade.
Detecção de texto; Como funciona o Vision Framework
Existem três etapas para implementar o Vision no aplicativo.
- Manipuladores - é quando você deseja que a estrutura faça algo depois que a solicitação for chamada.
- Observações - isso é o que você deseja fazer com os dados fornecidos por você, começando com uma solicitação
- Solicitações de - é quando você pede Detectar framework
Idealmente, você cria uma solicitação de texto como VNdetecttextrectanglesrequest. Isso é uma espécie de VNrequest que contorna o texto. Depois que a estrutura conclui o aplicativo, você prossegue para chamar o Dettexthandler função. Você também vai querer saber o quadro exato que foi reconhecido, defina-o para Reportcharacterboxes= Verdadeiro.
Depois disso, defina as observações que contêm todos os resultados de VNdetecttextrectanglesrequest, lembre-se de adicionar Vision à câmera de saída. Como o Vision expõe APIs de alto nível, trabalhar com ele é seguro.
A função verifica se o Cmsamplebuffer existe e PutOut Avcaptureoutput. Você deve então prosseguir para criar uma variável Requestoptions como 1 tipo de dicionário VNimageoption. o VNmage opção é um tipo de estrutura que contém propriedades e dados da câmera. Você deve então criar o VNimagerequesthandler e execute a solicitação de texto.
Desenho de bordas ao redor do texto detectado
Você pode começar com a estrutura para desenhar duas caixas, uma para cada letra detectada e a outra para cada palavra. As tabelas são a combinação de todas as caixas de caracteres que sua solicitação encontrará.
- Defina os pontos em sua visão para ajudá-lo a posicionar as caixas.
- Depois disso, crie um CALayer; usar VNrectangleobservation para definir suas restrições, facilitando o processo de delinear a caixa.
Agora você tem todas as funções definidas.
Para conectar seus pontos, comece executando seu código de forma assíncrona. Você deve, então, verificar se existe uma região nos resultados de seu VNTextObservation.
Agora você pode chamar sua função, que desenhará uma caixa dentro da área. Verifique se há caixas de caracteres na região e chame o serviço que traz uma caixa ao redor de cada letra.
Depois disso, crie uma variável RequestOptions. Agora você pode criar um VNImageRequestHandler objeto e execute a solicitação de texto que você criou.
Finalmente, a última etapa é executar seu código de visão com a transmissão ao vivo. Você precisará pegar a saída de vídeo e convertê-la para Cmsamplebuffer.
Dicas Adicionais
- Sempre tente cortar a imagem e processar apenas a seção necessária. Isso irá reduzir o tempo de processamento e a pegada de memória
- Ative a correção de idioma ao lidar com caracteres não numéricos e, em seguida, desative-a ao lidar com caracteres numéricos
- Incluir validação para cadeias de números reconhecidas para confirmar a precisão e eliminar a exibição de valores falsos para o usuário.
- O controlador da câmera de documentos é o melhor companheiro para reconhecimento de texto, pois a qualidade da imagem desempenha um papel significativo no reconhecimento de texto.
- Considere definir uma altura mínima do texto para aumentar o desempenho.
Com o Vision, você tem tudo o que precisa para reconhecimento de texto. Visto que o Vision é fácil de usar e leva pouco tempo para ser implementado, usá-lo é quase equivalente a brincar com Legos. Experimente testar seu aplicativo em diferentes objetos, fontes, iluminação e tamanhos. Você também pode se impressionar combinando o Vision com o Core ML.