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 conocimientos técnicos de codificación; navegar por la función es bastante simple. Además, la implementación es perfecta.
Marco de visión
El marco de visión le permite implementar fácilmente cualquier tarea que involucre detalles informáticos. La estructura realiza detección de puntos de referencia de rostros y rostros, reconocimiento de códigos de barras, registro de imágenes, seguimiento de características generales y detección de texto. Vision también le permite usar modelos Core ML personalizados para tareas como clasificación o detección de objetos.
VN DetectTextRectanglesRequest
los 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, entonces probablemente se esté preguntando cuál es el uso de Vision cuando hay otras funciones como la imagen y AVFoundation. Bueno, Vision es más preciso y sencillo. 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 que ejecute iOS 11.
Creando una cámara con Avcapture
Primero, necesitas crear una cámara con AVCapture; esto es mediante la inicialización de un objeto AVcapturesession para realizar una captura en tiempo real o fuera de línea. Después de eso, realice la sesión a la conexión del dispositivo.
Para ahorrarle tiempo en la creación de una interfaz de usuario de su aplicación, considere tener un proyecto de inicio, para empezar, esto le dará tiempo para concentrarse en aprender el marco Vision.
- Abra su proyecto de inicio. Las vistas en el guión gráfico deberían estar listas y configuradas para usted.
- Sobre el ViewController.swift, busque la sección de código con funciones y salidas.
- Debajo de la salidaImageView, declare una sesión para AVcapturesession: Se utiliza siempre que desee que se realicen acciones basadas en una transmisión en vivo.
- Selecciona el AVcapturesession y el AVmediatype al video, ya que realizará la toma de la cámara para permitir que se ejecute de forma continua
- Definir el dispositivo de entrada y salida
- La entrada es lo que verá la cámara y la salida es el video en un formato de tipo establecido de KCVPixelFormatType_32GRA.
- Finalmente, agregue un subcapa que contiene videos para imageView e iniciar la sesión. La función se conoce como inViewdidload. También necesitas establecer el marco de la capa.
Llame a la función en el viewWillAppear método.
Como los límites aún no están finalizados, anule el viewDidLayoutSubviews () método para actualizar las capas enlazadas.
Después del lanzamiento de iOS 10, se necesita una entrada adicional en Info.plist, esto proporciona una razón para usar la cámara. También debe configurar la Descripción de uso de la cámara de privacidad.
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 proporcionados por usted, comenzando con una solicitud
- Peticiones - aquí es cuando solicita el marco de detección
Idealmente, crea una solicitud de texto como VNdetecttextrectanglesrequest. Esta es una especie de VNrequest que bordea el texto. Una vez que el marco completa la aplicación, se procede a llamar al Dettexthandler función. También querrá saber el marco exacto que se reconoció, configúrelo en Reportcharacterboxes= Verdadero.
Después de eso, defina las observaciones que contienen todos los resultados de VNdetecttextrectanglesrequest, recuerde agregar Vision a la cámara de salida. Dado que Vision expone API de alto nivel, trabajar con ellas es seguro.
La función comprueba si el Cmsamplebuffer existe y PutOut Avcaptureoutput. A continuación, debe proceder a crear una variable. Solicitudes como 1 tipo de diccionario VNimageoption. los VNmage La opción es un tipo de estructura que contiene propiedades y 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 cuadros, uno por cada letra que detecta y el otro por 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 VNrectangleobservation para definir sus restricciones, facilitando el proceso de delinear el cuadro.
Ahora tiene todas sus funciones establecidas.
Para conectar sus puntos, comience haciendo que su código se ejecute de forma asincrónica. Luego debe verificar si existe una región dentro de sus resultados de su VNTextObservation.
Ahora puede llamar a su función, que dibujará un cuadro dentro del área. Verifique si hay cuadros de caracteres dentro de 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 realice 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 necesite. Esto reducirá el tiempo de procesamiento y la huella de memoria.
- Active la corrección de idioma cuando se trata de caracteres no numéricos y luego desactívela cuando se trate de un carácter numérico
- Incluya la validación de las cadenas de números reconocidas para confirmar la precisión y eliminar la presentación de valores falsos al usuario.
- El controlador de la cámara de documentos es el mejor compañero para el reconocimiento de texto, ya que la calidad de la imagen juega un papel importante en el reconocimiento de texto.
- Considere establecer una altura mínima de texto para aumentar el rendimiento.
Con Vision, tiene todo lo que necesita para el reconocimiento de texto. Dado que Vision es fácil de usar y requiere poco tiempo para su implementación, usarlo es casi equivalente a 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.