Vision en iOS 11 tiene todo lo que necesita para crear una aplicación que pueda reconocer caracteres de texto con implementación simultánea. No necesita ningún conocimiento técnico de codificación; navegar por la función es bastante sencillo. Además, la implementación es transparente.
Marco de visión
El marco de visión le permite implementar fácilmente cualquier tarea que involucre detalles de TI. La estructura realiza la detección de puntos de referencia faciales y faciales, el reconocimiento de códigos de barras, la grabación de imágenes, el seguimiento de características generales y la detección de texto. Vision también le permite utilizar modelos Core ML personalizados para tareas como la clasificación o el descubrimiento de objetos.
VN DetectTextRectanglesRequest
la VN DetectTextRectanglesRequest es una solicitud de análisis de imágenes que busca regiones de texto visible en una imagen; la función devuelve caracteres de texto como un cuadro delimitador rectangular con origen y tamaño.
Si está acostumbrado a usar Swift y ha estado programando por un tiempo, probablemente se esté preguntando para qué sirve Vision cuando hay otras funciones como Image y AVFoundation. Bueno, Vision es más precisa y sencilla. La función también está disponible en una variedad de plataformas. Sin embargo, el uso de Vision puede requerir más potencia de procesamiento y tiempo de procesamiento.
Para usar Vision para la detección de texto, necesitará Xcode 9 y un dispositivo con iOS 11.
Crea una cámara con Avcapture
En primer lugar, debe crear una cámara con AVCapture; es inicializando un objeto AVcapturesession para realizar una captura en tiempo real o fuera de línea. Después de eso, conéctese a la conexión del dispositivo.
Para ahorrar algo de tiempo al crear una interfaz de usuario para su aplicación, considere tener un proyecto inicial, para empezar, esto le dará tiempo para concentrarse en aprender el marco de Vision.
- Abra su proyecto de inicio. Las vistas del guión gráfico deberían estar listas y configuradas para usted.
- Sobre ViewController.swift, busque la sección de código con funciones y sockets.
- Bajo la salidaImageView, denciende una sesión para AVcapturesession – Se utiliza siempre que desee que se realicen acciones basadas en una transmisión en vivo.
- Póntelo AVcapturesession y el AVmediatype al video ya que disparará con la cámara para permitir que funcione continuamente
- Definir el dispositivo de entrada y salida
- La entrada es lo que verá la cámara y la salida es video en un formato de un tipo definido por KCVPixelFormatType_32GRA.
- Finalmente, agregue un bajo capa que contiene videos para imageView e iniciar la sesión. La función se conoce como inViewdidload. También necesitas definir el marco de la capa.
Llame a la función en el vueWillAppear método.
Como los límites aún no están finalizados, reemplace el viewDidLayoutSubviews () método para actualizar capas vinculadas.
Después del lanzamiento de iOS 10, se requiere una entrada adicional en Info.plist, esto proporciona una razón para usar la cámara. También debe definir la descripción del uso de la cámara privada.
Detección de texto; Cómo funciona Vision Framework
Hay tres pasos para implementar Vision en la aplicación.
- Manipuladores – aquí es cuando desea que el marco haga algo después de que se llame a la solicitud.
- Observaciones – esto es lo que desea hacer con los datos que proporcionó comenzando con una sola solicitud
- Peticiones – aquí es cuando solicita el marco de detección
Lo ideal es crear una solicitud de texto como VNdetecttextrectanglesrequest. Es un tipo de VNrequest que bordea el texto. Una vez que el marco ha completado la solicitud, llame al Debthandler Una función. También querrá saber la imagen exacta que fue reconocida, configúrela en Reportcharacterboxes= Verdadero.
A continuación, defina los casos que contienen todos los resultados de VNdetecttextrectanglesrequest, no olvide agregar Vision a la cámara de salida. Debido a que Vision expone API de alto nivel, su uso es seguro.
La función comprueba si el Cmsamplebuffer existe y PutOut Avcaptureoutput. Luego debe proceder a crear una variable Opciones de aplicación como 1 tipo de diccionario VNimageoption. la VNmage La opción es un tipo de estructura que contiene las propiedades y los datos de la cámara. A continuación, debe crear el VNimagerequesthandler y ejecutar la solicitud de texto.
Dibujar bordes alrededor del texto detectado
Puedes empezar por tener el marco para dibujar dos casillas, una para cada letra detectada y la otra para cada palabra. Las tablas son la combinación de todos los cuadros de caracteres que encontrará su solicitud.
- Defina los puntos de su vista para ayudarlo a colocar las cajas.
- Después de eso, crea un CALayer; usar Observación de VNrectangle para definir sus restricciones, lo que facilita el proceso de dibujo de la caja.
Ahora tienes todas tus funciones.
Para conectar sus puntos, comience ejecutando su código de forma asincrónica. Luego debe verificar si existe una región en sus resultados de su VNTextObservation.
Ahora puede llamar a su función, que dibujará un cuadro en el área. Verifique si hay cuadros de caracteres en la región y luego llame al servicio que trae un cuadro alrededor de cada letra.
Después de eso, crea una variable. RequestOptions. Ahora puede crear un VNImageRequestHandler objeto y ejecute la solicitud de texto que creó.
Finalmente, el último paso es ejecutar su código de visión con la transmisión en vivo. Deberá tomar la salida de video y convertirla a Cmsamplebuffer.
Consejos adicionales
- Intente siempre recortar la imagen y procesar solo la sección que necesita. Esto reducirá el tiempo de procesamiento y la huella de memoria.
- Active la corrección de idioma cuando se trate de caracteres no numéricos, luego desactívela cuando se trate de un carácter numérico
- Incluya la validación de cadenas digitales reconocidas para confirmar la precisión y eliminar la visualización de un valor falso al usuario.
- El controlador de la cámara de documentos es el mejor compañero para el reconocimiento de texto porque la calidad de la imagen juega un papel importante en el reconocimiento de texto.
- Considere establecer una altura mínima de texto para mejorar el rendimiento.
Con Vision, tiene todo lo que necesita para el reconocimiento de texto. Dado que Vision es fácil de usar y lleva poco tiempo implementarlo, usarlo es casi como jugar con Legos. Intente probar su aplicación en diferentes objetos, fuentes, iluminación y tamaños. También puede impresionarse combinando Vision con Core ML.